From 9c29ff7a217fce968dab68bf0bbacad866a98506 Mon Sep 17 00:00:00 2001 From: meskio <meskio@sindominio.net> Date: Sun, 4 Oct 2020 19:20:04 +0200 Subject: [PATCH] Use to members for test --- api/api_test.go | 36 +++++++++++++++++++++++++++--------- api/auth_test.go | 10 +++++----- api/member_test.go | 39 +++++++++++++++++++++++++++++---------- api/product_test.go | 6 +++--- api/purchase_test.go | 2 +- api/topup_test.go | 6 +++--- 6 files changed, 68 insertions(+), 31 deletions(-) diff --git a/api/api_test.go b/api/api_test.go index 97378a6..f2c6403 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 a7a9d36..6f70a08 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 7ef260d..b58cfe1 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 dbf7411..024a39d 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 3e979cb..92a4a42 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 e58883f..1801df5 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) } -- GitLab