github.com/wgh-/mattermost-server@v4.8.0-rc2+incompatible/api4/emoji_test.go (about)

     1  // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package api4
     5  
     6  import (
     7  	"bytes"
     8  	"image"
     9  	_ "image/gif"
    10  	"testing"
    11  
    12  	"github.com/mattermost/mattermost-server/model"
    13  	"github.com/mattermost/mattermost-server/utils"
    14  
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestCreateEmoji(t *testing.T) {
    19  	th := Setup().InitBasic().InitSystemAdmin()
    20  	defer th.TearDown()
    21  	Client := th.Client
    22  
    23  	EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji
    24  	defer func() {
    25  		th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji })
    26  	}()
    27  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = false })
    28  
    29  	emoji := &model.Emoji{
    30  		CreatorId: th.BasicUser.Id,
    31  		Name:      model.NewId(),
    32  	}
    33  
    34  	// try to create an emoji when they're disabled
    35  	_, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
    36  	CheckNotImplementedStatus(t, resp)
    37  
    38  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
    39  	// try to create a valid gif emoji when they're enabled
    40  	newEmoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
    41  	CheckNoError(t, resp)
    42  	if newEmoji.Name != emoji.Name {
    43  		t.Fatal("create with wrong name")
    44  	}
    45  
    46  	// try to create an emoji with a duplicate name
    47  	emoji2 := &model.Emoji{
    48  		CreatorId: th.BasicUser.Id,
    49  		Name:      newEmoji.Name,
    50  	}
    51  	_, resp = Client.CreateEmoji(emoji2, utils.CreateTestGif(t, 10, 10), "image.gif")
    52  	CheckBadRequestStatus(t, resp)
    53  	CheckErrorMessage(t, resp, "api.emoji.create.duplicate.app_error")
    54  
    55  	// try to create a valid animated gif emoji
    56  	emoji = &model.Emoji{
    57  		CreatorId: th.BasicUser.Id,
    58  		Name:      model.NewId(),
    59  	}
    60  
    61  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestAnimatedGif(t, 10, 10, 10), "image.gif")
    62  	CheckNoError(t, resp)
    63  	if newEmoji.Name != emoji.Name {
    64  		t.Fatal("create with wrong name")
    65  	}
    66  
    67  	// try to create a valid jpeg emoji
    68  	emoji = &model.Emoji{
    69  		CreatorId: th.BasicUser.Id,
    70  		Name:      model.NewId(),
    71  	}
    72  
    73  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestJpeg(t, 10, 10), "image.gif")
    74  	CheckNoError(t, resp)
    75  	if newEmoji.Name != emoji.Name {
    76  		t.Fatal("create with wrong name")
    77  	}
    78  
    79  	// try to create a valid png emoji
    80  	emoji = &model.Emoji{
    81  		CreatorId: th.BasicUser.Id,
    82  		Name:      model.NewId(),
    83  	}
    84  
    85  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestPng(t, 10, 10), "image.gif")
    86  	CheckNoError(t, resp)
    87  	if newEmoji.Name != emoji.Name {
    88  		t.Fatal("create with wrong name")
    89  	}
    90  
    91  	// try to create an emoji that's too wide
    92  	emoji = &model.Emoji{
    93  		CreatorId: th.BasicUser.Id,
    94  		Name:      model.NewId(),
    95  	}
    96  
    97  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 1000, 10), "image.gif")
    98  	CheckNoError(t, resp)
    99  	if newEmoji.Name != emoji.Name {
   100  		t.Fatal("create with wrong name")
   101  	}
   102  
   103  	// try to create an emoji that's too tall
   104  	emoji = &model.Emoji{
   105  		CreatorId: th.BasicUser.Id,
   106  		Name:      model.NewId(),
   107  	}
   108  
   109  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 1000), "image.gif")
   110  	CheckNoError(t, resp)
   111  	if newEmoji.Name != emoji.Name {
   112  		t.Fatal("create with wrong name")
   113  	}
   114  
   115  	// try to create an emoji that's too large
   116  	emoji = &model.Emoji{
   117  		CreatorId: th.BasicUser.Id,
   118  		Name:      model.NewId(),
   119  	}
   120  
   121  	_, resp = Client.CreateEmoji(emoji, utils.CreateTestAnimatedGif(t, 100, 100, 10000), "image.gif")
   122  	if resp.Error == nil {
   123  		t.Fatal("should fail - emoji is too big")
   124  	}
   125  
   126  	// try to create an emoji with data that isn't an image
   127  	emoji = &model.Emoji{
   128  		CreatorId: th.BasicUser.Id,
   129  		Name:      model.NewId(),
   130  	}
   131  
   132  	_, resp = Client.CreateEmoji(emoji, make([]byte, 100), "image.gif")
   133  	CheckBadRequestStatus(t, resp)
   134  	CheckErrorMessage(t, resp, "api.emoji.upload.image.app_error")
   135  
   136  	// try to create an emoji as another user
   137  	emoji = &model.Emoji{
   138  		CreatorId: th.BasicUser2.Id,
   139  		Name:      model.NewId(),
   140  	}
   141  
   142  	_, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   143  	CheckForbiddenStatus(t, resp)
   144  }
   145  
   146  func TestGetEmojiList(t *testing.T) {
   147  	th := Setup().InitBasic()
   148  	defer th.TearDown()
   149  	Client := th.Client
   150  
   151  	EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji
   152  	defer func() {
   153  		th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji })
   154  	}()
   155  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   156  
   157  	emojis := []*model.Emoji{
   158  		{
   159  			CreatorId: th.BasicUser.Id,
   160  			Name:      model.NewId(),
   161  		},
   162  		{
   163  			CreatorId: th.BasicUser.Id,
   164  			Name:      model.NewId(),
   165  		},
   166  		{
   167  			CreatorId: th.BasicUser.Id,
   168  			Name:      model.NewId(),
   169  		},
   170  	}
   171  
   172  	for idx, emoji := range emojis {
   173  		emoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   174  		CheckNoError(t, resp)
   175  		emojis[idx] = emoji
   176  	}
   177  
   178  	listEmoji, resp := Client.GetEmojiList(0, 100)
   179  	CheckNoError(t, resp)
   180  	for _, emoji := range emojis {
   181  		found := false
   182  		for _, savedEmoji := range listEmoji {
   183  			if emoji.Id == savedEmoji.Id {
   184  				found = true
   185  				break
   186  			}
   187  		}
   188  		if !found {
   189  			t.Fatalf("failed to get emoji with id %v", emoji.Id)
   190  		}
   191  	}
   192  
   193  	_, resp = Client.DeleteEmoji(emojis[0].Id)
   194  	CheckNoError(t, resp)
   195  	listEmoji, resp = Client.GetEmojiList(0, 100)
   196  	CheckNoError(t, resp)
   197  	found := false
   198  	for _, savedEmoji := range listEmoji {
   199  		if savedEmoji.Id == emojis[0].Id {
   200  			found = true
   201  			break
   202  		}
   203  		if found {
   204  			t.Fatalf("should not get a deleted emoji %v", emojis[0].Id)
   205  		}
   206  	}
   207  
   208  	listEmoji, resp = Client.GetEmojiList(0, 1)
   209  	CheckNoError(t, resp)
   210  
   211  	if len(listEmoji) != 1 {
   212  		t.Fatal("should only return 1")
   213  	}
   214  
   215  	listEmoji, resp = Client.GetSortedEmojiList(0, 100, model.EMOJI_SORT_BY_NAME)
   216  	CheckNoError(t, resp)
   217  
   218  	if len(listEmoji) == 0 {
   219  		t.Fatal("should return more than 0")
   220  	}
   221  }
   222  
   223  func TestDeleteEmoji(t *testing.T) {
   224  	th := Setup().InitBasic().InitSystemAdmin()
   225  	defer th.TearDown()
   226  	Client := th.Client
   227  
   228  	EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji
   229  	defer func() {
   230  		th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji })
   231  	}()
   232  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   233  
   234  	emoji := &model.Emoji{
   235  		CreatorId: th.BasicUser.Id,
   236  		Name:      model.NewId(),
   237  	}
   238  
   239  	newEmoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   240  	CheckNoError(t, resp)
   241  
   242  	ok, resp := Client.DeleteEmoji(newEmoji.Id)
   243  	CheckNoError(t, resp)
   244  	if !ok {
   245  		t.Fatal("should return true")
   246  	} else {
   247  		_, err := Client.GetEmoji(newEmoji.Id)
   248  		if err == nil {
   249  			t.Fatal("should not return the emoji it was deleted")
   250  		}
   251  	}
   252  
   253  	//Admin can delete other users emoji
   254  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   255  	CheckNoError(t, resp)
   256  
   257  	ok, resp = th.SystemAdminClient.DeleteEmoji(newEmoji.Id)
   258  	CheckNoError(t, resp)
   259  	if !ok {
   260  		t.Fatal("should return true")
   261  	} else {
   262  		_, err := th.SystemAdminClient.GetEmoji(newEmoji.Id)
   263  		if err == nil {
   264  			t.Fatal("should not return the emoji it was deleted")
   265  		}
   266  	}
   267  
   268  	// Try to delete just deleted emoji
   269  	_, resp = Client.DeleteEmoji(newEmoji.Id)
   270  	CheckNotFoundStatus(t, resp)
   271  
   272  	//Try to delete non-existing emoji
   273  	_, resp = Client.DeleteEmoji(model.NewId())
   274  	CheckNotFoundStatus(t, resp)
   275  
   276  	//Try to delete without Id
   277  	_, resp = Client.DeleteEmoji("")
   278  	CheckNotFoundStatus(t, resp)
   279  
   280  	//Try to delete other user's custom emoji
   281  	newEmoji, resp = Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   282  	CheckNoError(t, resp)
   283  
   284  	Client.Logout()
   285  	th.LoginBasic2()
   286  	ok, resp = Client.DeleteEmoji(newEmoji.Id)
   287  	CheckUnauthorizedStatus(t, resp)
   288  }
   289  
   290  func TestGetEmoji(t *testing.T) {
   291  	th := Setup().InitBasic()
   292  	defer th.TearDown()
   293  	Client := th.Client
   294  
   295  	EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji
   296  	defer func() {
   297  		th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji })
   298  	}()
   299  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   300  
   301  	emoji := &model.Emoji{
   302  		CreatorId: th.BasicUser.Id,
   303  		Name:      model.NewId(),
   304  	}
   305  
   306  	newEmoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   307  	CheckNoError(t, resp)
   308  
   309  	emoji, resp = Client.GetEmoji(newEmoji.Id)
   310  	CheckNoError(t, resp)
   311  	if emoji.Id != newEmoji.Id {
   312  		t.Fatal("wrong emoji was returned")
   313  	}
   314  
   315  	_, resp = Client.GetEmoji(model.NewId())
   316  	CheckNotFoundStatus(t, resp)
   317  }
   318  
   319  func TestGetEmojiByName(t *testing.T) {
   320  	th := Setup().InitBasic()
   321  	defer th.TearDown()
   322  	Client := th.Client
   323  
   324  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   325  
   326  	emoji := &model.Emoji{
   327  		CreatorId: th.BasicUser.Id,
   328  		Name:      model.NewId(),
   329  	}
   330  
   331  	newEmoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   332  	CheckNoError(t, resp)
   333  
   334  	emoji, resp = Client.GetEmojiByName(newEmoji.Name)
   335  	CheckNoError(t, resp)
   336  	assert.Equal(t, newEmoji.Name, emoji.Name)
   337  
   338  	_, resp = Client.GetEmojiByName(model.NewId())
   339  	CheckNotFoundStatus(t, resp)
   340  
   341  	Client.Logout()
   342  	_, resp = Client.GetEmojiByName(newEmoji.Name)
   343  	CheckUnauthorizedStatus(t, resp)
   344  }
   345  
   346  func TestGetEmojiImage(t *testing.T) {
   347  	th := Setup().InitBasic()
   348  	defer th.TearDown()
   349  	Client := th.Client
   350  
   351  	EnableCustomEmoji := *th.App.Config().ServiceSettings.EnableCustomEmoji
   352  	DriverName := *th.App.Config().FileSettings.DriverName
   353  	defer func() {
   354  		th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji })
   355  		th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = DriverName })
   356  	}()
   357  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   358  
   359  	emoji1 := &model.Emoji{
   360  		CreatorId: th.BasicUser.Id,
   361  		Name:      model.NewId(),
   362  	}
   363  
   364  	emoji1, resp := Client.CreateEmoji(emoji1, utils.CreateTestGif(t, 10, 10), "image.gif")
   365  	CheckNoError(t, resp)
   366  
   367  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = false })
   368  
   369  	_, resp = Client.GetEmojiImage(emoji1.Id)
   370  	CheckNotImplementedStatus(t, resp)
   371  	CheckErrorMessage(t, resp, "api.emoji.disabled.app_error")
   372  
   373  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = "" })
   374  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   375  
   376  	_, resp = Client.GetEmojiImage(emoji1.Id)
   377  	CheckNotImplementedStatus(t, resp)
   378  	CheckErrorMessage(t, resp, "api.emoji.storage.app_error")
   379  
   380  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = DriverName })
   381  
   382  	emojiImage, resp := Client.GetEmojiImage(emoji1.Id)
   383  	CheckNoError(t, resp)
   384  	if len(emojiImage) <= 0 {
   385  		t.Fatal("should return the image")
   386  	}
   387  	_, imageType, err := image.DecodeConfig(bytes.NewReader(emojiImage))
   388  	if err != nil {
   389  		t.Fatalf("unable to identify received image: %v", err.Error())
   390  	} else if imageType != "gif" {
   391  		t.Fatal("should've received gif data")
   392  	}
   393  
   394  	emoji2 := &model.Emoji{
   395  		CreatorId: th.BasicUser.Id,
   396  		Name:      model.NewId(),
   397  	}
   398  
   399  	emoji2, resp = Client.CreateEmoji(emoji2, utils.CreateTestAnimatedGif(t, 10, 10, 10), "image.gif")
   400  	CheckNoError(t, resp)
   401  
   402  	emojiImage, resp = Client.GetEmojiImage(emoji2.Id)
   403  	CheckNoError(t, resp)
   404  	if len(emojiImage) <= 0 {
   405  		t.Fatal("should return the image")
   406  	}
   407  	_, imageType, err = image.DecodeConfig(bytes.NewReader(emojiImage))
   408  	if err != nil {
   409  		t.Fatalf("unable to identify received image: %v", err.Error())
   410  	} else if imageType != "gif" {
   411  		t.Fatal("should've received gif data")
   412  	}
   413  
   414  	emoji3 := &model.Emoji{
   415  		CreatorId: th.BasicUser.Id,
   416  		Name:      model.NewId(),
   417  	}
   418  	emoji3, resp = Client.CreateEmoji(emoji3, utils.CreateTestJpeg(t, 10, 10), "image.jpg")
   419  	CheckNoError(t, resp)
   420  
   421  	emojiImage, resp = Client.GetEmojiImage(emoji3.Id)
   422  	CheckNoError(t, resp)
   423  	if len(emojiImage) <= 0 {
   424  		t.Fatal("should return the image")
   425  	}
   426  	_, imageType, err = image.DecodeConfig(bytes.NewReader(emojiImage))
   427  	if err != nil {
   428  		t.Fatalf("unable to identify received image: %v", err.Error())
   429  	} else if imageType != "jpeg" {
   430  		t.Fatal("should've received gif data")
   431  	}
   432  
   433  	emoji4 := &model.Emoji{
   434  		CreatorId: th.BasicUser.Id,
   435  		Name:      model.NewId(),
   436  	}
   437  	emoji4, resp = Client.CreateEmoji(emoji4, utils.CreateTestPng(t, 10, 10), "image.png")
   438  	CheckNoError(t, resp)
   439  
   440  	emojiImage, resp = Client.GetEmojiImage(emoji4.Id)
   441  	CheckNoError(t, resp)
   442  	if len(emojiImage) <= 0 {
   443  		t.Fatal("should return the image")
   444  	}
   445  	_, imageType, err = image.DecodeConfig(bytes.NewReader(emojiImage))
   446  	if err != nil {
   447  		t.Fatalf("unable to identify received image: %v", err.Error())
   448  	} else if imageType != "png" {
   449  		t.Fatal("should've received gif data")
   450  	}
   451  
   452  	_, resp = Client.DeleteEmoji(emoji4.Id)
   453  	CheckNoError(t, resp)
   454  
   455  	_, resp = Client.GetEmojiImage(emoji4.Id)
   456  	CheckNotFoundStatus(t, resp)
   457  
   458  	_, resp = Client.GetEmojiImage(model.NewId())
   459  	CheckNotFoundStatus(t, resp)
   460  
   461  	_, resp = Client.GetEmojiImage("")
   462  	CheckBadRequestStatus(t, resp)
   463  }
   464  
   465  func TestSearchEmoji(t *testing.T) {
   466  	th := Setup().InitBasic()
   467  	defer th.TearDown()
   468  	Client := th.Client
   469  
   470  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   471  
   472  	searchTerm1 := model.NewId()
   473  	searchTerm2 := model.NewId()
   474  
   475  	emojis := []*model.Emoji{
   476  		{
   477  			CreatorId: th.BasicUser.Id,
   478  			Name:      searchTerm1,
   479  		},
   480  		{
   481  			CreatorId: th.BasicUser.Id,
   482  			Name:      "blargh_" + searchTerm2,
   483  		},
   484  	}
   485  
   486  	for idx, emoji := range emojis {
   487  		emoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   488  		CheckNoError(t, resp)
   489  		emojis[idx] = emoji
   490  	}
   491  
   492  	search := &model.EmojiSearch{Term: searchTerm1}
   493  	remojis, resp := Client.SearchEmoji(search)
   494  	CheckNoError(t, resp)
   495  	CheckOKStatus(t, resp)
   496  
   497  	found := false
   498  	for _, e := range remojis {
   499  		if e.Name == emojis[0].Name {
   500  			found = true
   501  		}
   502  	}
   503  
   504  	assert.True(t, found)
   505  
   506  	search.Term = searchTerm2
   507  	search.PrefixOnly = true
   508  	remojis, resp = Client.SearchEmoji(search)
   509  	CheckNoError(t, resp)
   510  	CheckOKStatus(t, resp)
   511  
   512  	found = false
   513  	for _, e := range remojis {
   514  		if e.Name == emojis[1].Name {
   515  			found = true
   516  		}
   517  	}
   518  
   519  	assert.False(t, found)
   520  
   521  	search.PrefixOnly = false
   522  	remojis, resp = Client.SearchEmoji(search)
   523  	CheckNoError(t, resp)
   524  	CheckOKStatus(t, resp)
   525  
   526  	found = false
   527  	for _, e := range remojis {
   528  		if e.Name == emojis[1].Name {
   529  			found = true
   530  		}
   531  	}
   532  
   533  	assert.True(t, found)
   534  
   535  	search.Term = ""
   536  	_, resp = Client.SearchEmoji(search)
   537  	CheckBadRequestStatus(t, resp)
   538  
   539  	Client.Logout()
   540  	_, resp = Client.SearchEmoji(search)
   541  	CheckUnauthorizedStatus(t, resp)
   542  }
   543  
   544  func TestAutocompleteEmoji(t *testing.T) {
   545  	th := Setup().InitBasic()
   546  	defer th.TearDown()
   547  	Client := th.Client
   548  
   549  	th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true })
   550  
   551  	searchTerm1 := model.NewId()
   552  
   553  	emojis := []*model.Emoji{
   554  		{
   555  			CreatorId: th.BasicUser.Id,
   556  			Name:      searchTerm1,
   557  		},
   558  		{
   559  			CreatorId: th.BasicUser.Id,
   560  			Name:      "blargh_" + searchTerm1,
   561  		},
   562  	}
   563  
   564  	for idx, emoji := range emojis {
   565  		emoji, resp := Client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif")
   566  		CheckNoError(t, resp)
   567  		emojis[idx] = emoji
   568  	}
   569  
   570  	remojis, resp := Client.AutocompleteEmoji(searchTerm1, "")
   571  	CheckNoError(t, resp)
   572  	CheckOKStatus(t, resp)
   573  
   574  	found1 := false
   575  	found2 := false
   576  	for _, e := range remojis {
   577  		if e.Name == emojis[0].Name {
   578  			found1 = true
   579  		}
   580  
   581  		if e.Name == emojis[1].Name {
   582  			found2 = true
   583  		}
   584  	}
   585  
   586  	assert.True(t, found1)
   587  	assert.False(t, found2)
   588  
   589  	_, resp = Client.AutocompleteEmoji("", "")
   590  	CheckBadRequestStatus(t, resp)
   591  
   592  	Client.Logout()
   593  	_, resp = Client.AutocompleteEmoji(searchTerm1, "")
   594  	CheckUnauthorizedStatus(t, resp)
   595  }