Add emoji upload test

Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
Vartan Benohanian 2020-08-10 23:05:36 -04:00
parent 782994cd88
commit e3c51a2a76
3 changed files with 112 additions and 2 deletions

View File

@ -150,7 +150,7 @@ func (s *EmojiService) lease(ctx context.Context, subreddit, imagePath string) (
form := url.Values{}
form.Set("filepath", imagePath)
form.Set("mimetype", "image/jpeg")
if strings.HasSuffix(strings.ToLower(path), ".png") {
if strings.HasSuffix(strings.ToLower(imagePath), ".png") {
form.Set("mimetype", "image/png")
}

View File

@ -1,9 +1,13 @@
package reddit
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"os"
"testing"
"github.com/stretchr/testify/assert"
@ -43,7 +47,7 @@ func TestEmojiService_Get(t *testing.T) {
setup()
defer teardown()
blob, err := readFileContents("./testdata/emoji/emojis.json")
blob, err := readFileContents("testdata/emoji/emojis.json")
assert.NoError(t, err)
mux.HandleFunc("/api/v1/test/emojis/all", func(w http.ResponseWriter, r *http.Request) {
@ -109,6 +113,97 @@ func TestEmojiService_DisableCustomSize(t *testing.T) {
assert.NoError(t, err)
}
func TestEmojiService_Upload(t *testing.T) {
setup()
defer teardown()
u, err := url.Parse(server.URL)
assert.NoError(t, err)
uploadURL := u.Host + "/api/emoji_upload"
blob, err := readFileContents("testdata/emoji/lease.json")
assert.NoError(t, err)
blob = fmt.Sprintf(blob, uploadURL)
emojiFile, err := ioutil.TempFile("/tmp", "emoji*.png")
assert.NoError(t, err)
defer func() {
emojiFile.Close()
os.Remove(emojiFile.Name())
}()
_, err = emojiFile.WriteString("this is a test")
assert.NoError(t, err)
mux.HandleFunc("/api/v1/testsubreddit/emoji_asset_upload_s3.json", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("filepath", emojiFile.Name())
form.Set("mimetype", "image/png")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
fmt.Fprint(w, blob)
})
mux.HandleFunc("/api/emoji_upload", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
_, file, err := r.FormFile("file")
assert.NoError(t, err)
rdr, err := file.Open()
assert.NoError(t, err)
buf := new(bytes.Buffer)
_, err = io.Copy(buf, rdr)
assert.NoError(t, err)
assert.Equal(t, "this is a test", buf.String())
form := url.Values{}
form.Set("key", "t5_2uquw1/t2_164ab8/a94a8f45ccb199a61c4c0873d391e98c982fabd3")
form.Set("test name", "test value")
// for some reason this has to come after the FormFile call
err = r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
})
mux.HandleFunc("/api/v1/testsubreddit/emoji.json", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("name", "testemoji")
form.Set("user_flair_allowed", "false")
form.Set("post_flair_allowed", "true")
form.Set("mod_flair_only", "true")
form.Set("s3_key", "t5_2uquw1/t2_164ab8/a94a8f45ccb199a61c4c0873d391e98c982fabd3")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
})
_, err = client.Emoji.Upload(ctx, "testsubreddit", nil, emojiFile.Name())
assert.EqualError(t, err, "createRequest: cannot be nil")
_, err = client.Emoji.Upload(ctx, "testsubreddit", &EmojiCreateOrUpdateRequest{Name: ""}, emojiFile.Name())
assert.EqualError(t, err, "name: cannot be empty")
_, err = client.Emoji.Upload(ctx, "testsubreddit", &EmojiCreateOrUpdateRequest{
Name: "testemoji",
UserFlairAllowed: Bool(false),
PostFlairAllowed: Bool(true),
ModFlairOnly: Bool(true),
}, emojiFile.Name())
assert.NoError(t, err)
}
func TestEmojiService_Update(t *testing.T) {
setup()
defer teardown()

15
testdata/emoji/lease.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
"s3UploadLease": {
"action": "//%s",
"fields": [
{
"name": "key",
"value": "t5_2uquw1/t2_164ab8/a94a8f45ccb199a61c4c0873d391e98c982fabd3"
},
{
"name": "test name",
"value": "test value"
}
]
}
}