diff --git a/mastodon_test.go b/mastodon_test.go new file mode 100644 index 0000000..d0ad68d --- /dev/null +++ b/mastodon_test.go @@ -0,0 +1,77 @@ +package mastodon + +import ( + "fmt" + "net/http" + "net/http/httptest" + "testing" +) + +func TestAuthenticate(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.FormValue("username") != "valid" || r.FormValue("password") != "user" { + http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) + return + } + fmt.Fprintln(w, `{"AccessToken": "zoo"}`) + return + })) + defer ts.Close() + + client := NewClient(&Config{ + Server: ts.URL, + ClientID: "foo", + ClientSecret: "bar", + }) + err := client.Authenticate("invalid", "user") + if err == nil { + t.Fatalf("should be fail: %v", err) + } + + client = NewClient(&Config{ + Server: ts.URL, + ClientID: "foo", + ClientSecret: "bar", + }) + err = client.Authenticate("valid", "user") + if err != nil { + t.Fatalf("should not be fail: %v", err) + } +} + +func TestPostStatus(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("Authorization") != "Bearer zoo" { + http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) + return + } + fmt.Fprintln(w, `{"AccessToken": "zoo"}`) + return + })) + defer ts.Close() + + client := NewClient(&Config{ + Server: ts.URL, + ClientID: "foo", + ClientSecret: "bar", + }) + _, err := client.PostStatus(&Toot{ + Status: "foobar", + }) + if err == nil { + t.Fatalf("should be fail: %v", err) + } + + client = NewClient(&Config{ + Server: ts.URL, + ClientID: "foo", + ClientSecret: "bar", + AccessToken: "zoo", + }) + _, err = client.PostStatus(&Toot{ + Status: "foobar", + }) + if err != nil { + t.Fatalf("should not be fail: %v", err) + } +}