Skip to content
Snippets Groups Projects
member_test.go 2.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • package api
    
    import (
    	"net/http"
    	"testing"
    )
    
    
    meskio's avatar
    meskio committed
    var testMember = struct {
    	Member
    	Password string `json:"password"`
    }{
    	Member: Member{
    		Num:     10,
    		Name:    "foo",
    		Email:   "foo@example.com",
    		Role:    "admin",
    		Balance: 10000,
    	},
    	Password: "password",
    
    meskio's avatar
    meskio committed
    }
    
    
    meskio's avatar
    meskio committed
    func TestMemberAddList(t *testing.T) {
    
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    
    meskio's avatar
    meskio committed
    	tapi.addTestMember()
    
    	var members []Member
    
    meskio's avatar
    meskio committed
    	resp := tapi.do("GET", "/member", nil, &members)
    
    	if resp.StatusCode != http.StatusOK {
    		t.Fatal("Can't get members:", resp.Status)
    	}
    
    	if len(members) != 1 {
    		t.Fatal("Wrong number of members", len(members), members)
    	}
    	if members[0].Name != "foo" {
    		t.Error("Wrong name:", members[0].Name)
    	}
    	if members[0].Email != "foo@example.com" {
    		t.Error("Wrong email:", members[0].Email)
    	}
    }
    
    
    meskio's avatar
    meskio committed
    func TestMemberGetDelete(t *testing.T) {
    
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    	resp := tapi.do("GET", "/member/10", nil, nil)
    	if resp.StatusCode != http.StatusNotFound {
    		t.Error("Expected not found:", resp.Status, resp.Body)
    	}
    
    meskio's avatar
    meskio committed
    	tapi.addTestMember()
    
    
    	var gotMember Member
    	resp = tapi.do("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)
    	if resp.StatusCode != http.StatusOK {
    		t.Error("Can't find the member:", resp.Status)
    	}
    
    meskio's avatar
    meskio committed
    
    	resp = tapi.do("GET", "/member/10", nil, nil)
    	if resp.StatusCode != http.StatusNotFound {
    		t.Error("Expected not found after delete:", resp.Status, resp.Body)
    	}
    
    meskio's avatar
    meskio committed
    func TestMemberUpdate(t *testing.T) {
    
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    
    meskio's avatar
    meskio committed
    	tapi.addTestMember()
    	member := testMember
    
    	member.Balance = 1000
    
    meskio's avatar
    meskio committed
    	resp := tapi.do("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)
    	if resp.StatusCode != http.StatusOK {
    		t.Error("Can't find the member:", resp.Status)
    	}
    	if gotMember.Balance != 1000 {
    		t.Error("Wrong balance:", gotMember)
    	}
    }
    
    meskio's avatar
    meskio committed
    
    func (tapi *testAPI) addTestMember() {
    	resp := tapi.do("POST", "/member", testMember, nil)
    	if resp.StatusCode != http.StatusCreated {
    		tapi.t.Fatal("Can't create member:", resp.Status)
    	}
    }