Beispiel #1
0
// testManagerDeleteUser check if delete user operation work.
func testManagerDeleteUser(t *testing.T, mngr authmodel.Manager, uid string) {
	err := mngr.DeleteUser(uid)
	if err != nil {
		t.Fatal("delete user failed:", err)
	}

	_, err = mngr.FindUser(uid)
	if err != authmodel.ErrNotFound {
		t.Fatal("delete user not work")
	}
}
Beispiel #2
0
// testManagerDeleteGroup recieve a group id and a user id who belong to that group.
// After group delettion, check if the group infomation of in user account removed or not.
func testManagerDeleteGroup(t *testing.T, mngr authmodel.Manager, gid, uid string) {
	err := mngr.DeleteGroup(gid)
	if err != nil {
		t.Fatal("delete group failed:", err)
	}

	u, err := mngr.FindUser(uid)
	if err != nil {
		t.Fatal("cannot find user:"******"delete group must remove group info in user")
	}
}
Beispiel #3
0
// testManagerAddGroupDetail simply check if the create group operation work.
func testManagerAddGroupDetail(t *testing.T, mngr authmodel.Manager) string {
	info := authmodel.GroupInfo{}
	desc := "testing privelege"
	info.Description = &desc
	g1, err := mngr.AddGroupDetail("staff", []string{"testing"}, &info)
	if err != nil {
		t.Fatal("cannot create new group:", err)
	}

	_, err = mngr.AddGroupDetail("staff", nil, nil)
	if err == nil {
		t.Fatal("must check for duplicated group name")
	}

	g1, err = mngr.FindGroup(*g1.Id)
	if err != nil {
		t.Fatal("cannot created group:", err)
	}

	if len(g1.Privileges) != 1 {
		t.Fatal("add group privilege failed")
	}

	if g1.Privileges[0] != "testing" {
		t.Fatal("add group privilege failed")
	}

	if g1.Info == nil || g1.Info.Description == nil || *g1.Info.Description != desc {
		t.Fatal("add group info failed")
	}

	return *g1.Id
}
Beispiel #4
0
// testManagerAddUserDetail check if add user operation work
func testManagerAddUserDetail(t *testing.T, mngr authmodel.Manager, gid string) string {
	code := map[string]string{"tested": "notyet"}
	u, err := mngr.AddUserDetail("*****@*****.**", "test123edc", true, []string{"testing"}, code, nil, []string{gid})
	if err != nil {
		t.Fatal("cannot update user detail:", err)
	}

	u, err = mngr.FindUser(*u.Id)
	if err != nil {
		t.Fatal("Cannot find user:"******"update user approved failed")
	}

	if len(u.Privileges) != 1 {
		t.Fatal("update user privileges failed")
	}

	if u.Privileges[0] != "testing" {
		t.Fatal("update user privileges failed")
	}

	if u.ConfirmCodes["tested"] != "notyet" {
		t.Fatal("update user confirm code failed")
	}

	if len(u.Groups) != 1 {
		t.Fatal("update user group failed")
	}

	if *u.Groups[0].Id != gid {
		t.Fatal("update user group failed")
	}

	return *u.Id
}
Beispiel #5
0
// testManagerUpdateUserDetail test update user operation and check the password hash function.
func testManagerUpdateUserDetail(t *testing.T, mngr authmodel.Manager, uid, gid string) {
	ps := "testing12345"
	app := false
	code := map[string]string{"tested": "notyet"}
	err := mngr.UpdateUserDetail(uid, &ps, &app, []string{"testing"}, code, nil, []string{gid})
	if err != nil {
		t.Fatal("cannot update user detail:", err)
	}

	u, err := mngr.FindUser(uid)
	if err != nil {
		t.Fatal("Cannot find user:"******"update user approved failed")
	}

	if len(u.Privileges) != 1 {
		t.Fatal("update user privileges failed")
	}

	if u.Privileges[0] != "testing" {
		t.Fatal("update user privileges failed")
	}

	if u.ConfirmCodes["tested"] != "notyet" {
		t.Fatal("update user confirm code failed")
	}

	if len(u.Groups) != 1 {
		t.Fatal("update user group failed")
	}

	if *u.Groups[0].Id != gid {
		t.Fatal("update user group failed")
	}

	err = mngr.ComparePassword(ps, u.Pwd)
	if err != nil {
		t.Fatal("password hash error:", err)
	}
}
Beispiel #6
0
// testManagerAddUser check if add user work
func testManagerAddUser(t *testing.T, mngr authmodel.Manager) string {
	ps := "zaq123456"
	u1, err := mngr.AddUser("*****@*****.**", ps, true)
	if err != nil {
		t.Fatal("cannot create new user:"******"must initial the LastActivity and JoinDay")
	}

	_, err = mngr.AddUser("*****@*****.**", ps, true)
	if err != authmodel.ErrDuplicateEmail {
		t.Fatal("must check for duplicate email:", err)
	}

	err = mngr.ComparePassword(ps, u1.Pwd)
	if err != nil {
		t.Fatal("password hash error:", err)
	}

	return *u1.Id
}
Beispiel #7
0
// testManagerLogin login the same user by uid 3 times to get 3 different tokens.
// Then use them to test the Logout method.
func testManagerLogin(t *testing.T, mngr authmodel.Manager, uid string) {
	token, err := mngr.Login(uid, time.Minute)
	if err != nil {
		t.Fatal("cannot login:"******"cannot get logged user:"******"loged user and user returned not the same")
	}

	token2, err := mngr.Login(uid, time.Minute)
	if err != nil {
		t.Fatal("cannot login:"******"cannot get logged user:"******"loged user and user returned not the same")
	}

	token3, err := mngr.Login(uid, time.Minute)
	if err != nil {
		t.Fatal("cannot login:"******"cannot get logged user:"******"loged user and user returned not the same")
	}

	if token == token2 || token2 == token3 || token == token3 {
		t.Fatal("token must not be the same")
	}

	err = mngr.Logout(token, false)
	if err != nil {
		t.Fatal("cannot logout user:"******"logout don't work")
	}

	err = mngr.Logout(token2, true)
	if err != nil {
		t.Fatal("cannot logout user:"******"logout didn't work")
	}

	u, err = mngr.GetUser(token3)
	if err == nil || u != nil {
		t.Fatal("logout all user's session didn't work")
	}
}
Beispiel #8
0
// testManagerFindAllUser add 10 users the do test about partial and projection select
func testManagerFindAllUser(t *testing.T, mngr authmodel.Manager, gid string) {
	users := make([]*authmodel.User, 10)
	var err error
	users[0], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[1], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[2], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[3], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[4], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[5], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[6], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[7], err = mngr.AddUser("*****@*****.**", "testing123edc", true)
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[8], err = mngr.AddUserDetail("*****@*****.**", "testing123edc", true, nil, nil, nil, []string{gid})
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	users[9], err = mngr.AddUserDetail("*****@*****.**", "testing123edc", true, nil, nil, nil, []string{gid})
	if err != nil {
		t.Fatal("cannot add user", err)
	}

	// get all user at the same time
	// should return the full list of 10 users
	userList, err := mngr.FindAllUser(-1, "", nil, nil)
	if n := len(userList); n != 10 {
		t.Fatal("get all user failed, expect 10 users, found", n)
	}

	// get all user belong to gid
	userList, err = mngr.FindAllUser(-1, "", nil, []string{gid})
	if n := len(userList); n != 2 {
		t.Fatal("get all user with groups id failed, expect 2 users, found", n)
	}

	// get a single user with specific feilds.
	userList, err = mngr.FindAllUser(1, "", []string{"Id", "Approved"}, nil)
	if n := len(userList); n != 1 {
		t.Fatal("get all user failed, expect 1 users, found", n)
	}

	if userList[0].Id == nil || userList[0].Approved == nil {
		t.Fatal("get all user failed retrieve specifiec fields")
	}

	if u := userList[0]; u.Email != nil || u.Pwd != nil || u.LastActivity != nil {
		t.Fatal("get all user failed not retrieved unspecific fields")
	}

	// get a part of user list
	userList1, err := mngr.FindAllUser(5, "", nil, nil)
	if n := len(userList1); n != 5 {
		t.Fatal("get all user failed, expect 5 but got", n)
	}

	// get the other part
	userList2, err := mngr.FindAllUser(5, *userList1[4].Id, nil, nil)
	if n := len(userList2); n != 5 {
		t.Fatal("get all user with offset id failed, expect 5 but got", n)
	}

	// and check if they are "paging" right
	for _, u1 := range userList1 {
		for _, u2 := range userList2 {
			if *u1.Id == *u2.Id {
				t.Fatal("get all user failed with limit and offset")
			}
		}
	}
}