github.com/ashishbhate/mattermost-server@v5.11.1+incompatible/services/mfa/mfa_test.go (about) 1 // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package mfa 5 6 import ( 7 "net/url" 8 "testing" 9 10 "github.com/mattermost/mattermost-server/model" 11 "github.com/mattermost/mattermost-server/plugin/plugintest/mock" 12 "github.com/mattermost/mattermost-server/store" 13 "github.com/mattermost/mattermost-server/store/storetest/mocks" 14 "github.com/mattermost/mattermost-server/utils/testutils" 15 16 "github.com/stretchr/testify/assert" 17 "github.com/stretchr/testify/require" 18 ) 19 20 func TestGenerateSecret(t *testing.T) { 21 user := &model.User{Id: model.NewId(), Roles: "system_user"} 22 23 config := model.Config{} 24 config.SetDefaults() 25 config.ServiceSettings.EnableMultifactorAuthentication = model.NewBool(true) 26 configService := testutils.StaticConfigService{Cfg: &config} 27 storeMock := mocks.Store{} 28 userStoreMock := mocks.UserStore{} 29 userStoreMock.On("UpdateMfaSecret", user.Id, mock.AnythingOfType("string")).Return(func(userId string, secret string) store.StoreChannel { 30 return store.Do(func(result *store.StoreResult) { 31 result.Data = nil 32 result.Err = nil 33 }) 34 }) 35 storeMock.On("User").Return(&userStoreMock) 36 37 mfa := Mfa{configService, &storeMock} 38 39 secret, img, err := mfa.GenerateSecret(user) 40 require.Nil(t, err) 41 42 assert.Len(t, secret, 32) 43 44 if len(img) == 0 { 45 t.Fatal("no image set") 46 } 47 48 config.ServiceSettings.EnableMultifactorAuthentication = model.NewBool(false) 49 50 _, _, err = mfa.GenerateSecret(user) 51 require.NotNil(t, err) 52 } 53 54 func TestGetIssuerFromUrl(t *testing.T) { 55 cases := []struct { 56 Input string 57 Expected string 58 }{ 59 {"http://somewebsite.com", url.QueryEscape("somewebsite.com")}, 60 {"https://somewebsite.com", url.QueryEscape("somewebsite.com")}, 61 {"https://some.website.com", url.QueryEscape("some.website.com")}, 62 {" https://www.somewebsite.com", url.QueryEscape("somewebsite.com")}, 63 {"http://somewebsite.com/chat", url.QueryEscape("somewebsite.com/chat")}, 64 {"somewebsite.com ", url.QueryEscape("somewebsite.com")}, 65 {"http://localhost:8065", url.QueryEscape("localhost:8065")}, 66 {"", "Mattermost"}, 67 {" ", "Mattermost"}, 68 } 69 70 for _, c := range cases { 71 assert.Equal(t, c.Expected, getIssuerFromUrl(c.Input)) 72 } 73 }