summaryrefslogtreecommitdiffstats
path: root/api/team_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/team_test.go')
-rw-r--r--api/team_test.go288
1 files changed, 288 insertions, 0 deletions
diff --git a/api/team_test.go b/api/team_test.go
new file mode 100644
index 000000000..74a184634
--- /dev/null
+++ b/api/team_test.go
@@ -0,0 +1,288 @@
+// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package api
+
+import (
+ "fmt"
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+ "strings"
+ "testing"
+)
+
+func TestSignupTeam(t *testing.T) {
+ Setup()
+
+ _, err := Client.SignupTeam("test@nowhere.com", "name")
+ if err != nil {
+ t.Fatal(err)
+ }
+}
+
+func TestCreateFromSignupTeam(t *testing.T) {
+ Setup()
+
+ props := make(map[string]string)
+ props["email"] = strings.ToLower(model.NewId()) + "corey@test.com"
+ props["name"] = "Test Company name"
+ props["time"] = fmt.Sprintf("%v", model.GetMillis())
+
+ data := model.MapToJson(props)
+ hash := model.HashPassword(fmt.Sprintf("%v:%v", data, utils.Cfg.ServiceSettings.InviteSalt))
+
+ team := model.Team{Name: "Name", Domain: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
+ user := model.User{Email: props["email"], FullName: "Corey Hulen", Password: "hello"}
+
+ ts := model.TeamSignup{Team: team, User: user, Invites: []string{"corey@test.com"}, Data: data, Hash: hash}
+
+ rts, err := Client.CreateTeamFromSignup(&ts)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if rts.Data.(*model.TeamSignup).Team.Name != team.Name {
+ t.Fatal("full name didn't match")
+ }
+
+ ruser := rts.Data.(*model.TeamSignup).User
+
+ if result, err := Client.LoginById(ruser.Id, user.Password); err != nil {
+ t.Fatal(err)
+ } else {
+ if result.Data.(*model.User).Email != user.Email {
+ t.Fatal("email's didn't match")
+ }
+ }
+
+ ts.Data = "garbage"
+ _, err = Client.CreateTeamFromSignup(&ts)
+ if err == nil {
+ t.Fatal(err)
+ }
+}
+
+func TestCreateTeam(t *testing.T) {
+ Setup()
+
+ team := model.Team{Name: "Name", Domain: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN}
+ rteam, err := Client.CreateTeam(&team)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if rteam.Data.(*model.Team).Name != team.Name {
+ t.Fatal("full name didn't match")
+ }
+
+ if _, err := Client.CreateTeam(rteam.Data.(*model.Team)); err == nil {
+ t.Fatal("Cannot create an existing")
+ }
+
+ rteam.Data.(*model.Team).Id = ""
+ if _, err := Client.CreateTeam(rteam.Data.(*model.Team)); err != nil {
+ if err.Message != "A team with that domain already exists" {
+ t.Fatal(err)
+ }
+ }
+
+ if _, err := Client.DoPost("/teams/create", "garbage"); err == nil {
+ t.Fatal("should have been an error")
+ }
+}
+
+func TestFindTeamByEmail(t *testing.T) {
+ Setup()
+
+ team := &model.Team{Name: "Name", Domain: "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: model.NewId() + "corey@test.com", FullName: "Corey Hulen", Password: "pwd"}
+ user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ Srv.Store.User().VerifyEmail(user.Id)
+
+ if r1, err := Client.FindTeams(user.Email); err != nil {
+ t.Fatal(err)
+ } else {
+ domains := r1.Data.([]string)
+ if domains[0] != team.Domain {
+ t.Fatal(domains)
+ }
+ }
+
+ if _, err := Client.FindTeams("missing"); err != nil {
+ t.Fatal(err)
+ }
+}
+
+/*
+
+XXXXXX investigate and fix failing test
+
+func TestFindTeamByDomain(t *testing.T) {
+ Setup()
+
+ team := &model.Team{Name: "Name", Domain: "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: model.NewId() + "corey@test.com", FullName: "Corey Hulen", Password: "pwd"}
+ user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ Srv.Store.User().VerifyEmail(user.Id)
+
+ if r1, err := Client.FindTeamByDomain(team.Domain, false); err != nil {
+ t.Fatal(err)
+ } else {
+ val := r1.Data.(bool)
+ if !val {
+ t.Fatal("should be a valid domain")
+ }
+ }
+
+ if r1, err := Client.FindTeamByDomain(team.Domain, true); err != nil {
+ t.Fatal(err)
+ } else {
+ val := r1.Data.(bool)
+ if !val {
+ t.Fatal("should be a valid domain")
+ }
+ }
+
+ if r1, err := Client.FindTeamByDomain("a"+model.NewId()+"a", false); err != nil {
+ t.Fatal(err)
+ } else {
+ val := r1.Data.(bool)
+ if val {
+ t.Fatal("shouldn't be a valid domain")
+ }
+ }
+}
+
+*/
+
+func TestFindTeamByEmailSend(t *testing.T) {
+ Setup()
+
+ team := &model.Team{Name: "Name", Domain: "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: model.NewId() + "corey@test.com", FullName: "Corey Hulen", Password: "pwd"}
+ user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ Srv.Store.User().VerifyEmail(user.Id)
+
+ if _, err := Client.FindTeamsSendEmail(user.Email); err != nil {
+ t.Fatal(err)
+ } else {
+ }
+
+ if _, err := Client.FindTeamsSendEmail("missing"); err != nil {
+
+ // It should actually succeed at sending the email since it doesn't exist
+ if !strings.Contains(err.DetailedError, "Failed to add to email address") {
+ t.Fatal(err)
+ }
+ }
+}
+
+func TestInviteMembers(t *testing.T) {
+ Setup()
+
+ team := &model.Team{Name: "Name", Domain: "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: model.NewId() + "corey@test.com", FullName: "Corey Hulen", Password: "pwd"}
+ user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ Srv.Store.User().VerifyEmail(user.Id)
+
+ Client.LoginByEmail(team.Domain, user.Email, "pwd")
+
+ invite := make(map[string]string)
+ invite["email"] = model.NewId() + "corey@test.com"
+ invite["first_name"] = "Test"
+ invite["last_name"] = "Guy"
+ invites := &model.Invites{Invites: []map[string]string{invite}}
+ invites.Invites = append(invites.Invites, invite)
+
+ if _, err := Client.InviteMembers(invites); err != nil {
+ t.Fatal(err)
+ }
+
+ invites = &model.Invites{Invites: []map[string]string{}}
+ if _, err := Client.InviteMembers(invites); err == nil {
+ t.Fatal("Should have errored out on no invites to send")
+ }
+}
+
+func TestUpdateTeamName(t *testing.T) {
+ Setup()
+
+ team := &model.Team{Name: "Name", Domain: "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", FullName: "Corey Hulen", Password: "pwd"}
+ user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User)
+ Srv.Store.User().VerifyEmail(user.Id)
+
+ user2 := &model.User{TeamId: team.Id, Email: model.NewId() + "corey@test.com", FullName: "Corey Hulen", Password: "pwd"}
+ user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User)
+ Srv.Store.User().VerifyEmail(user2.Id)
+
+ Client.LoginByEmail(team.Domain, user2.Email, "pwd")
+
+ data := make(map[string]string)
+ data["new_name"] = "NewName"
+ if _, err := Client.UpdateTeamName(data); err == nil {
+ t.Fatal("Should have errored, not admin")
+ }
+
+ Client.LoginByEmail(team.Domain, user.Email, "pwd")
+
+ data["new_name"] = ""
+ if _, err := Client.UpdateTeamName(data); err == nil {
+ t.Fatal("Should have errored, empty name")
+ }
+
+ data["new_name"] = "NewName"
+ if _, err := Client.UpdateTeamName(data); err != nil {
+ t.Fatal(err)
+ }
+ // No GET team web service, so hard to confirm here that team name updated
+
+ data["team_id"] = "junk"
+ if _, err := Client.UpdateTeamName(data); err == nil {
+ t.Fatal("Should have errored, junk team id")
+ }
+
+ data["team_id"] = "12345678901234567890123456"
+ if _, err := Client.UpdateTeamName(data); err == nil {
+ t.Fatal("Should have errored, bad team id")
+ }
+
+ data["team_id"] = team.Id
+ data["new_name"] = "NewNameAgain"
+ if _, err := Client.UpdateTeamName(data); err != nil {
+ t.Fatal(err)
+ }
+ // No GET team web service, so hard to confirm here that team name updated
+}
+
+func TestFuzzyTeamCreate(t *testing.T) {
+
+ for i := 0; i < len(utils.FUZZY_STRINGS_NAMES) || i < len(utils.FUZZY_STRINGS_EMAILS); i++ {
+ testName := "Name"
+ testEmail := "test@nowhere.com"
+
+ if i < len(utils.FUZZY_STRINGS_NAMES) {
+ testName = utils.FUZZY_STRINGS_NAMES[i]
+ }
+ if i < len(utils.FUZZY_STRINGS_EMAILS) {
+ testEmail = utils.FUZZY_STRINGS_EMAILS[i]
+ }
+
+ team := model.Team{Name: testName, Domain: "z-z-" + model.NewId() + "a", Email: testEmail, Type: model.TEAM_OPEN}
+
+ _, err := Client.CreateTeam(&team)
+ if err != nil {
+ t.Fatal(err)
+ }
+ }
+}