Skip to content
Snippets Groups Projects
Commit 9c29ff7a authored by meskio's avatar meskio :tent:
Browse files

Use to members for test

parent 3aeb7a52
No related branches found
No related tags found
No related merge requests found
...@@ -30,12 +30,13 @@ func TestInit(t *testing.T) { ...@@ -30,12 +30,13 @@ func TestInit(t *testing.T) {
} }
type testAPI struct { type testAPI struct {
t *testing.T t *testing.T
baseURL string baseURL string
client *http.Client client *http.Client
server *httptest.Server server *httptest.Server
testPath string testPath string
token string token string
tokenAdmin string
} }
func newTestAPI(t *testing.T) *testAPI { func newTestAPI(t *testing.T) *testAPI {
...@@ -54,18 +55,35 @@ func newTestAPI(t *testing.T) *testAPI { ...@@ -54,18 +55,35 @@ func newTestAPI(t *testing.T) *testAPI {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"num": testMember.Num, "num": testMember.Num,
"role": "admin", "role": "",
"exp": time.Now().Add(time.Hour * 24).Unix(), "exp": time.Now().Add(time.Hour * 24).Unix(),
}) })
tokenString, err := token.SignedString([]byte(signKey)) tokenString, err := token.SignedString([]byte(signKey))
if err != nil { if err != nil {
t.Fatal("Can't generate token:", err) 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 { 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 var reader io.Reader
if body != nil { if body != nil {
var w io.WriteCloser var w io.WriteCloser
...@@ -79,7 +97,7 @@ func (ta *testAPI) do(method string, url string, body interface{}, respBody inte ...@@ -79,7 +97,7 @@ func (ta *testAPI) do(method string, url string, body interface{}, respBody inte
if err != nil { if err != nil {
ta.t.Fatal("Can't build request", method, url, err) 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) resp, err := ta.client.Do(req)
if err != nil { if err != nil {
ta.t.Fatal("HTTP query failed", method, url, err) ta.t.Fatal("HTTP query failed", method, url, err)
......
...@@ -21,14 +21,14 @@ func TestSignIn(t *testing.T) { ...@@ -21,14 +21,14 @@ func TestSignIn(t *testing.T) {
Member Member `json:"member"` Member Member `json:"member"`
} }
jsonAuth := creds{ jsonAuth := creds{
Name: testMember.Name, Name: testMemberAdmin.Name,
Password: testMember.Password, Password: testMemberAdmin.Password,
} }
resp = tapi.do("POST", "/signin", jsonAuth, &respMember) resp = tapi.do("POST", "/signin", jsonAuth, &respMember)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Fatal("Can't sign in:", resp.Status) 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) t.Fatal("Unexpected member:", respMember)
} }
tapi.token = respMember.Token tapi.token = respMember.Token
...@@ -52,8 +52,8 @@ func TestGetToken(t *testing.T) { ...@@ -52,8 +52,8 @@ func TestGetToken(t *testing.T) {
} }
tapi.token = body.Token tapi.token = body.Token
resp = tapi.do("GET", "/member", nil, nil) resp = tapi.do("GET", "/transaction/mine", nil, nil)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Fatal("Can't get members:", resp.Status) t.Fatal("Can't get transaction:", resp.Status)
} }
} }
...@@ -13,24 +13,38 @@ var testMember = struct { ...@@ -13,24 +13,38 @@ var testMember = struct {
Num: 10, Num: 10,
Name: "foo", Name: "foo",
Email: "foo@example.com", Email: "foo@example.com",
Role: "admin", Role: "",
Balance: 10000, Balance: 10000,
}, },
Password: "password", 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) { func TestMemberAddList(t *testing.T) {
tapi := newTestAPI(t) tapi := newTestAPI(t)
defer tapi.close() defer tapi.close()
tapi.addTestMember() tapi.addTestMember()
var members []Member var members []Member
resp := tapi.do("GET", "/member", nil, &members) resp := tapi.doAdmin("GET", "/member", nil, &members)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Fatal("Can't get members:", resp.Status) 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) t.Fatal("Wrong number of members", len(members), members)
} }
if members[0].Name != "foo" { if members[0].Name != "foo" {
...@@ -45,26 +59,26 @@ func TestMemberGetDelete(t *testing.T) { ...@@ -45,26 +59,26 @@ func TestMemberGetDelete(t *testing.T) {
tapi := newTestAPI(t) tapi := newTestAPI(t)
defer tapi.close() defer tapi.close()
resp := tapi.do("GET", "/member/10", nil, nil) resp := tapi.doAdmin("GET", "/member/10", nil, nil)
if resp.StatusCode != http.StatusNotFound { if resp.StatusCode != http.StatusNotFound {
t.Error("Expected not found:", resp.Status, resp.Body) t.Error("Expected not found:", resp.Status, resp.Body)
} }
tapi.addTestMember() tapi.addTestMember()
var gotMember Member var gotMember Member
resp = tapi.do("GET", "/member/10", nil, &gotMember) resp = tapi.doAdmin("GET", "/member/10", nil, &gotMember)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Error("Can't find the member:", resp.Status) t.Error("Can't find the member:", resp.Status)
} }
if gotMember.Num != 10 { if gotMember.Num != 10 {
t.Error("Wrong member:", gotMember.Num) 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 { if resp.StatusCode != http.StatusOK {
t.Error("Can't find the member:", resp.Status) 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 { if resp.StatusCode != http.StatusNotFound {
t.Error("Expected not found after delete:", resp.Status, resp.Body) t.Error("Expected not found after delete:", resp.Status, resp.Body)
} }
...@@ -77,13 +91,13 @@ func TestMemberUpdate(t *testing.T) { ...@@ -77,13 +91,13 @@ func TestMemberUpdate(t *testing.T) {
tapi.addTestMember() tapi.addTestMember()
member := testMember member := testMember
member.Balance = 1000 member.Balance = 1000
resp := tapi.do("PUT", "/member/10", member, nil) resp := tapi.doAdmin("PUT", "/member/10", member, nil)
if resp.StatusCode != http.StatusAccepted { if resp.StatusCode != http.StatusAccepted {
t.Fatal("Can't update member:", resp.Status) t.Fatal("Can't update member:", resp.Status)
} }
var gotMember Member var gotMember Member
resp = tapi.do("GET", "/member/10", nil, &gotMember) resp = tapi.doAdmin("GET", "/member/10", nil, &gotMember)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Error("Can't find the member:", resp.Status) t.Error("Can't find the member:", resp.Status)
} }
...@@ -93,7 +107,12 @@ func TestMemberUpdate(t *testing.T) { ...@@ -93,7 +107,12 @@ func TestMemberUpdate(t *testing.T) {
} }
func (tapi *testAPI) addTestMember() { 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 { if resp.StatusCode != http.StatusCreated {
tapi.t.Fatal("Can't create member:", resp.Status) tapi.t.Fatal("Can't create member:", resp.Status)
} }
......
...@@ -52,7 +52,7 @@ func TestProductGetDelete(t *testing.T) { ...@@ -52,7 +52,7 @@ func TestProductGetDelete(t *testing.T) {
if gotProduct.Code != testProduct.Code { if gotProduct.Code != testProduct.Code {
t.Error("Wrong product:", gotProduct.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 { if resp.StatusCode != http.StatusOK {
t.Error("Can't find the product:", resp.Status) t.Error("Can't find the product:", resp.Status)
} }
...@@ -70,7 +70,7 @@ func TestProductUpdate(t *testing.T) { ...@@ -70,7 +70,7 @@ func TestProductUpdate(t *testing.T) {
product := testProduct product := testProduct
product.Stock = testProduct.Stock - 5 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 { if resp.StatusCode != http.StatusAccepted {
t.Fatal("Can't update product:", resp.Status) t.Fatal("Can't update product:", resp.Status)
} }
...@@ -86,7 +86,7 @@ func TestProductUpdate(t *testing.T) { ...@@ -86,7 +86,7 @@ func TestProductUpdate(t *testing.T) {
} }
func (tapi *testAPI) addTestProducts() { func (tapi *testAPI) addTestProducts() {
resp := tapi.do("POST", "/product", testProduct, nil) resp := tapi.doAdmin("POST", "/product", testProduct, nil)
if resp.StatusCode != http.StatusCreated { if resp.StatusCode != http.StatusCreated {
tapi.t.Fatal("Can't create product:", resp.Status) tapi.t.Fatal("Can't create product:", resp.Status)
} }
......
...@@ -53,7 +53,7 @@ func TestPurchaseAddListMine(t *testing.T) { ...@@ -53,7 +53,7 @@ func TestPurchaseAddListMine(t *testing.T) {
} }
var member Member var member Member
resp = tapi.do("GET", "/member/10", nil, &member) resp = tapi.do("GET", "/member/me", nil, &member)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Error("Can't find the member:", resp.Status) t.Error("Can't find the member:", resp.Status)
} }
......
...@@ -16,7 +16,7 @@ func TestTopupAddListMine(t *testing.T) { ...@@ -16,7 +16,7 @@ func TestTopupAddListMine(t *testing.T) {
"comment": "my topup", "comment": "my topup",
"ammount": 20, "ammount": 20,
} }
resp := tapi.do("POST", "/topup", topup, nil) resp := tapi.doAdmin("POST", "/topup", topup, nil)
if resp.StatusCode != http.StatusCreated { if resp.StatusCode != http.StatusCreated {
t.Fatal("Can't create topup:", resp.Status) t.Fatal("Can't create topup:", resp.Status)
} }
...@@ -32,7 +32,7 @@ func TestTopupAddListMine(t *testing.T) { ...@@ -32,7 +32,7 @@ func TestTopupAddListMine(t *testing.T) {
if transactions[0].Total != 20 { if transactions[0].Total != 20 {
t.Error("Wrong total:", transactions[0].Total) 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) t.Error("Wrong topup member:", transactions[0].Topup.MemberNum)
} }
if transactions[0].Topup.Comment != "my topup" { if transactions[0].Topup.Comment != "my topup" {
...@@ -40,7 +40,7 @@ func TestTopupAddListMine(t *testing.T) { ...@@ -40,7 +40,7 @@ func TestTopupAddListMine(t *testing.T) {
} }
var member Member var member Member
resp = tapi.do("GET", "/member/10", nil, &member) resp = tapi.do("GET", "/member/me", nil, &member)
if resp.StatusCode != http.StatusOK { if resp.StatusCode != http.StatusOK {
t.Error("Can't find the member:", resp.Status) t.Error("Can't find the member:", resp.Status)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment