summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-03-03 12:04:15 -0500
committerChristopher Speller <crspeller@gmail.com>2017-03-03 12:04:15 -0500
commit2e911b77c3386833f8f0cea82c7b6b3e5583a08e (patch)
tree63c515b41e5abf024e94658554a02acaf40710df
parent09ee8e8a58df9526c619ac80cd76bca8cf4ca107 (diff)
downloadchat-2e911b77c3386833f8f0cea82c7b6b3e5583a08e.tar.gz
chat-2e911b77c3386833f8f0cea82c7b6b3e5583a08e.tar.bz2
chat-2e911b77c3386833f8f0cea82c7b6b3e5583a08e.zip
Usernames must start with a letter (#5581)
-rw-r--r--api/status_test.go4
-rw-r--r--api/team_test.go20
-rw-r--r--api/user_test.go82
-rw-r--r--api4/user_test.go6
-rw-r--r--app/import_test.go14
-rw-r--r--app/user_test.go4
-rw-r--r--model/user.go7
-rw-r--r--model/user_test.go6
-rw-r--r--store/sql_compliance_store_test.go4
-rw-r--r--store/sql_team_store_test.go4
-rw-r--r--store/sql_user_store_test.go20
11 files changed, 97 insertions, 74 deletions
diff --git a/api/status_test.go b/api/status_test.go
index 34c3320bd..30bf8d16a 100644
--- a/api/status_test.go
+++ b/api/status_test.go
@@ -32,12 +32,12 @@ func TestStatuses(t *testing.T) {
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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
- user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser2 := Client.Must(Client.CreateUser(&user2, "")).Data.(*model.User)
LinkUserToTeam(ruser2, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser2.Id))
diff --git a/api/team_test.go b/api/team_test.go
index c4a0fbefb..2166c004b 100644
--- a/api/team_test.go
+++ b/api/team_test.go
@@ -22,7 +22,7 @@ func TestCreateTeam(t *testing.T) {
t.Fatal(err)
}
- user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -144,7 +144,7 @@ func TestGetAllTeams(t *testing.T) {
Client.Logout()
- user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -178,7 +178,7 @@ func TestGetAllTeamListings(t *testing.T) {
Client.Logout()
- user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -225,7 +225,7 @@ func TestTeamPermDelete(t *testing.T) {
Client.Logout()
- user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user1 = Client.Must(Client.CreateUser(user1, "")).Data.(*model.User)
LinkUserToTeam(user1, team)
store.Must(app.Srv.Store.User().VerifyEmail(user1.Id))
@@ -270,7 +270,7 @@ func TestInviteMembers(t *testing.T) {
Client.Logout()
- user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -355,7 +355,7 @@ func TestUpdateTeamDisplayName(t *testing.T) {
Client.Logout()
- user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
@@ -416,7 +416,7 @@ func TestGetMyTeam(t *testing.T) {
Client.Logout()
- user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
@@ -662,7 +662,7 @@ func TestGetTeamStats(t *testing.T) {
}
}
- user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
@@ -682,7 +682,7 @@ func TestUpdateTeamDescription(t *testing.T) {
Client.Logout()
- user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
@@ -733,7 +733,7 @@ func TestGetTeamByName(t *testing.T) {
Client.Must(Client.Logout())
- user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
diff --git a/api/user_test.go b/api/user_test.go
index 01784fadf..2288f2a62 100644
--- a/api/user_test.go
+++ b/api/user_test.go
@@ -78,6 +78,12 @@ func TestCreateUser(t *testing.T) {
}
}
+ user.Username = "1" + user.Username
+ user.Email = strings.ToLower("success+"+model.NewId()) + "@simulator.amazonses.com"
+ if _, err := Client.CreateUser(&user, ""); err == nil {
+ t.Fatal("should have been an error - username must start with letter")
+ }
+
if _, err := Client.DoApiPost("/users/create", "garbage"); err == nil {
t.Fatal("should have been an error")
}
@@ -172,7 +178,7 @@ func TestLogin(t *testing.T) {
Client.AuthToken = ""
- user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
if _, err := Client.CreateUserFromSignup(&user2, "junk", "1231312"); err == nil {
t.Fatal("Should have errored, signed up without hashed email")
@@ -354,17 +360,17 @@ func TestGetUser(t *testing.T) {
Client.Logout()
- user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
- user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: "Corey", LastName: "Hulen"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: "Corey", LastName: "Hulen", Username: "n" + model.NewId()}
ruser2, _ := Client.CreateUser(&user2, "")
LinkUserToTeam(ruser2.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser2.Data.(*model.User).Id))
- user3 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user3 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser3, _ := Client.CreateUser(&user3, "")
LinkUserToTeam(ruser3.Data.(*model.User), rteam2.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser3.Data.(*model.User).Id))
@@ -619,7 +625,7 @@ func TestGetAudits(t *testing.T) {
Client.Logout()
- user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
@@ -674,7 +680,7 @@ 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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -721,7 +727,7 @@ func TestUserUploadProfileImage(t *testing.T) {
Client.Logout()
- user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -832,7 +838,7 @@ func TestUserUpdate(t *testing.T) {
Client.Logout()
- user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Roles: ""}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Roles: "", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -862,7 +868,7 @@ func TestUserUpdate(t *testing.T) {
}
}
- user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
@@ -887,7 +893,7 @@ func TestUserUpdatePassword(t *testing.T) {
Client.Logout()
Client.SetTeamId(team.Id)
- user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -951,7 +957,7 @@ func TestUserUpdatePassword(t *testing.T) {
t.Fatal("Should have errored")
}
- user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
@@ -971,12 +977,12 @@ func TestUserUpdateRoles(t *testing.T) {
Client.Logout()
- user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
- user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
@@ -995,7 +1001,7 @@ 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{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
LinkUserToTeam(user3, team2)
store.Must(app.Srv.Store.User().VerifyEmail(user3.Id))
@@ -1090,7 +1096,7 @@ func TestUserUpdateDeviceId(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{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -1121,7 +1127,7 @@ func TestUserUpdateDeviceId2(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{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -1158,12 +1164,12 @@ func TestUserUpdateActive(t *testing.T) {
Client.Logout()
- user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
- user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
@@ -1181,7 +1187,7 @@ func TestUserUpdateActive(t *testing.T) {
Client.Must(Client.Logout())
- user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user3 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user3 = Client.Must(Client.CreateUser(user3, "")).Data.(*model.User)
LinkUserToTeam(user2, team2)
store.Must(app.Srv.Store.User().VerifyEmail(user3.Id))
@@ -1224,7 +1230,7 @@ func TestUserPermDelete(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)
- user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user1 = Client.Must(Client.CreateUser(user1, "")).Data.(*model.User)
LinkUserToTeam(user1, team)
store.Must(app.Srv.Store.User().VerifyEmail(user1.Id))
@@ -1266,7 +1272,7 @@ func TestSendPasswordReset(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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -1291,7 +1297,7 @@ func TestSendPasswordReset(t *testing.T) {
}
authData := model.NewId()
- user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: &authData, AuthService: "random"}
+ user2 := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", AuthData: &authData, AuthService: "random", Username: "n" + model.NewId()}
user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
LinkUserToTeam(user2, team)
store.Must(app.Srv.Store.User().VerifyEmail(user2.Id))
@@ -1306,7 +1312,7 @@ func TestResetPassword(t *testing.T) {
Client := th.SystemAdminClient
team := th.SystemAdminTeam
- user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -1396,7 +1402,7 @@ func TestUserUpdateNotify(t *testing.T) {
Client.Logout()
- user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Roles: ""}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Roles: "", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, team)
store.Must(app.Srv.Store.User().VerifyEmail(user.Id))
@@ -1491,7 +1497,7 @@ func TestFuzzyUserCreate(t *testing.T) {
testEmail = utils.FUZZY_STRINGS_EMAILS[i]
}
- user := model.User{Email: strings.ToLower(model.NewId()) + testEmail, Nickname: testName, Password: "hello1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + testEmail, Nickname: testName, Password: "hello1", Username: "n" + model.NewId()}
ruser, err := Client.CreateUser(&user, "")
if err != nil {
@@ -1511,7 +1517,7 @@ func TestEmailToOAuth(t *testing.T) {
Client.Logout()
- user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
@@ -1564,12 +1570,12 @@ func TestOAuthToEmail(t *testing.T) {
Client.Logout()
- user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
- user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser2 := Client.Must(Client.CreateUser(&user2, "")).Data.(*model.User)
LinkUserToTeam(ruser2, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser2.Id))
@@ -1615,7 +1621,7 @@ func TestLDAPToEmail(t *testing.T) {
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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
@@ -1668,7 +1674,7 @@ func TestEmailToLDAP(t *testing.T) {
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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser := Client.Must(Client.CreateUser(&user, "")).Data.(*model.User)
LinkUserToTeam(ruser, rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Id))
@@ -1799,7 +1805,7 @@ func TestGenerateMfaSecret(t *testing.T) {
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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
@@ -1840,7 +1846,7 @@ func TestUpdateMfa(t *testing.T) {
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{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
@@ -1881,7 +1887,7 @@ func TestCheckMfa(t *testing.T) {
Client.Logout()
- user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
ruser, _ := Client.CreateUser(&user, "")
LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team))
store.Must(app.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id))
@@ -2048,7 +2054,7 @@ func TestGetProfilesInChannel(t *testing.T) {
}
}
- user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
Client.Must(Client.CreateUser(&user, ""))
Client.Login(user.Email, "passwd1")
@@ -2094,7 +2100,7 @@ func TestGetProfilesNotInChannel(t *testing.T) {
}
}
- user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
LinkUserToTeam(user, th.BasicTeam)
@@ -2132,7 +2138,7 @@ func TestGetProfilesNotInChannel(t *testing.T) {
}
}
- user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"}
+ user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", Username: "n" + model.NewId()}
Client.Must(Client.CreateUser(&user2, ""))
Client.Login(user2.Email, "passwd1")
@@ -2297,7 +2303,7 @@ func TestSearchUsers(t *testing.T) {
utils.Cfg.PrivacySettings.ShowFullName = false
privacyEmailPrefix := strings.ToLower(model.NewId())
- privacyUser := &model.User{Email: privacyEmailPrefix + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: model.NewId(), LastName: "Jimmers"}
+ privacyUser := &model.User{Email: privacyEmailPrefix + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: model.NewId(), LastName: "Jimmers", Username: "n" + model.NewId()}
privacyUser = Client.Must(Client.CreateUser(privacyUser, "")).Data.(*model.User)
LinkUserToTeam(privacyUser, th.BasicTeam)
@@ -2532,7 +2538,7 @@ func TestAutocompleteUsers(t *testing.T) {
}()
utils.Cfg.PrivacySettings.ShowFullName = false
- privacyUser := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: model.NewId(), LastName: "Jimmers"}
+ privacyUser := &model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", FirstName: model.NewId(), LastName: "Jimmers", Username: "n" + model.NewId()}
privacyUser = Client.Must(Client.CreateUser(privacyUser, "")).Data.(*model.User)
LinkUserToTeam(privacyUser, th.BasicTeam)
diff --git a/api4/user_test.go b/api4/user_test.go
index c83bc98a9..c03169c72 100644
--- a/api4/user_test.go
+++ b/api4/user_test.go
@@ -58,6 +58,12 @@ func TestCreateUser(t *testing.T) {
CheckErrorMessage(t, resp, "model.user.is_valid.email.app_error")
CheckBadRequestStatus(t, resp)
+ ruser.Email = GenerateTestEmail()
+ ruser.Username = "1" + user.Username
+ _, resp = Client.CreateUser(ruser)
+ CheckErrorMessage(t, resp, "model.user.is_valid.username.app_error")
+ CheckBadRequestStatus(t, resp)
+
if r, err := Client.DoApiPost("/users", "garbage"); err == nil {
t.Fatal("should have errored")
} else {
diff --git a/app/import_test.go b/app/import_test.go
index 165c94875..8867fbec1 100644
--- a/app/import_test.go
+++ b/app/import_test.go
@@ -837,7 +837,7 @@ func TestImportImportUser(t *testing.T) {
// Do an invalid user in dry-run mode.
data := UserImportData{
- Username: ptrStr(model.NewId()),
+ Username: ptrStr("n" + model.NewId()),
}
if err := ImportUser(&data, true); err == nil {
t.Fatalf("Should have failed to import invalid user.")
@@ -854,7 +854,7 @@ func TestImportImportUser(t *testing.T) {
// Do a valid user in dry-run mode.
data = UserImportData{
- Username: ptrStr(model.NewId()),
+ Username: ptrStr("n" + model.NewId()),
Email: ptrStr(model.NewId() + "@example.com"),
}
if err := ImportUser(&data, true); err != nil {
@@ -888,7 +888,7 @@ func TestImportImportUser(t *testing.T) {
}
// Do a valid user in apply mode.
- username := model.NewId()
+ username := "n" + model.NewId()
data = UserImportData{
Username: &username,
Email: ptrStr(model.NewId() + "@example.com"),
@@ -1023,7 +1023,7 @@ func TestImportImportUser(t *testing.T) {
t.Fatalf("Failed to get channel from database.")
}
- username = model.NewId()
+ username = "n" + model.NewId()
data = UserImportData{
Username: &username,
Email: ptrStr(model.NewId() + "@example.com"),
@@ -1312,7 +1312,7 @@ func TestImportImportUser(t *testing.T) {
}
// Add a user with some preferences.
- username = model.NewId()
+ username = "n" + model.NewId()
data = UserImportData{
Username: &username,
Email: ptrStr(model.NewId() + "@example.com"),
@@ -1476,7 +1476,7 @@ func TestImportImportPost(t *testing.T) {
}
// Create a user.
- username := model.NewId()
+ username := "n" + model.NewId()
ImportUser(&UserImportData{
Username: &username,
Email: ptrStr(model.NewId() + "@example.com"),
@@ -1724,7 +1724,7 @@ func TestImportBulkImport(t *testing.T) {
teamName := model.NewId()
channelName := model.NewId()
- username := model.NewId()
+ username := "n" + model.NewId()
// Run bulk import with a valid 1 of everything.
data1 := `{"type": "version", "version": 1}
diff --git a/app/user_test.go b/app/user_test.go
index 8979af7d7..ec0e2b73c 100644
--- a/app/user_test.go
+++ b/app/user_test.go
@@ -5,9 +5,9 @@ package app
import (
"bytes"
+ "encoding/json"
"image"
"image/color"
- "encoding/json"
"math/rand"
"strings"
"testing"
@@ -67,7 +67,7 @@ func TestCheckUserDomain(t *testing.T) {
func TestCreateOAuthUser(t *testing.T) {
th := Setup().InitBasic()
r := rand.New(rand.NewSource(time.Now().UnixNano()))
- glUser := oauthgitlab.GitLabUser{Id: int64(r.Intn(1000)), Username: model.NewId(), Email: model.NewId() + "@simulator.amazonses.com", Name: "Joram Wilander"}
+ glUser := oauthgitlab.GitLabUser{Id: int64(r.Intn(1000)), Username: "joram" + model.NewId(), Email: model.NewId() + "@simulator.amazonses.com", Name: "Joram Wilander"}
json := glUser.ToJson()
user, err := CreateOAuthUser(model.USER_AUTH_SERVICE_GITLAB, strings.NewReader(json), th.BasicTeam.Id)
diff --git a/model/user.go b/model/user.go
index 2412c2ec7..f380a7550 100644
--- a/model/user.go
+++ b/model/user.go
@@ -10,6 +10,7 @@ import (
"net/http"
"regexp"
"strings"
+ "unicode"
"unicode/utf8"
"golang.org/x/crypto/bcrypt"
@@ -142,7 +143,7 @@ func (u *User) PreSave() {
}
if u.Username == "" {
- u.Username = NewId()
+ u.Username = "n" + NewId()
}
if u.AuthData != nil && *u.AuthData == "" {
@@ -572,6 +573,10 @@ func IsValidUsername(s string) bool {
return false
}
+ if !unicode.IsLetter(rune(s[0])) {
+ return false
+ }
+
for _, restrictedUsername := range restrictedUsernames {
if s == restrictedUsername {
return false
diff --git a/model/user_test.go b/model/user_test.go
index 4f5c16614..542d15e5d 100644
--- a/model/user_test.go
+++ b/model/user_test.go
@@ -95,7 +95,7 @@ func TestUserIsValid(t *testing.T) {
t.Fatal()
}
- user.Username = NewId()
+ user.Username = "n" + NewId()
user.Email = strings.Repeat("01234567890", 20)
if err := user.IsValid(); err == nil {
t.Fatal()
@@ -189,6 +189,10 @@ var usernames = []struct {
expected bool
}{
{"spin-punch", true},
+ {"sp", false},
+ {"1spin-punch", false},
+ {"-spin-punch", false},
+ {".spin-punch", false},
{"Spin-punch", false},
{"spin punch-", false},
{"spin_punch", true},
diff --git a/store/sql_compliance_store_test.go b/store/sql_compliance_store_test.go
index b7b270a42..25b6f2dce 100644
--- a/store/sql_compliance_store_test.go
+++ b/store/sql_compliance_store_test.go
@@ -59,13 +59,13 @@ func TestComplianceExport(t *testing.T) {
u1 := &model.User{}
u1.Email = model.NewId()
- u1.Username = model.NewId()
+ u1.Username = "n" + model.NewId()
u1 = Must(store.User().Save(u1)).(*model.User)
Must(store.Team().SaveMember(&model.TeamMember{TeamId: t1.Id, UserId: u1.Id}))
u2 := &model.User{}
u2.Email = model.NewId()
- u2.Username = model.NewId()
+ u2.Username = "n" + model.NewId()
u2 = Must(store.User().Save(u2)).(*model.User)
Must(store.Team().SaveMember(&model.TeamMember{TeamId: t1.Id, UserId: u2.Id}))
diff --git a/store/sql_team_store_test.go b/store/sql_team_store_test.go
index 62efa4d1a..58ac74fc0 100644
--- a/store/sql_team_store_test.go
+++ b/store/sql_team_store_test.go
@@ -145,10 +145,12 @@ func TestTeamStoreSearchByName(t *testing.T) {
t.Fatal(err)
}
- if r1 := <-store.Team().SearchByName("zzz"); r1.Err != nil {
+ if r1 := <-store.Team().SearchByName(o1.Name); r1.Err != nil {
t.Fatal(r1.Err)
} else {
if r1.Data.([]*model.Team)[0].ToJson() != o1.ToJson() {
+ t.Log(r1.Data.([]*model.Team)[0].ToJson())
+ t.Log(o1.ToJson())
t.Fatal("invalid returned team")
}
}
diff --git a/store/sql_user_store_test.go b/store/sql_user_store_test.go
index e509653c1..104735455 100644
--- a/store/sql_user_store_test.go
+++ b/store/sql_user_store_test.go
@@ -18,7 +18,7 @@ func TestUserStoreSave(t *testing.T) {
u1 := model.User{}
u1.Email = model.NewId()
- u1.Username = model.NewId()
+ u1.Username = "n" + model.NewId()
if err := (<-store.User().Save(&u1)).Err; err != nil {
t.Fatal("couldn't save user", err)
@@ -49,7 +49,7 @@ func TestUserStoreSave(t *testing.T) {
for i := 0; i < 50; i++ {
u1.Id = ""
u1.Email = model.NewId()
- u1.Username = model.NewId()
+ u1.Username = "n" + model.NewId()
if err := (<-store.User().Save(&u1)).Err; err != nil {
t.Fatal("couldn't save item", err)
}
@@ -59,7 +59,7 @@ func TestUserStoreSave(t *testing.T) {
u1.Id = ""
u1.Email = model.NewId()
- u1.Username = model.NewId()
+ u1.Username = "n" + model.NewId()
if err := (<-store.User().Save(&u1)).Err; err != nil {
t.Fatal("couldn't save item", err)
}
@@ -821,7 +821,7 @@ func TestUserStoreGetByUsername(t *testing.T) {
u1 := &model.User{}
u1.Email = model.NewId()
- u1.Username = model.NewId()
+ u1.Username = "n" + model.NewId()
Must(store.User().Save(u1))
Must(store.Team().SaveMember(&model.TeamMember{TeamId: teamId, UserId: u1.Id}))
@@ -841,7 +841,7 @@ func TestUserStoreGetForLogin(t *testing.T) {
u1 := &model.User{
Email: model.NewId(),
- Username: model.NewId(),
+ Username: "n" + model.NewId(),
AuthService: model.USER_AUTH_SERVICE_GITLAB,
AuthData: &auth,
}
@@ -851,7 +851,7 @@ func TestUserStoreGetForLogin(t *testing.T) {
u2 := &model.User{
Email: model.NewId(),
- Username: model.NewId(),
+ Username: "n" + model.NewId(),
AuthService: model.USER_AUTH_SERVICE_LDAP,
AuthData: &auth2,
}
@@ -898,7 +898,7 @@ func TestUserStoreGetForLogin(t *testing.T) {
// test a special case where two users will have conflicting login information so we throw a special error
u3 := &model.User{
Email: model.NewId(),
- Username: model.NewId(),
+ Username: "n" + model.NewId(),
AuthService: model.USER_AUTH_SERVICE_LDAP,
AuthData: &auth3,
}
@@ -906,7 +906,7 @@ func TestUserStoreGetForLogin(t *testing.T) {
u4 := &model.User{
Email: model.NewId(),
- Username: model.NewId(),
+ Username: "n" + model.NewId(),
AuthService: model.USER_AUTH_SERVICE_LDAP,
AuthData: &u3.Username,
}
@@ -1547,12 +1547,12 @@ func TestUserStoreAnalyticsGetSystemAdminCount(t *testing.T) {
u1 := model.User{}
u1.Email = model.NewId()
- u1.Username = model.NewId()
+ u1.Username = "n" + model.NewId()
u1.Roles = "system_user system_admin"
u2 := model.User{}
u2.Email = model.NewId()
- u2.Username = model.NewId()
+ u2.Username = "n" + model.NewId()
if err := (<-store.User().Save(&u1)).Err; err != nil {
t.Fatal("couldn't save user", err)