package twitter
import (
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/garyburd/go-oauth/oauth"
"hawx.me/code/assert"
)
func TestPublishLike(t *testing.T) {
assert := assert.New(t)
tweetID := "some-tweet-id"
fakeTwitter := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if assert.Equal("POST", r.Method, "method") &&
assert.Equal(r.URL.Path, "/1.1/favorites/create.json", "url") &&
assert.Equal(r.FormValue("id"), tweetID, "id") &&
assert.Equal(r.Header.Get("Content-Type"), "application/json", "content-type") &&
assert.NotEqual(r.Header.Get("Authorization"), "", "auth") {
fmt.Fprint(w, "something")
return
}
http.Error(w, "", http.StatusBadRequest)
}))
defer fakeTwitter.Close()
publisher := Publisher{
client: http.DefaultClient,
baseURL: fakeTwitter.URL,
oauth: &oauth.Client{
Credentials: oauth.Credentials{
Token: "test-consumer-token",
Secret: "test-consumer-secret",
},
},
credentials: &oauth.Credentials{
Token: "test-access-token",
Secret: "test-access-secret",
},
}
location, err := publisher.Publish(map[string][]interface{}{
"u-like-of": {"https://twitter.com/jack/status/" + tweetID},
})
assert.Nil(err)
assert.Equal("something", location)
}