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  }