Skip to content
Snippets Groups Projects
Select Git revision
  • 7f91c36a8c1b0acb44deb95c271d8d1f41ee6f18
  • master default protected
  • password
  • fixes2
  • loged
  • ammount
  • fixes
7 results

member_test.go

Blame
  • Forked from meskio / cicer
    26 commits behind the upstream repository.
    meskio's avatar
    meskio authored
    f5255a65
    History
    member_test.go 4.25 KiB
    package api
    
    import (
    	"net/http"
    	"testing"
    
    	"0xacab.org/meskio/cicer/api/db"
    )
    
    var (
    	testMemberLogin      = "foo"
    	testMemberOrderLogin = "foobar"
    	testMemberAdminLogin = "bar"
    )
    
    var testMember = db.MemberReq{
    	Member: db.Member{
    		Num:     10,
    		Login:   &testMemberLogin,
    		Name:    "Foo Baz",
    		Email:   "foo@example.com",
    		Role:    "",
    		Balance: 10000,
    	},
    	Password: "password",
    }
    
    var testMemberOrder = db.MemberReq{
    	Member: db.Member{
    		Num:     20,
    		Login:   &testMemberOrderLogin,
    		Name:    "FooBar Faz",
    		Email:   "foobar@example.com",
    		Role:    "order",
    		Balance: 12000,
    	},
    	Password: "password",
    }
    
    var testMemberAdmin = db.MemberReq{
    	Member: db.Member{
    		Num:     30,
    		Login:   &testMemberAdminLogin,
    		Name:    "Bar Baz",
    		Email:   "bar@example.com",
    		Role:    "admin",
    		Balance: 15000,
    	},
    	Password: "password",
    }
    
    func TestMemberAddList(t *testing.T) {
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    	tapi.addTestMember()
    	var members []db.Member
    	resp := tapi.doAdmin("GET", "/member", nil, &members)
    	if resp.StatusCode != http.StatusOK {
    		t.Fatal("Can't get members:", resp.Status)
    	}
    
    	if len(members) != 3 {
    		t.Fatal("Wrong number of members", len(members), members)
    	}
    	if members[0].Name != testMember.Name {
    		t.Error("Wrong name:", members[0].Name)
    	}
    	if members[0].Email != "foo@example.com" {
    		t.Error("Wrong email:", members[0].Email)
    	}
    }
    
    func TestMemberGetDelete(t *testing.T) {
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    	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 db.Member
    	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.doAdmin("DELETE", "/member/10", nil, nil)
    	if resp.StatusCode != http.StatusOK {
    		t.Error("Can't find the member:", resp.Status)
    	}
    
    	resp = tapi.doAdmin("GET", "/member/10", nil, nil)
    	if resp.StatusCode != http.StatusNotFound {
    		t.Error("Expected not found after delete:", resp.Status, resp.Body)
    	}
    }
    
    func TestMemberUpdate(t *testing.T) {
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    	tapi.addTestMember()
    	member := testMember
    	member.Role = "admin"
    	resp := tapi.doAdmin("PUT", "/member/10", member, nil)
    	if resp.StatusCode != http.StatusAccepted {
    		t.Fatal("Can't update member:", resp.Status)
    	}
    
    	var gotMember db.Member
    	resp = tapi.doAdmin("GET", "/member/10", nil, &gotMember)
    	if resp.StatusCode != http.StatusOK {
    		t.Error("Can't find the member:", resp.Status)
    	}
    	if gotMember.Role != "admin" {
    		t.Error("Wrong role:", gotMember)
    	}
    }
    
    func TestMemberUpdateMe(t *testing.T) {
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    	tapi.addTestMember()
    	member := testMember
    	member.Password = "foobar"
    	member.Email = "other@example.com"
    	member.OldPassword = "not my password"
    	resp := tapi.do("PUT", "/member/me", member, nil)
    	if resp.StatusCode != http.StatusBadRequest {
    		t.Error("Did accept an invalid password:", resp.Status)
    	}
    
    	member.OldPassword = testMember.Password
    	resp = tapi.do("PUT", "/member/me", member, nil)
    	if resp.StatusCode != http.StatusAccepted {
    		t.Fatal("Can't update member:", resp.Status)
    	}
    
    	var gotMember db.Member
    	resp = tapi.doAdmin("GET", "/member/10", nil, &gotMember)
    	if resp.StatusCode != http.StatusOK {
    		t.Error("Can't find the member:", resp.Status)
    	}
    	if gotMember.Email != member.Email {
    		t.Error("Wrong email:", gotMember)
    	}
    	jsonAuth := creds{
    		Login:    *testMember.Login,
    		Password: member.Password,
    	}
    	resp = tapi.do("POST", "/signin", jsonAuth, nil)
    	if resp.StatusCode != http.StatusOK {
    		t.Fatal("Can't sign in:", resp.Status)
    	}
    }
    
    func (tapi *testAPI) addTestMember() {
    	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", testMemberOrder, 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)
    	}
    }