Skip to content
Snippets Groups Projects
auth_test.go 1.12 KiB
Newer Older
  • Learn to ignore specific revisions
  • package api
    
    import (
    	"net/http"
    	"testing"
    )
    
    func TestSignIn(t *testing.T) {
    	tapi := newTestAPI(t)
    	defer tapi.close()
    
    	var member struct {
    		Member
    		Password string `json:"password"`
    	}
    	member.Num = 10
    	member.Name = "foo"
    
    meskio's avatar
    meskio committed
    	member.Role = "admin"
    
    	member.Password = "password"
    	resp := tapi.do("POST", "/member", member, nil)
    	if resp.StatusCode != http.StatusCreated {
    		t.Fatal("Can't create member:", resp.Status)
    	}
    
    	tapi.token = ""
    	resp = tapi.do("GET", "/member", nil, nil)
    	if resp.StatusCode != http.StatusUnauthorized {
    		t.Error("Got members without auth")
    	}
    
    	var respMember struct {
    		Token  string `json:"token"`
    		Member Member `json:"member"`
    	}
    	jsonAuth := creds{
    		Name:     member.Name,
    		Password: member.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 != member.Name {
    		t.Fatal("Unexpected member:", respMember)
    	}
    	tapi.token = respMember.Token
    	resp = tapi.do("GET", "/member", nil, nil)
    	if resp.StatusCode != http.StatusOK {
    		t.Fatal("Can't get members:", resp.Status)
    	}
    }