diff --git a/authentication_test.go b/authentication_test.go new file mode 100644 index 0000000..850cd1b --- /dev/null +++ b/authentication_test.go @@ -0,0 +1,68 @@ +package jira + +import ( + "bytes" + "fmt" + "io/ioutil" + "net/http" + "testing" +) + +func TestAcquireSessionCookie_Success(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/auth/1/session", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/auth/1/session") + b, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Error in read body: %s", err) + } + if bytes.Index(b, []byte(`"username":"foo"`)) < 0 { + t.Error("No username found") + } + if bytes.Index(b, []byte(`"password":"bar"`)) < 0 { + t.Error("No password found") + } + + // Emulate error + w.WriteHeader(http.StatusInternalServerError) + }) + + res, err := testClient.Authentication.AcquireSessionCookie("foo", "bar") + if err == nil { + t.Errorf("Expected error, but no error given") + } + if res == true { + t.Error("Expected error, but result was true") + } +} + +func TestAcquireSessionCookie_Fail(t *testing.T) { + setup() + defer teardown() + testMux.HandleFunc("/rest/auth/1/session", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "POST") + testRequestURL(t, r, "/rest/auth/1/session") + b, err := ioutil.ReadAll(r.Body) + if err != nil { + t.Errorf("Error in read body: %s", err) + } + if bytes.Index(b, []byte(`"username":"foo"`)) < 0 { + t.Error("No username found") + } + if bytes.Index(b, []byte(`"password":"bar"`)) < 0 { + t.Error("No password found") + } + + fmt.Fprint(w, `{"session":{"name":"JSESSIONID","value":"12345678901234567890"},"loginInfo":{"failedLoginCount":10,"loginCount":127,"lastFailedLoginTime":"2016-03-16T04:22:35.386+0000","previousLoginTime":"2016-03-16T04:22:35.386+0000"}}`) + }) + + res, err := testClient.Authentication.AcquireSessionCookie("foo", "bar") + if err != nil { + t.Errorf("No error expected. Got %s", err) + } + if res == false { + t.Error("Expected result was true. Got false") + } +} diff --git a/jira_test.go b/jira_test.go index 8aaa3b8..33dd63d 100644 --- a/jira_test.go +++ b/jira_test.go @@ -45,6 +45,18 @@ func teardown() { testServer.Close() } +func testMethod(t *testing.T, r *http.Request, want string) { + if got := r.Method; got != want { + t.Errorf("Request method: %v, want %v", got, want) + } +} + +func testRequestURL(t *testing.T, r *http.Request, want string) { + if got := r.URL.String(); got != want { + t.Errorf("Request URL: %v, want %v", got, want) + } +} + func TestNewClient_WrongUrl(t *testing.T) { c, err := NewClient(nil, "://issues.apache.org/jira/")