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 := url.Values{}
|
||||||
form.Set("filepath", imagePath)
|
form.Set("filepath", imagePath)
|
||||||
form.Set("mimetype", "image/jpeg")
|
form.Set("mimetype", "image/jpeg")
|
||||||
if strings.HasSuffix(strings.ToLower(path), ".png") {
|
if strings.HasSuffix(strings.ToLower(imagePath), ".png") {
|
||||||
form.Set("mimetype", "image/png")
|
form.Set("mimetype", "image/png")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package reddit
|
package reddit
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -43,7 +47,7 @@ func TestEmojiService_Get(t *testing.T) {
|
||||||
setup()
|
setup()
|
||||||
defer teardown()
|
defer teardown()
|
||||||
|
|
||||||
blob, err := readFileContents("./testdata/emoji/emojis.json")
|
blob, err := readFileContents("testdata/emoji/emojis.json")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
mux.HandleFunc("/api/v1/test/emojis/all", func(w http.ResponseWriter, r *http.Request) {
|
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)
|
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) {
|
func TestEmojiService_Update(t *testing.T) {
|
||||||
setup()
|
setup()
|
||||||
defer teardown()
|
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