summaryrefslogtreecommitdiffstats
path: root/api/user_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/user_test.go')
-rw-r--r--api/user_test.go571
1 files changed, 302 insertions, 269 deletions
diff --git a/api/user_test.go b/api/user_test.go
index 33f3fdad4..3c744120c 100644
--- a/api/user_test.go
+++ b/api/user_test.go
@@ -6,11 +6,6 @@ package api
import (
"bytes"
"fmt"
- "github.com/goamz/goamz/aws"
- "github.com/goamz/goamz/s3"
- "github.com/mattermost/platform/model"
- "github.com/mattermost/platform/store"
- "github.com/mattermost/platform/utils"
"image"
"image/color"
"io"
@@ -20,21 +15,31 @@ import (
"strings"
"testing"
"time"
+
+ "github.com/goamz/goamz/aws"
+ "github.com/goamz/goamz/s3"
+
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/store"
+ "github.com/mattermost/platform/utils"
)
func TestCreateUser(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "hello"}
+ user := model.User{Email: strings.ToLower("success+"+model.NewId()) + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "hello", Username: "n" + model.NewId()}
ruser, err := Client.CreateUser(&user, "")
if err != nil {
t.Fatal(err)
}
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
+
if ruser.Data.(*model.User).Nickname != user.Nickname {
t.Fatal("nickname didn't match")
}
@@ -48,13 +53,15 @@ func TestCreateUser(t *testing.T) {
}
ruser.Data.(*model.User).Id = ""
+ ruser.Data.(*model.User).Username = "n" + model.NewId()
if _, err := Client.CreateUser(ruser.Data.(*model.User), ""); err != nil {
if err.Message != "An account with that email already exists." {
t.Fatal(err)
}
}
- ruser.Data.(*model.User).Email = "test2@nowhere.com"
+ ruser.Data.(*model.User).Email = "success+" + model.NewId() + "@simulator.amazonses.com"
+ ruser.Data.(*model.User).Username = user.Username
if _, err := Client.CreateUser(ruser.Data.(*model.User), ""); err != nil {
if err.Message != "An account with that username already exists." {
t.Fatal(err)
@@ -73,34 +80,16 @@ func TestCreateUser(t *testing.T) {
}
}
-func TestCreateUserAllowedDomains(t *testing.T) {
- Setup()
-
- team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_INVITE, AllowedDomains: "spinpunch.com, @nowh.com,@hello.com"}
- rteam, _ := Client.CreateTeam(&team)
-
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "hello"}
-
- _, err := Client.CreateUser(&user, "")
- if err == nil {
- t.Fatal("should have failed")
- }
-
- user.Email = "test@nowh.com"
- _, err = Client.CreateUser(&user, "")
- if err != nil {
- t.Fatal(err)
- }
-}
-
func TestLogin(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Username: "corey", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Username: "corey" + model.NewId(), Password: "pwd"}
ruser, _ := Client.CreateUser(&user, "")
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
if result, err := Client.LoginById(ruser.Data.(*model.User).Id, user.Password); err != nil {
@@ -155,7 +144,7 @@ func TestLogin(t *testing.T) {
team2 := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_INVITE}
rteam2 := Client.Must(Client.CreateTeam(&team2))
- user2 := model.User{TeamId: rteam2.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
if _, err := Client.CreateUserFromSignup(&user2, "junk", "1231312"); err == nil {
t.Fatal("Should have errored, signed up without hashed email")
@@ -179,14 +168,11 @@ func TestLogin(t *testing.T) {
}
func TestLoginWithDeviceId(t *testing.T) {
- Setup()
-
- team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
- rteam, _ := Client.CreateTeam(&team)
-
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
- ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
- store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
+ th := Setup().InitBasic()
+ Client := th.BasicClient
+ team := th.BasicTeam
+ user := th.BasicUser
+ Client.Must(Client.Logout())
deviceId := model.NewId()
if result, err := Client.LoginByEmailWithDevice(team.Name, user.Email, user.Password, deviceId); err != nil {
@@ -210,20 +196,17 @@ func TestLoginWithDeviceId(t *testing.T) {
}
func TestSessions(t *testing.T) {
- Setup()
-
- team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
- rteam, _ := Client.CreateTeam(&team)
-
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
- ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
- store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
+ th := Setup().InitBasic()
+ Client := th.BasicClient
+ team := th.BasicTeam
+ user := th.BasicUser
+ Client.Must(Client.Logout())
deviceId := model.NewId()
Client.LoginByEmailWithDevice(team.Name, user.Email, user.Password, deviceId)
Client.LoginByEmail(team.Name, user.Email, user.Password)
- r1, err := Client.GetSessions(ruser.Id)
+ r1, err := Client.GetSessions(user.Id)
if err != nil {
t.Fatal(err)
}
@@ -249,7 +232,7 @@ func TestSessions(t *testing.T) {
t.Fatal(err)
}
- r2, err := Client.GetSessions(ruser.Id)
+ r2, err := Client.GetSessions(user.Id)
if err != nil {
t.Fatal(err)
}
@@ -262,24 +245,28 @@ func TestSessions(t *testing.T) {
}
func TestGetUser(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser, _ := Client.CreateUser(&user, "")
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
- user2 := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser2, _ := Client.CreateUser(&user2, "")
+ LinkUserToTeam(ruser2.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser2.Data.(*model.User).Id))
team2 := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam2, _ := Client.CreateTeam(&team2)
- user3 := model.User{TeamId: rteam2.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user3 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser3, _ := Client.CreateUser(&user3, "")
+ LinkUserToTeam(ruser3.Data.(*model.User), rteam2.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser3.Data.(*model.User).Id))
Client.LoginByEmail(team.Name, user.Email, user.Password)
@@ -353,14 +340,36 @@ func TestGetUser(t *testing.T) {
}
}
+func TestGetDirectProfiles(t *testing.T) {
+ th := Setup().InitBasic()
+
+ th.BasicClient.Must(th.BasicClient.CreateDirectChannel(th.BasicUser2.Id))
+
+ if result, err := th.BasicClient.GetDirectProfiles(""); err != nil {
+ t.Fatal(err)
+ } else {
+ users := result.Data.(map[string]*model.User)
+
+ if len(users) != 1 {
+ t.Fatal("map was wrong length")
+ }
+
+ if users[th.BasicUser2.Id] == nil {
+ t.Fatal("missing expected user")
+ }
+ }
+}
+
func TestGetAudits(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser, _ := Client.CreateUser(&user, "")
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
time.Sleep(100 * time.Millisecond)
@@ -390,7 +399,8 @@ func TestGetAudits(t *testing.T) {
}
func TestUserCreateImage(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
b, err := createProfileImage("Corey Hulen", "eo1zkdr96pdj98pjmq8zy35wba")
if err != nil {
@@ -412,8 +422,9 @@ func TestUserCreateImage(t *testing.T) {
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
Client.LoginByEmail(team.Name, user.Email, "pwd")
@@ -428,26 +439,27 @@ func TestUserCreateImage(t *testing.T) {
s := s3.New(auth, aws.Regions[utils.Cfg.FileSettings.AmazonS3Region])
bucket := s.Bucket(utils.Cfg.FileSettings.AmazonS3Bucket)
- if err := bucket.Del("teams/" + user.TeamId + "/users/" + user.Id + "/profile.png"); err != nil {
+ if err := bucket.Del("/users/" + user.Id + "/profile.png"); err != nil {
t.Fatal(err)
}
} else {
- path := utils.Cfg.FileSettings.Directory + "teams/" + user.TeamId + "/users/" + user.Id + "/profile.png"
+ path := utils.Cfg.FileSettings.Directory + "/users/" + user.Id + "/profile.png"
if err := os.Remove(path); err != nil {
t.Fatal("Couldn't remove file at " + path)
}
}
-
}
func TestUserUploadProfileImage(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
if utils.Cfg.FileSettings.DriverName != "" {
@@ -455,13 +467,14 @@ func TestUserUploadProfileImage(t *testing.T) {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
- if _, upErr := Client.UploadFile("/users/newimage", body.Bytes(), writer.FormDataContentType()); upErr == nil {
+ if _, upErr := Client.UploadProfileFile(body.Bytes(), writer.FormDataContentType()); upErr == nil {
t.Fatal("Should have errored")
}
Client.LoginByEmail(team.Name, user.Email, "pwd")
+ Client.SetTeamId(team.Id)
- if _, upErr := Client.UploadFile("/users/newimage", body.Bytes(), writer.FormDataContentType()); upErr == nil {
+ if _, upErr := Client.UploadProfileFile(body.Bytes(), writer.FormDataContentType()); upErr == nil {
t.Fatal("Should have errored")
}
@@ -486,7 +499,7 @@ func TestUserUploadProfileImage(t *testing.T) {
t.Fatal(err)
}
- if _, upErr := Client.UploadFile("/users/newimage", body.Bytes(), writer.FormDataContentType()); upErr == nil {
+ if _, upErr := Client.UploadProfileFile(body.Bytes(), writer.FormDataContentType()); upErr == nil {
t.Fatal("Should have errored")
}
@@ -512,7 +525,7 @@ func TestUserUploadProfileImage(t *testing.T) {
t.Fatal(err)
}
- if _, upErr := Client.UploadFile("/users/newimage", body.Bytes(), writer.FormDataContentType()); upErr != nil {
+ if _, upErr := Client.UploadProfileFile(body.Bytes(), writer.FormDataContentType()); upErr != nil {
t.Fatal(upErr)
}
@@ -526,11 +539,11 @@ func TestUserUploadProfileImage(t *testing.T) {
s := s3.New(auth, aws.Regions[utils.Cfg.FileSettings.AmazonS3Region])
bucket := s.Bucket(utils.Cfg.FileSettings.AmazonS3Bucket)
- if err := bucket.Del("teams/" + user.TeamId + "/users/" + user.Id + "/profile.png"); err != nil {
+ if err := bucket.Del("users/" + user.Id + "/profile.png"); err != nil {
t.Fatal(err)
}
} else {
- path := utils.Cfg.FileSettings.Directory + "teams/" + user.TeamId + "/users/" + user.Id + "/profile.png"
+ path := utils.Cfg.FileSettings.Directory + "users/" + user.Id + "/profile.png"
if err := os.Remove(path); err != nil {
t.Fatal("Couldn't remove file at " + path)
}
@@ -538,22 +551,24 @@ func TestUserUploadProfileImage(t *testing.T) {
} else {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
- if _, upErr := Client.UploadFile("/users/newimage", body.Bytes(), writer.FormDataContentType()); upErr.StatusCode != http.StatusNotImplemented {
+ if _, upErr := Client.UploadProfileFile(body.Bytes(), writer.FormDataContentType()); upErr.StatusCode != http.StatusNotImplemented {
t.Fatal("Should have failed with 501 - Not Implemented")
}
}
}
func TestUserUpdate(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
time1 := model.GetMillis()
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd", LastActivityAt: time1, LastPingAt: time1, Roles: ""}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd", LastActivityAt: time1, LastPingAt: time1, Roles: ""}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
if _, err := Client.UpdateUser(user); err == nil {
@@ -561,6 +576,7 @@ func TestUserUpdate(t *testing.T) {
}
Client.LoginByEmail(team.Name, user.Email, "pwd")
+ Client.SetTeamId(team.Id)
time.Sleep(100 * time.Millisecond)
@@ -569,7 +585,6 @@ func TestUserUpdate(t *testing.T) {
time.Sleep(100 * time.Millisecond)
user.Nickname = "Jim Jimmy"
- user.TeamId = "12345678901234567890123456"
user.LastActivityAt = time2
user.LastPingAt = time2
user.Roles = model.ROLE_TEAM_ADMIN
@@ -581,9 +596,6 @@ func TestUserUpdate(t *testing.T) {
if result.Data.(*model.User).Nickname != "Jim Jimmy" {
t.Fatal("Nickname did not update properly")
}
- if result.Data.(*model.User).TeamId != team.Id {
- t.Fatal("TeamId should not have updated")
- }
if result.Data.(*model.User).LastActivityAt == time2 {
t.Fatal("LastActivityAt should not have updated")
}
@@ -598,21 +610,13 @@ func TestUserUpdate(t *testing.T) {
}
}
- user.TeamId = "junk"
- if _, err := Client.UpdateUser(user); err == nil {
- t.Fatal("Should have errored - tried to change teamId to junk")
- }
-
- user.TeamId = team.Id
- if _, err := Client.UpdateUser(nil); err == nil {
- t.Fatal("Should have errored")
- }
-
- user2 := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
+ LinkUserToTeam(user2, team)
store.Must(Srv.Store.User().VerifyEmail(user2.Id))
Client.LoginByEmail(team.Name, user2.Email, "pwd")
+ Client.SetTeamId(team.Id)
user.Nickname = "Tim Timmy"
@@ -622,13 +626,16 @@ func TestUserUpdate(t *testing.T) {
}
func TestUserUpdatePassword(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
+ Client.SetTeamId(team.Id)
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
if _, err := Client.UpdateUserPassword(user.Id, "pwd", "newpwd"); err == nil {
@@ -670,8 +677,9 @@ func TestUserUpdatePassword(t *testing.T) {
t.Fatal(err)
}
- user2 := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
+ LinkUserToTeam(user2, team)
Client.LoginByEmail(team.Name, user2.Email, "pwd")
@@ -681,17 +689,20 @@ func TestUserUpdatePassword(t *testing.T) {
}
func TestUserUpdateRoles(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: "test@nowhere.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
- user2 := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
+ LinkUserToTeam(user2, team)
store.Must(Srv.Store.User().VerifyEmail(user2.Id))
data := make(map[string]string)
@@ -703,6 +714,7 @@ func TestUserUpdateRoles(t *testing.T) {
}
Client.LoginByEmail(team.Name, user2.Email, "pwd")
+ Client.SetTeamId(team.Id)
if _, err := Client.UpdateUserRoles(data); err == nil {
t.Fatal("Should have errored, not admin")
@@ -711,11 +723,13 @@ func TestUserUpdateRoles(t *testing.T) {
team2 := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team2 = Client.Must(Client.CreateTeam(team2)).Data.(*model.Team)
- user3 := &model.User{TeamId: team2.Id, Email: "test@nowhere.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
+ LinkUserToTeam(user3, team2)
store.Must(Srv.Store.User().VerifyEmail(user3.Id))
Client.LoginByEmail(team2.Name, user3.Email, "pwd")
+ Client.SetTeamId(team2.Id)
data["user_id"] = user2.Id
@@ -740,27 +754,25 @@ func TestUserUpdateRoles(t *testing.T) {
data["user_id"] = user2.Id
- if result, err := Client.UpdateUserRoles(data); err != nil {
- t.Log(data["new_roles"])
- t.Fatal(err)
- } else {
- if result.Data.(*model.User).Roles != "admin" {
- t.Fatal("Roles did not update properly")
- }
+ if _, err := Client.UpdateUserRoles(data); err == nil {
+ t.Fatal("Should have errored, bad role")
}
}
func TestUserUpdateDeviceId(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: "test@nowhere.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
Client.LoginByEmail(team.Name, user.Email, "pwd")
+ Client.SetTeamId(team.Id)
deviceId := model.PUSH_NOTIFY_APPLE + ":1234567890"
if _, err := Client.AttachDeviceId(deviceId); err != nil {
@@ -779,17 +791,20 @@ func TestUserUpdateDeviceId(t *testing.T) {
}
func TestUserUpdateActive(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: "test@nowhere.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
- user2 := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
+ LinkUserToTeam(user2, team)
store.Must(Srv.Store.User().VerifyEmail(user2.Id))
if _, err := Client.UpdateActive(user.Id, false); err == nil {
@@ -797,25 +812,31 @@ func TestUserUpdateActive(t *testing.T) {
}
Client.LoginByEmail(team.Name, user2.Email, "pwd")
+ Client.SetTeamId(team.Id)
if _, err := Client.UpdateActive(user.Id, false); err == nil {
t.Fatal("Should have errored, not admin")
}
+ Client.Must(Client.Logout())
+
team2 := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team2 = Client.Must(Client.CreateTeam(team2)).Data.(*model.Team)
- user3 := &model.User{TeamId: team2.Id, Email: "test@nowhere.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
+ LinkUserToTeam(user2, team2)
store.Must(Srv.Store.User().VerifyEmail(user3.Id))
Client.LoginByEmail(team2.Name, user3.Email, "pwd")
+ Client.SetTeamId(team2.Id)
if _, err := Client.UpdateActive(user.Id, false); err == nil {
- t.Fatal("Should have errored, wrong team")
+ t.Fatal("Should have errored, not yourself")
}
Client.LoginByEmail(team.Name, user.Email, "pwd")
+ Client.SetTeamId(team.Id)
if _, err := Client.UpdateActive("junk", false); err == nil {
t.Fatal("Should have errored, bad id")
@@ -824,35 +845,22 @@ func TestUserUpdateActive(t *testing.T) {
if _, err := Client.UpdateActive("12345678901234567890123456", false); err == nil {
t.Fatal("Should have errored, bad id")
}
-
- if result, err := Client.UpdateActive(user2.Id, false); err != nil {
- t.Fatal(err)
- } else {
- if result.Data.(*model.User).DeleteAt == 0 {
- t.Fatal("active did not update properly")
- }
- }
-
- if result, err := Client.UpdateActive(user2.Id, true); err != nil {
- t.Fatal(err)
- } else {
- if result.Data.(*model.User).DeleteAt != 0 {
- t.Fatal("active did not update properly true")
- }
- }
}
func TestUserPermDelete(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user1 := &model.User{TeamId: team.Id, Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user1 = Client.Must(Client.CreateUser(user1, "")).Data.(*model.User)
+ LinkUserToTeam(user1, team)
store.Must(Srv.Store.User().VerifyEmail(user1.Id))
Client.LoginByEmail(team.Name, user1.Email, "pwd")
+ Client.SetTeamId(team.Id)
channel1 := &model.Channel{DisplayName: "TestGetPosts", Name: "a" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id}
channel1 = Client.Must(Client.CreateChannel(channel1)).Data.(*model.Channel)
@@ -882,161 +890,117 @@ func TestUserPermDelete(t *testing.T) {
}
func TestSendPasswordReset(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
- data := make(map[string]string)
- data["email"] = user.Email
- data["name"] = team.Name
-
- if _, err := Client.SendPasswordReset(data); err != nil {
+ if _, err := Client.SendPasswordReset(user.Email); err != nil {
t.Fatal(err)
}
- data["email"] = ""
- if _, err := Client.SendPasswordReset(data); err == nil {
+ if _, err := Client.SendPasswordReset(""); err == nil {
t.Fatal("Should have errored - no email")
}
- data["email"] = "junk@junk.com"
- if _, err := Client.SendPasswordReset(data); err == nil {
+ if _, err := Client.SendPasswordReset("junk@junk.com"); err == nil {
t.Fatal("Should have errored - bad email")
}
- data["email"] = user.Email
- data["name"] = ""
- if _, err := Client.SendPasswordReset(data); err == nil {
- t.Fatal("Should have errored - no name")
- }
-
- data["name"] = "junk"
- if _, err := Client.SendPasswordReset(data); err == nil {
- t.Fatal("Should have errored - bad name")
- }
-
- user2 := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: "1", AuthService: "random"}
+ user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: "1", AuthService: "random"}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
+ LinkUserToTeam(user2, team)
store.Must(Srv.Store.User().VerifyEmail(user2.Id))
- data["email"] = user2.Email
- data["name"] = team.Name
- if _, err := Client.SendPasswordReset(data); err == nil {
+ if _, err := Client.SendPasswordReset(user2.Email); err == nil {
t.Fatal("should have errored - SSO user can't send reset password link")
}
}
func TestResetPassword(t *testing.T) {
- Setup()
+ th := Setup().InitSystemAdmin()
+ Client := th.SystemAdminClient
+ team := th.SystemAdminTeam
- team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
- team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
-
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
- data := make(map[string]string)
- data["new_password"] = "newpwd"
- props := make(map[string]string)
- props["user_id"] = user.Id
- props["time"] = fmt.Sprintf("%v", model.GetMillis())
- data["data"] = model.MapToJson(props)
- data["hash"] = model.HashPassword(fmt.Sprintf("%v:%v", data["data"], utils.Cfg.EmailSettings.PasswordResetSalt))
- data["name"] = team.Name
+ Client.Must(Client.SendPasswordReset(user.Email))
- if _, err := Client.ResetPassword(data); err != nil {
- t.Fatal(err)
+ var recovery *model.PasswordRecovery
+ if result := <-Srv.Store.PasswordRecovery().Get(user.Id); result.Err != nil {
+ t.Fatal(result.Err)
+ } else {
+ recovery = result.Data.(*model.PasswordRecovery)
}
- data["new_password"] = ""
- if _, err := Client.ResetPassword(data); err == nil {
+ if _, err := Client.ResetPassword(recovery.Code, ""); err == nil {
t.Fatal("Should have errored - no password")
}
- data["new_password"] = "npwd"
- if _, err := Client.ResetPassword(data); err == nil {
+ if _, err := Client.ResetPassword(recovery.Code, "newp"); err == nil {
t.Fatal("Should have errored - password too short")
}
- data["new_password"] = "newpwd"
- data["hash"] = ""
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - no hash")
+ if _, err := Client.ResetPassword("", "newpwd"); err == nil {
+ t.Fatal("Should have errored - no code")
}
- data["hash"] = "junk"
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - bad hash")
+ if _, err := Client.ResetPassword("junk", "newpwd"); err == nil {
+ t.Fatal("Should have errored - bad code")
}
- props["user_id"] = ""
- data["data"] = model.MapToJson(props)
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - no user id")
+ code := ""
+ for i := 0; i < model.PASSWORD_RECOVERY_CODE_SIZE; i++ {
+ code += "a"
}
-
- data["user_id"] = "12345678901234567890123456"
- data["data"] = model.MapToJson(props)
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - bad user id")
- }
-
- props["user_id"] = user.Id
- props["time"] = ""
- data["data"] = model.MapToJson(props)
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - no time")
+ if _, err := Client.ResetPassword(code, "newpwd"); err == nil {
+ t.Fatal("Should have errored - bad code")
}
- props["time"] = fmt.Sprintf("%v", model.GetMillis())
- data["data"] = model.MapToJson(props)
- data["domain"] = ""
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - no domain")
+ if _, err := Client.ResetPassword(recovery.Code, "newpwd"); err != nil {
+ t.Fatal(err)
}
- data["domain"] = "junk"
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - bad domain")
- }
+ Client.Logout()
+ Client.Must(Client.LoginById(user.Id, "newpwd"))
+ Client.SetTeamId(team.Id)
- team2 := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test2@nowhere.com", Type: model.TEAM_OPEN}
- team2 = Client.Must(Client.CreateTeam(team2)).Data.(*model.Team)
+ Client.Must(Client.SendPasswordReset(user.Email))
- data["domain"] = team2.Name
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("Should have errored - domain team doesn't match user team")
+ if result := <-Srv.Store.PasswordRecovery().Get(user.Id); result.Err != nil {
+ t.Fatal(result.Err)
+ } else {
+ recovery = result.Data.(*model.PasswordRecovery)
}
- user2 := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: "1", AuthService: "random"}
- user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
- store.Must(Srv.Store.User().VerifyEmail(user2.Id))
+ if result := <-Srv.Store.User().UpdateAuthData(user.Id, "random", "1", ""); result.Err != nil {
+ t.Fatal(result.Err)
+ }
- data["new_password"] = "newpwd"
- props["user_id"] = user2.Id
- props["time"] = fmt.Sprintf("%v", model.GetMillis())
- data["data"] = model.MapToJson(props)
- data["hash"] = model.HashPassword(fmt.Sprintf("%v:%v", data["data"], utils.Cfg.EmailSettings.PasswordResetSalt))
- data["name"] = team.Name
- if _, err := Client.ResetPassword(data); err == nil {
- t.Fatal("should have errored - SSO user can't reset password")
+ if _, err := Client.ResetPassword(recovery.Code, "newpwd"); err == nil {
+ t.Fatal("Should have errored - sso user")
}
}
func TestUserUpdateNotify(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team)
- user := &model.User{TeamId: team.Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd", Roles: ""}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd", Roles: ""}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ LinkUserToTeam(user, team)
store.Must(Srv.Store.User().VerifyEmail(user.Id))
data := make(map[string]string)
@@ -1050,6 +1014,7 @@ func TestUserUpdateNotify(t *testing.T) {
}
Client.LoginByEmail(team.Name, user.Email, "pwd")
+ Client.SetTeamId(team.Id)
if result, err := Client.UpdateUserNotify(data); err != nil {
t.Fatal(err)
@@ -1099,7 +1064,8 @@ func TestUserUpdateNotify(t *testing.T) {
}
func TestFuzzyUserCreate(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
@@ -1115,30 +1081,36 @@ func TestFuzzyUserCreate(t *testing.T) {
testEmail = utils.FUZZY_STRINGS_EMAILS[i]
}
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + testEmail, Nickname: testName, Password: "hello"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + testEmail, Nickname: testName, Password: "hello"}
- _, err := Client.CreateUser(&user, "")
+ ruser, err := Client.CreateUser(&user, "")
if err != nil {
t.Fatal(err)
}
+
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
}
}
func TestStatuses(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
+ LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
- user2 := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser2 := Client.Must(Client.CreateUser(&user2, "")).Data.(*model.User)
+ LinkUserToTeam(ruser2, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser2.Id))
Client.LoginByEmail(team.Name, user.Email, user.Password)
+ Client.SetTeamId(team.Id)
userIds := []string{ruser2.Id}
@@ -1150,6 +1122,7 @@ func TestStatuses(t *testing.T) {
statuses := r1.Data.(map[string]string)
if len(statuses) != 1 {
+ t.Log(statuses)
t.Fatal("invalid number of statuses")
}
@@ -1162,13 +1135,15 @@ func TestStatuses(t *testing.T) {
}
func TestEmailToOAuth(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
+ LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
m := map[string]string{}
@@ -1211,17 +1186,20 @@ func TestEmailToOAuth(t *testing.T) {
}
func TestOAuthToEmail(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
+ LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
- user2 := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser2 := Client.Must(Client.CreateUser(&user2, "")).Data.(*model.User)
+ LinkUserToTeam(ruser2, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser2.Id))
m := map[string]string{}
@@ -1246,12 +1224,6 @@ func TestOAuthToEmail(t *testing.T) {
t.Fatal("should have failed - missing email")
}
- m["email"] = ruser.Email
- m["team_name"] = "junk"
- if _, err := Client.OAuthToEmail(m); err == nil {
- t.Fatal("should have failed - bad team name")
- }
-
m["team_name"] = team.Name
m["email"] = "junk"
if _, err := Client.OAuthToEmail(m); err == nil {
@@ -1265,13 +1237,15 @@ func TestOAuthToEmail(t *testing.T) {
}
func TestLDAPToEmail(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
+ LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
Client.LoginByEmail(team.Name, user.Email, user.Password)
@@ -1316,13 +1290,15 @@ func TestLDAPToEmail(t *testing.T) {
}
func TestEmailToLDAP(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
+ LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
Client.LoginByEmail(team.Name, user.Email, user.Password)
@@ -1377,49 +1353,83 @@ func TestEmailToLDAP(t *testing.T) {
}
}
-func TestMeLoggedIn(t *testing.T) {
- Setup()
+func TestMeInitialLoad(t *testing.T) {
+ th := Setup().InitBasic()
- team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
- rteam, _ := Client.CreateTeam(&team)
+ if result, err := th.BasicClient.GetInitialLoad(); err != nil {
+ t.Fatal(err)
+ } else {
+ il := result.Data.(*model.InitialLoad)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
- ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
- store.Must(Srv.Store.User().VerifyEmail(ruser.Id))
+ if il.User == nil {
+ t.Fatal("should be valid")
+ }
- Client.AuthToken = "invalid"
+ if il.Preferences == nil {
+ t.Fatal("should be valid")
+ }
- if result, err := Client.GetMeLoggedIn(); err != nil {
- t.Fatal(err)
- } else {
- meLoggedIn := result.Data.(map[string]string)
+ if len(il.Teams) != 1 {
+ t.Fatal("should be valid")
+ }
- if val, ok := meLoggedIn["logged_in"]; !ok || val != "false" {
- t.Fatal("Got: " + val)
+ if len(il.TeamMembers) != 1 {
+ t.Fatal("should be valid")
+ }
+
+ if len(il.ClientCfg) == 0 {
+ t.Fatal("should be valid")
+ }
+
+ if len(il.LicenseCfg) == 0 {
+ t.Fatal("should be valid")
}
}
- Client.LoginByEmail(team.Name, user.Email, user.Password)
+ th.BasicClient.Logout()
- if result, err := Client.GetMeLoggedIn(); err != nil {
+ if result, err := th.BasicClient.GetInitialLoad(); err != nil {
t.Fatal(err)
} else {
- meLoggedIn := result.Data.(map[string]string)
+ il := result.Data.(*model.InitialLoad)
+
+ if il.User != nil {
+ t.Fatal("should be valid")
+ }
- if val, ok := meLoggedIn["logged_in"]; !ok || val != "true" {
- t.Fatal("Got: " + val)
+ if il.Preferences != nil {
+ t.Fatal("should be valid")
+ }
+
+ if len(il.Teams) != 0 {
+ t.Fatal("should be valid")
+ }
+
+ if len(il.TeamMembers) != 0 {
+ t.Fatal("should be valid")
+ }
+
+ if len(il.ClientCfg) == 0 {
+ t.Fatal("should be valid")
+ }
+
+ if len(il.LicenseCfg) == 0 {
+ t.Fatal("should be valid")
}
}
+
}
func TestGenerateMfaQrCode(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser, _ := Client.CreateUser(&user, "")
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
Client.Logout()
@@ -1438,13 +1448,26 @@ func TestGenerateMfaQrCode(t *testing.T) {
}
func TestUpdateMfa(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
+
+ if utils.License.Features.MFA == nil {
+ utils.License.Features.MFA = new(bool)
+ }
+
+ enableMfa := *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication
+ defer func() {
+ utils.IsLicensed = false
+ *utils.License.Features.MFA = false
+ *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = enableMfa
+ }()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser, _ := Client.CreateUser(&user, "")
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
Client.Logout()
@@ -1463,20 +1486,30 @@ func TestUpdateMfa(t *testing.T) {
t.Fatal("should have failed - not licensed")
}
- // need to add more test cases when license and config can be configured for tests
+ utils.IsLicensed = true
+ *utils.License.Features.MFA = true
+ *utils.Cfg.ServiceSettings.EnableMultifactorAuthentication = true
+
+ if _, err := Client.UpdateMfa(true, "123456"); err == nil {
+ t.Fatal("should have failed - bad token")
+ }
+
+ // need to add more test cases when enterprise bits can be loaded into tests
}
func TestCheckMfa(t *testing.T) {
- Setup()
+ th := Setup()
+ Client := th.CreateClient()
team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
rteam, _ := Client.CreateTeam(&team)
- user := model.User{TeamId: rteam.Data.(*model.Team).Id, Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "pwd"}
ruser, _ := Client.CreateUser(&user, "")
+ LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
- if result, err := Client.CheckMfa(model.USER_AUTH_SERVICE_EMAIL, team.Name, user.Email); err != nil {
+ if result, err := Client.CheckMfa(model.USER_AUTH_SERVICE_EMAIL, user.Email); err != nil {
t.Fatal(err)
} else {
resp := result.Data.(map[string]string)
@@ -1485,5 +1518,5 @@ func TestCheckMfa(t *testing.T) {
}
}
- // need to add more test cases when license and config can be configured for tests
+ // need to add more test cases when enterprise bits can be loaded into tests
}