github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/model/outgoing_webhook_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package model 5 6 import ( 7 "net/url" 8 "strings" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestOutgoingWebhookJson(t *testing.T) { 15 o := OutgoingWebhook{Id: NewId()} 16 json := o.ToJson() 17 ro := OutgoingWebhookFromJson(strings.NewReader(json)) 18 19 assert.Equal(t, o.Id, ro.Id, "Ids do not match") 20 } 21 22 func TestOutgoingWebhookIsValid(t *testing.T) { 23 o := OutgoingWebhook{} 24 assert.NotNil(t, o.IsValid(), "empty declaration should be invalid") 25 26 o.Id = NewId() 27 assert.NotNilf(t, o.IsValid(), "Id = NewId; %s should be invalid", o.Id) 28 29 o.CreateAt = GetMillis() 30 assert.NotNilf(t, o.IsValid(), "CreateAt = GetMillis; %d should be invalid", o.CreateAt) 31 32 o.UpdateAt = GetMillis() 33 assert.NotNilf(t, o.IsValid(), "UpdateAt = GetMillis; %d should be invalid", o.UpdateAt) 34 35 o.CreatorId = "123" 36 assert.NotNilf(t, o.IsValid(), "CreatorId %s should be invalid", o.CreatorId) 37 38 o.CreatorId = NewId() 39 assert.NotNilf(t, o.IsValid(), "CreatorId = NewId; %s should be invalid", o.CreatorId) 40 41 o.Token = "123" 42 assert.NotNilf(t, o.IsValid(), "Token %s should be invalid", o.Token) 43 44 o.Token = NewId() 45 assert.NotNilf(t, o.IsValid(), "Token = NewId; %s should be invalid", o.Token) 46 47 o.ChannelId = "123" 48 assert.NotNilf(t, o.IsValid(), "ChannelId %s should be invalid", o.ChannelId) 49 50 o.ChannelId = NewId() 51 assert.NotNilf(t, o.IsValid(), "ChannelId = NewId; %s should be invalid", o.ChannelId) 52 53 o.TeamId = "123" 54 assert.NotNilf(t, o.IsValid(), "TeamId %s should be invalid", o.TeamId) 55 56 o.TeamId = NewId() 57 assert.NotNilf(t, o.IsValid(), "TeamId = NewId; %s should be invalid", o.TeamId) 58 59 o.CallbackURLs = []string{"nowhere.com/"} 60 assert.NotNilf(t, o.IsValid(), "%v for CallbackURLs should be invalid", o.CallbackURLs) 61 62 o.CallbackURLs = []string{"http://nowhere.com/"} 63 assert.Nilf(t, o.IsValid(), "%v for CallbackURLs should be valid", o.CallbackURLs) 64 65 o.DisplayName = strings.Repeat("1", 65) 66 assert.NotNilf(t, o.IsValid(), "DisplayName length %d invalid, max length 64", len(o.DisplayName)) 67 68 o.DisplayName = strings.Repeat("1", 64) 69 assert.Nilf(t, o.IsValid(), "DisplayName length %d should be valid, max length 64", len(o.DisplayName)) 70 71 o.Description = strings.Repeat("1", 501) 72 assert.NotNilf(t, o.IsValid(), "Description length %d should be invalid, max length 500", len(o.Description)) 73 74 o.Description = strings.Repeat("1", 500) 75 assert.Nilf(t, o.IsValid(), "Description length %d should be valid, max length 500", len(o.Description)) 76 77 o.ContentType = strings.Repeat("1", 129) 78 assert.NotNilf(t, o.IsValid(), "ContentType length %d should be invalid, max length 128", len(o.ContentType)) 79 80 o.ContentType = strings.Repeat("1", 128) 81 assert.Nilf(t, o.IsValid(), "ContentType length %d should be valid", len(o.ContentType)) 82 83 o.Username = strings.Repeat("1", 65) 84 assert.NotNilf(t, o.IsValid(), "Username length %d should be invalid, max length 64", len(o.Username)) 85 86 o.Username = strings.Repeat("1", 64) 87 assert.Nilf(t, o.IsValid(), "Username length %d should be valid", len(o.Username)) 88 89 o.IconURL = strings.Repeat("1", 1025) 90 assert.NotNilf(t, o.IsValid(), "IconURL length %d should be invalid, max length 1024", len(o.IconURL)) 91 92 o.IconURL = strings.Repeat("1", 1024) 93 assert.Nilf(t, o.IsValid(), "IconURL length %d should be valid", len(o.IconURL)) 94 } 95 96 func TestOutgoingWebhookPayloadToFormValues(t *testing.T) { 97 p := &OutgoingWebhookPayload{ 98 Token: "Token", 99 TeamId: "TeamId", 100 TeamDomain: "TeamDomain", 101 ChannelId: "ChannelId", 102 ChannelName: "ChannelName", 103 Timestamp: 123000, 104 UserId: "UserId", 105 UserName: "UserName", 106 PostId: "PostId", 107 Text: "Text", 108 TriggerWord: "TriggerWord", 109 FileIds: "FileIds", 110 } 111 v := url.Values{} 112 v.Set("token", "Token") 113 v.Set("team_id", "TeamId") 114 v.Set("team_domain", "TeamDomain") 115 v.Set("channel_id", "ChannelId") 116 v.Set("channel_name", "ChannelName") 117 v.Set("timestamp", "123") 118 v.Set("user_id", "UserId") 119 v.Set("user_name", "UserName") 120 v.Set("post_id", "PostId") 121 v.Set("text", "Text") 122 v.Set("trigger_word", "TriggerWord") 123 v.Set("file_ids", "FileIds") 124 got := p.ToFormValues() 125 want := v.Encode() 126 assert.Equalf(t, got, want, "Got %+v, wanted %+v", got, want) 127 } 128 129 func TestOutgoingWebhookPreSave(t *testing.T) { 130 o := OutgoingWebhook{} 131 o.PreSave() 132 } 133 134 func TestOutgoingWebhookPreUpdate(t *testing.T) { 135 o := OutgoingWebhook{} 136 o.PreUpdate() 137 } 138 139 func TestOutgoingWebhookTriggerWordStartsWith(t *testing.T) { 140 o := OutgoingWebhook{Id: NewId()} 141 o.TriggerWords = append(o.TriggerWords, "foo") 142 assert.True(t, o.TriggerWordStartsWith("foobar"), "Should return true") 143 assert.False(t, o.TriggerWordStartsWith("barfoo"), "Should return false") 144 } 145 146 func TestOutgoingWebhookResponseJson(t *testing.T) { 147 o := OutgoingWebhookResponse{} 148 o.Text = NewString("some text") 149 150 json := o.ToJson() 151 ro, _ := OutgoingWebhookResponseFromJson(strings.NewReader(json)) 152 153 assert.Equal(t, *o.Text, *ro.Text, "Text does not match") 154 }