Add emoji upload test
Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
parent
782994cd88
commit
e3c51a2a76
3 changed files with 112 additions and 2 deletions
2
emoji.go
2
emoji.go
|
@ -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")
|
||||
}
|
||||
|
||||
|
|
|
@ -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
15
testdata/emoji/lease.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"s3UploadLease": {
|
||||
"action": "//%s",
|
||||
"fields": [
|
||||
{
|
||||
"name": "key",
|
||||
"value": "t5_2uquw1/t2_164ab8/a94a8f45ccb199a61c4c0873d391e98c982fabd3"
|
||||
},
|
||||
{
|
||||
"name": "test name",
|
||||
"value": "test value"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue