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) {
}
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)
......
......@@ -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)
}
}
......@@ -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)
}
......
......@@ -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)
}
......
......@@ -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)
}
......
......@@ -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)
}
......
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