github.com/gigforks/mattermost-server@v4.9.1-0.20180619094218-800d97fa55d0+incompatible/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  	"reflect"
     9  	"strings"
    10  	"testing"
    11  )
    12  
    13  func TestOutgoingWebhookJson(t *testing.T) {
    14  	o := OutgoingWebhook{Id: NewId()}
    15  	json := o.ToJson()
    16  	ro := OutgoingWebhookFromJson(strings.NewReader(json))
    17  
    18  	if o.Id != ro.Id {
    19  		t.Fatal("Ids do not match")
    20  	}
    21  }
    22  
    23  func TestOutgoingWebhookIsValid(t *testing.T) {
    24  	o := OutgoingWebhook{}
    25  
    26  	if err := o.IsValid(); err == nil {
    27  		t.Fatal("should be invalid")
    28  	}
    29  
    30  	o.Id = NewId()
    31  	if err := o.IsValid(); err == nil {
    32  		t.Fatal("should be invalid")
    33  	}
    34  
    35  	o.CreateAt = GetMillis()
    36  	if err := o.IsValid(); err == nil {
    37  		t.Fatal("should be invalid")
    38  	}
    39  
    40  	o.UpdateAt = GetMillis()
    41  	if err := o.IsValid(); err == nil {
    42  		t.Fatal("should be invalid")
    43  	}
    44  
    45  	o.CreatorId = "123"
    46  	if err := o.IsValid(); err == nil {
    47  		t.Fatal("should be invalid")
    48  	}
    49  
    50  	o.CreatorId = NewId()
    51  	if err := o.IsValid(); err == nil {
    52  		t.Fatal("should be invalid")
    53  	}
    54  
    55  	o.Token = "123"
    56  	if err := o.IsValid(); err == nil {
    57  		t.Fatal("should be invalid")
    58  	}
    59  
    60  	o.Token = NewId()
    61  	if err := o.IsValid(); err == nil {
    62  		t.Fatal("should be invalid")
    63  	}
    64  
    65  	o.ChannelId = "123"
    66  	if err := o.IsValid(); err == nil {
    67  		t.Fatal("should be invalid")
    68  	}
    69  
    70  	o.ChannelId = NewId()
    71  	if err := o.IsValid(); err == nil {
    72  		t.Fatal("should be invalid")
    73  	}
    74  
    75  	o.TeamId = "123"
    76  	if err := o.IsValid(); err == nil {
    77  		t.Fatal("should be invalid")
    78  	}
    79  
    80  	o.TeamId = NewId()
    81  	if err := o.IsValid(); err == nil {
    82  		t.Fatal("should be invalid")
    83  	}
    84  
    85  	o.CallbackURLs = []string{"nowhere.com/"}
    86  	if err := o.IsValid(); err == nil {
    87  		t.Fatal("should be invalid")
    88  	}
    89  
    90  	o.CallbackURLs = []string{"http://nowhere.com/"}
    91  	if err := o.IsValid(); err != nil {
    92  		t.Fatal(err)
    93  	}
    94  
    95  	o.DisplayName = strings.Repeat("1", 65)
    96  	if err := o.IsValid(); err == nil {
    97  		t.Fatal("should be invalid")
    98  	}
    99  
   100  	o.DisplayName = strings.Repeat("1", 64)
   101  	if err := o.IsValid(); err != nil {
   102  		t.Fatal(err)
   103  	}
   104  
   105  	o.Description = strings.Repeat("1", 129)
   106  	if err := o.IsValid(); err == nil {
   107  		t.Fatal("should be invalid")
   108  	}
   109  
   110  	o.Description = strings.Repeat("1", 128)
   111  	if err := o.IsValid(); err != nil {
   112  		t.Fatal("should be invalid")
   113  	}
   114  
   115  	o.ContentType = strings.Repeat("1", 129)
   116  	if err := o.IsValid(); err == nil {
   117  		t.Fatal(err)
   118  	}
   119  
   120  	o.ContentType = strings.Repeat("1", 128)
   121  	if err := o.IsValid(); err != nil {
   122  		t.Fatal(err)
   123  	}
   124  }
   125  
   126  func TestOutgoingWebhookPayloadToFormValues(t *testing.T) {
   127  	p := &OutgoingWebhookPayload{
   128  		Token:       "Token",
   129  		TeamId:      "TeamId",
   130  		TeamDomain:  "TeamDomain",
   131  		ChannelId:   "ChannelId",
   132  		ChannelName: "ChannelName",
   133  		Timestamp:   123000,
   134  		UserId:      "UserId",
   135  		UserName:    "UserName",
   136  		PostId:      "PostId",
   137  		Text:        "Text",
   138  		TriggerWord: "TriggerWord",
   139  		FileIds:     "FileIds",
   140  	}
   141  	v := url.Values{}
   142  	v.Set("token", "Token")
   143  	v.Set("team_id", "TeamId")
   144  	v.Set("team_domain", "TeamDomain")
   145  	v.Set("channel_id", "ChannelId")
   146  	v.Set("channel_name", "ChannelName")
   147  	v.Set("timestamp", "123")
   148  	v.Set("user_id", "UserId")
   149  	v.Set("user_name", "UserName")
   150  	v.Set("post_id", "PostId")
   151  	v.Set("text", "Text")
   152  	v.Set("trigger_word", "TriggerWord")
   153  	v.Set("file_ids", "FileIds")
   154  	if got, want := p.ToFormValues(), v.Encode(); !reflect.DeepEqual(got, want) {
   155  		t.Fatalf("Got %+v, wanted %+v", got, want)
   156  	}
   157  }
   158  
   159  func TestOutgoingWebhookPreSave(t *testing.T) {
   160  	o := OutgoingWebhook{}
   161  	o.PreSave()
   162  }
   163  
   164  func TestOutgoingWebhookPreUpdate(t *testing.T) {
   165  	o := OutgoingWebhook{}
   166  	o.PreUpdate()
   167  }
   168  
   169  func TestOutgoingWebhookTriggerWordStartsWith(t *testing.T) {
   170  	o := OutgoingWebhook{Id: NewId()}
   171  	o.TriggerWords = append(o.TriggerWords, "foo")
   172  	if !o.TriggerWordStartsWith("foobar") {
   173  		t.Fatal("Should return true")
   174  	}
   175  	if o.TriggerWordStartsWith("barfoo") {
   176  		t.Fatal("Should return false")
   177  	}
   178  }
   179  
   180  func TestOutgoingWebhookResponseJson(t *testing.T) {
   181  	o := OutgoingWebhookResponse{}
   182  	o.Text = NewString("some text")
   183  
   184  	json := o.ToJson()
   185  	ro := OutgoingWebhookResponseFromJson(strings.NewReader(json))
   186  
   187  	if *o.Text != *ro.Text {
   188  		t.Fatal("Text does not match")
   189  	}
   190  }