diff --git a/api/api_test.go b/api/api_test.go index 97378a61e79f35eccdaff9ba6d6f30e05a85053a..f2c6403626440793815edee56f1e057149706777 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -30,12 +30,13 @@ func TestInit(t *testing.T) { } type testAPI struct { - t *testing.T - baseURL string - client *http.Client - server *httptest.Server - testPath string - token string + t *testing.T + baseURL string + client *http.Client + server *httptest.Server + testPath string + token string + tokenAdmin string } func newTestAPI(t *testing.T) *testAPI { @@ -54,18 +55,35 @@ func newTestAPI(t *testing.T) *testAPI { token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "num": testMember.Num, - "role": "admin", + "role": "", "exp": time.Now().Add(time.Hour * 24).Unix(), }) tokenString, err := token.SignedString([]byte(signKey)) if err != nil { t.Fatal("Can't generate token:", err) } + tokenAdmin := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ + "num": testMemberAdmin.Num, + "role": "admin", + "exp": time.Now().Add(time.Hour * 24).Unix(), + }) + tokenAdminString, err := tokenAdmin.SignedString([]byte(signKey)) + if err != nil { + t.Fatal("Can't generate token:", err) + } - return &testAPI{t, server.URL, &http.Client{}, server, testPath, tokenString} + return &testAPI{t, server.URL, &http.Client{}, server, testPath, tokenString, tokenAdminString} } func (ta *testAPI) do(method string, url string, body interface{}, respBody interface{}) *http.Response { + return ta.doToken(ta.token, method, url, body, respBody) +} + +func (ta *testAPI) doAdmin(method string, url string, body interface{}, respBody interface{}) *http.Response { + return ta.doToken(ta.tokenAdmin, method, url, body, respBody) +} + +func (ta *testAPI) doToken(token string, method string, url string, body interface{}, respBody interface{}) *http.Response { var reader io.Reader if body != nil { var w io.WriteCloser @@ -79,7 +97,7 @@ func (ta *testAPI) do(method string, url string, body interface{}, respBody inte if err != nil { ta.t.Fatal("Can't build request", method, url, err) } - req.Header.Add("x-authentication", ta.token) + req.Header.Add("x-authentication", token) resp, err := ta.client.Do(req) if err != nil { ta.t.Fatal("HTTP query failed", method, url, err) diff --git a/api/auth_test.go b/api/auth_test.go index a7a9d36efba8fdf437bafba5495073636cd91b11..6f70a08c102b3468ded7035405e492dd5750e462 100644 --- a/api/auth_test.go +++ b/api/auth_test.go @@ -21,14 +21,14 @@ func TestSignIn(t *testing.T) { Member Member `json:"member"` } jsonAuth := creds{ - Name: testMember.Name, - Password: testMember.Password, + Name: testMemberAdmin.Name, + Password: testMemberAdmin.Password, } resp = tapi.do("POST", "/signin", jsonAuth, &respMember) if resp.StatusCode != http.StatusOK { t.Fatal("Can't sign in:", resp.Status) } - if respMember.Member.Name != testMember.Name { + if respMember.Member.Name != testMemberAdmin.Name { t.Fatal("Unexpected member:", respMember) } tapi.token = respMember.Token @@ -52,8 +52,8 @@ func TestGetToken(t *testing.T) { } tapi.token = body.Token - resp = tapi.do("GET", "/member", nil, nil) + resp = tapi.do("GET", "/transaction/mine", nil, nil) if resp.StatusCode != http.StatusOK { - t.Fatal("Can't get members:", resp.Status) + t.Fatal("Can't get transaction:", resp.Status) } } diff --git a/api/member_test.go b/api/member_test.go index 7ef260d43ebaf35018c45e0968c901c954fbf1ce..b58cfe1632bb3892f02adee7f69177a16dfa4fad 100644 --- a/api/member_test.go +++ b/api/member_test.go @@ -13,24 +13,38 @@ var testMember = struct { Num: 10, Name: "foo", Email: "foo@example.com", - Role: "admin", + Role: "", Balance: 10000, }, Password: "password", } +var testMemberAdmin = struct { + Member + Password string `json:"password"` +}{ + Member: Member{ + Num: 20, + Name: "bar", + Email: "bar@example.com", + Role: "admin", + Balance: 5000, + }, + Password: "password", +} + func TestMemberAddList(t *testing.T) { tapi := newTestAPI(t) defer tapi.close() tapi.addTestMember() var members []Member - resp := tapi.do("GET", "/member", nil, &members) + resp := tapi.doAdmin("GET", "/member", nil, &members) if resp.StatusCode != http.StatusOK { t.Fatal("Can't get members:", resp.Status) } - if len(members) != 1 { + if len(members) != 2 { t.Fatal("Wrong number of members", len(members), members) } if members[0].Name != "foo" { @@ -45,26 +59,26 @@ func TestMemberGetDelete(t *testing.T) { tapi := newTestAPI(t) defer tapi.close() - resp := tapi.do("GET", "/member/10", nil, nil) + resp := tapi.doAdmin("GET", "/member/10", nil, nil) if resp.StatusCode != http.StatusNotFound { t.Error("Expected not found:", resp.Status, resp.Body) } tapi.addTestMember() var gotMember Member - resp = tapi.do("GET", "/member/10", nil, &gotMember) + resp = tapi.doAdmin("GET", "/member/10", nil, &gotMember) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } if gotMember.Num != 10 { t.Error("Wrong member:", gotMember.Num) } - resp = tapi.do("DELETE", "/member/10", nil, nil) + resp = tapi.doAdmin("DELETE", "/member/10", nil, nil) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } - resp = tapi.do("GET", "/member/10", nil, nil) + resp = tapi.doAdmin("GET", "/member/10", nil, nil) if resp.StatusCode != http.StatusNotFound { t.Error("Expected not found after delete:", resp.Status, resp.Body) } @@ -77,13 +91,13 @@ func TestMemberUpdate(t *testing.T) { tapi.addTestMember() member := testMember member.Balance = 1000 - resp := tapi.do("PUT", "/member/10", member, nil) + resp := tapi.doAdmin("PUT", "/member/10", member, nil) if resp.StatusCode != http.StatusAccepted { t.Fatal("Can't update member:", resp.Status) } var gotMember Member - resp = tapi.do("GET", "/member/10", nil, &gotMember) + resp = tapi.doAdmin("GET", "/member/10", nil, &gotMember) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } @@ -93,7 +107,12 @@ func TestMemberUpdate(t *testing.T) { } func (tapi *testAPI) addTestMember() { - resp := tapi.do("POST", "/member", testMember, nil) + resp := tapi.doAdmin("POST", "/member", testMember, nil) + if resp.StatusCode != http.StatusCreated { + tapi.t.Fatal("Can't create member:", resp.Status) + } + + resp = tapi.doAdmin("POST", "/member", testMemberAdmin, nil) if resp.StatusCode != http.StatusCreated { tapi.t.Fatal("Can't create member:", resp.Status) } diff --git a/api/product_test.go b/api/product_test.go index dbf74110c46a91e4ded84af5fb12e5ef3bcf303a..024a39d9917fbf36a557e073013c2b7e1cb120db 100644 --- a/api/product_test.go +++ b/api/product_test.go @@ -52,7 +52,7 @@ func TestProductGetDelete(t *testing.T) { if gotProduct.Code != testProduct.Code { t.Error("Wrong product:", gotProduct.Code) } - resp = tapi.do("DELETE", "/product/234", nil, nil) + resp = tapi.doAdmin("DELETE", "/product/234", nil, nil) if resp.StatusCode != http.StatusOK { t.Error("Can't find the product:", resp.Status) } @@ -70,7 +70,7 @@ func TestProductUpdate(t *testing.T) { product := testProduct product.Stock = testProduct.Stock - 5 - resp := tapi.do("PUT", "/product/234", product, nil) + resp := tapi.doAdmin("PUT", "/product/234", product, nil) if resp.StatusCode != http.StatusAccepted { t.Fatal("Can't update product:", resp.Status) } @@ -86,7 +86,7 @@ func TestProductUpdate(t *testing.T) { } func (tapi *testAPI) addTestProducts() { - resp := tapi.do("POST", "/product", testProduct, nil) + resp := tapi.doAdmin("POST", "/product", testProduct, nil) if resp.StatusCode != http.StatusCreated { tapi.t.Fatal("Can't create product:", resp.Status) } diff --git a/api/purchase_test.go b/api/purchase_test.go index 3e979cb8c5183c6ee92cd21f0d47f512a57e3dc9..92a4a4211a439e6015a429c5714a8a9ecb64fd42 100644 --- a/api/purchase_test.go +++ b/api/purchase_test.go @@ -53,7 +53,7 @@ func TestPurchaseAddListMine(t *testing.T) { } var member Member - resp = tapi.do("GET", "/member/10", nil, &member) + resp = tapi.do("GET", "/member/me", nil, &member) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) } diff --git a/api/topup_test.go b/api/topup_test.go index e58883fc6c8a7089fea5949e2cb2609824398b46..1801df5c564d7f563ac55a9e056a07de23048b94 100644 --- a/api/topup_test.go +++ b/api/topup_test.go @@ -16,7 +16,7 @@ func TestTopupAddListMine(t *testing.T) { "comment": "my topup", "ammount": 20, } - resp := tapi.do("POST", "/topup", topup, nil) + resp := tapi.doAdmin("POST", "/topup", topup, nil) if resp.StatusCode != http.StatusCreated { t.Fatal("Can't create topup:", resp.Status) } @@ -32,7 +32,7 @@ func TestTopupAddListMine(t *testing.T) { if transactions[0].Total != 20 { t.Error("Wrong total:", transactions[0].Total) } - if transactions[0].Topup.MemberNum != testMember.Num { + if transactions[0].Topup.MemberNum != testMemberAdmin.Num { t.Error("Wrong topup member:", transactions[0].Topup.MemberNum) } if transactions[0].Topup.Comment != "my topup" { @@ -40,7 +40,7 @@ func TestTopupAddListMine(t *testing.T) { } var member Member - resp = tapi.do("GET", "/member/10", nil, &member) + resp = tapi.do("GET", "/member/me", nil, &member) if resp.StatusCode != http.StatusOK { t.Error("Can't find the member:", resp.Status) }