github.com/haalcala/mattermost-server-change-repo/v5@v5.33.2/app/email_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package app 5 6 import ( 7 "net/http" 8 "strconv" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 14 "github.com/mattermost/mattermost-server/v5/model" 15 ) 16 17 func TestCondenseSiteURL(t *testing.T) { 18 require.Equal(t, "", condenseSiteURL("")) 19 require.Equal(t, "mattermost.com", condenseSiteURL("mattermost.com")) 20 require.Equal(t, "mattermost.com", condenseSiteURL("mattermost.com/")) 21 require.Equal(t, "chat.mattermost.com", condenseSiteURL("chat.mattermost.com")) 22 require.Equal(t, "chat.mattermost.com", condenseSiteURL("chat.mattermost.com/")) 23 require.Equal(t, "mattermost.com/subpath", condenseSiteURL("mattermost.com/subpath")) 24 require.Equal(t, "mattermost.com/subpath", condenseSiteURL("mattermost.com/subpath/")) 25 require.Equal(t, "chat.mattermost.com/subpath", condenseSiteURL("chat.mattermost.com/subpath")) 26 require.Equal(t, "chat.mattermost.com/subpath", condenseSiteURL("chat.mattermost.com/subpath/")) 27 28 require.Equal(t, "mattermost.com:8080", condenseSiteURL("http://mattermost.com:8080")) 29 require.Equal(t, "mattermost.com:8080", condenseSiteURL("http://mattermost.com:8080/")) 30 require.Equal(t, "chat.mattermost.com:8080", condenseSiteURL("http://chat.mattermost.com:8080")) 31 require.Equal(t, "chat.mattermost.com:8080", condenseSiteURL("http://chat.mattermost.com:8080/")) 32 require.Equal(t, "mattermost.com:8080/subpath", condenseSiteURL("http://mattermost.com:8080/subpath")) 33 require.Equal(t, "mattermost.com:8080/subpath", condenseSiteURL("http://mattermost.com:8080/subpath/")) 34 require.Equal(t, "chat.mattermost.com:8080/subpath", condenseSiteURL("http://chat.mattermost.com:8080/subpath")) 35 require.Equal(t, "chat.mattermost.com:8080/subpath", condenseSiteURL("http://chat.mattermost.com:8080/subpath/")) 36 } 37 38 func TestSendInviteEmailRateLimits(t *testing.T) { 39 th := Setup(t).InitBasic() 40 defer th.TearDown() 41 42 th.BasicTeam.AllowedDomains = "common.com" 43 _, err := th.App.UpdateTeam(th.BasicTeam) 44 require.Nilf(t, err, "%v, Should update the team", err) 45 46 th.App.UpdateConfig(func(cfg *model.Config) { 47 *cfg.ServiceSettings.EnableEmailInvitations = true 48 }) 49 50 emailList := make([]string, 22) 51 for i := 0; i < 22; i++ { 52 emailList[i] = "test-" + strconv.Itoa(i) + "@common.com" 53 } 54 err = th.App.InviteNewUsersToTeam(emailList, th.BasicTeam.Id, th.BasicUser.Id) 55 require.NotNil(t, err) 56 assert.Equal(t, "app.email.rate_limit_exceeded.app_error", err.Id) 57 assert.Equal(t, http.StatusRequestEntityTooLarge, err.StatusCode) 58 59 _, err = th.App.InviteNewUsersToTeamGracefully(emailList, th.BasicTeam.Id, th.BasicUser.Id) 60 require.NotNil(t, err) 61 assert.Equal(t, "app.email.rate_limit_exceeded.app_error", err.Id) 62 assert.Equal(t, http.StatusRequestEntityTooLarge, err.StatusCode) 63 } 64 65 func TestSendAdminUpgradeRequestEmail(t *testing.T) { 66 th := Setup(t).InitBasic() 67 defer th.TearDown() 68 69 th.App.Srv().SetLicense(model.NewTestLicense("cloud")) 70 71 mockSubscription := &model.Subscription{ 72 ID: "MySubscriptionID", 73 CustomerID: "MyCustomer", 74 ProductID: "SomeProductId", 75 AddOns: []string{}, 76 StartAt: 1000000000, 77 EndAt: 2000000000, 78 CreateAt: 1000000000, 79 Seats: 100, 80 DNS: "some.dns.server", 81 IsPaidTier: "false", 82 } 83 84 th.App.UpdateConfig(func(cfg *model.Config) { 85 *cfg.ExperimentalSettings.CloudUserLimit = 10 86 }) 87 88 err := th.App.SendAdminUpgradeRequestEmail(th.BasicUser.Username, mockSubscription) 89 require.Nil(t, err) 90 91 err = th.App.SendAdminUpgradeRequestEmail(th.BasicUser2.Username, mockSubscription) 92 require.Nil(t, err) 93 94 // second attempt by the same user to send emails is blocked by rate limiter 95 err = th.App.SendAdminUpgradeRequestEmail(th.BasicUser.Username, mockSubscription) 96 require.NotNil(t, err) 97 assert.Equal(t, err.Id, "app.email.rate_limit_exceeded.app_error") 98 }