github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/model/command_autocomplete_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 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestAutocompleteData(t *testing.T) { 14 ad := NewAutocompleteData("jira", "", "Avaliable commands:") 15 assert.Nil(t, ad.IsValid()) 16 ad.RoleID = "some_id" 17 assert.NotNil(t, ad.IsValid()) 18 ad.RoleID = SYSTEM_ADMIN_ROLE_ID 19 assert.Nil(t, ad.IsValid()) 20 ad.AddDynamicListArgument("help", "/some/url", true) 21 assert.Nil(t, ad.IsValid()) 22 ad.AddNamedTextArgument("name", "help", "[text]", "", true) 23 assert.Nil(t, ad.IsValid()) 24 25 ad = getAutocompleteData() 26 assert.Nil(t, ad.IsValid()) 27 command := NewAutocompleteData("", "", "") 28 ad.AddCommand(command) 29 assert.NotNil(t, ad.IsValid()) 30 31 ad = getAutocompleteData() 32 command = NewAutocompleteData("disconnect", "", "disconnect") 33 command.AddTextArgument("help", "[text]", "") 34 command.AddNamedTextArgument("some", "help", "[text]", "", true) 35 ad.AddCommand(command) 36 assert.Nil(t, ad.IsValid()) 37 38 ad = getAutocompleteData() 39 command = NewAutocompleteData("disconnect", "", "disconnect") 40 command.AddDynamicListArgument("help", "valid_url", true) 41 ad.AddCommand(command) 42 assert.Nil(t, ad.IsValid()) 43 44 ad = getAutocompleteData() 45 command = NewAutocompleteData("disconnect", "", "disconnect") 46 command.AddDynamicListArgument("help", "/valid/url", true) 47 items := []AutocompleteListItem{ 48 { 49 Hint: "help", 50 Item: "", 51 HelpText: "text", 52 }, 53 } 54 command.AddStaticListArgument("help", true, items) 55 ad.AddCommand(command) 56 assert.NotNil(t, ad.IsValid()) 57 58 ad = getAutocompleteData() 59 ad.AddCommand(nil) 60 assert.NotNil(t, ad.IsValid()) 61 62 ad = getAutocompleteData() 63 command = NewAutocompleteData("Disconnect", "", "") 64 ad.AddCommand(command) 65 assert.NotNil(t, ad.IsValid()) 66 } 67 68 func TestAutocompleteDataJSON(t *testing.T) { 69 ad := getAutocompleteData() 70 b, err := ad.ToJSON() 71 assert.Nil(t, err) 72 ad2, err := AutocompleteDataFromJSON(b) 73 assert.Nil(t, err) 74 assert.True(t, ad2.Equals(ad)) 75 } 76 77 func getAutocompleteData() *AutocompleteData { 78 ad := NewAutocompleteData("jira", "", "Avaliable commands:") 79 ad.RoleID = SYSTEM_USER_ROLE_ID 80 command := NewAutocompleteData("connect", "", "Connect to mattermost") 81 command.RoleID = SYSTEM_ADMIN_ROLE_ID 82 items := []AutocompleteListItem{ 83 { 84 Hint: "arg1", 85 Item: "help1", 86 HelpText: "text1", 87 }, { 88 Hint: "arg2", 89 Item: "help2", 90 HelpText: "text2", 91 }, 92 } 93 command.AddStaticListArgument("help", true, items) 94 command.AddNamedTextArgument("some", "help", "[text]", "", true) 95 command.AddNamedDynamicListArgument("other", "help", "/other/url", true) 96 ad.AddCommand(command) 97 return ad 98 } 99 100 func TestUpdateRelativeURLsForPluginCommands(t *testing.T) { 101 ad := getAutocompleteData() 102 baseURL, _ := url.Parse("http://localhost:8065/plugins/com.mattermost.demo-plugin") 103 err := ad.UpdateRelativeURLsForPluginCommands(baseURL) 104 assert.Nil(t, err) 105 arg, ok := ad.SubCommands[0].Arguments[2].Data.(*AutocompleteDynamicListArg) 106 assert.True(t, ok) 107 assert.Equal(t, "http://localhost:8065/plugins/com.mattermost.demo-plugin/other/url", arg.FetchURL) 108 }