github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/model/session_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 "strings" 8 "testing" 9 "time" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestSessionDeepCopy(t *testing.T) { 16 sessionId := NewId() 17 userId := NewId() 18 mapKey := "key" 19 mapValue := "val" 20 21 session := &Session{Id: sessionId, Props: map[string]string{mapKey: mapValue}, TeamMembers: []*TeamMember{{UserId: userId, TeamId: "someteamId"}}} 22 23 copySession := session.DeepCopy() 24 copySession.Id = "changed" 25 copySession.Props[mapKey] = "changed" 26 copySession.TeamMembers[0].UserId = "changed" 27 28 assert.Equal(t, sessionId, session.Id) 29 assert.Equal(t, mapValue, session.Props[mapKey]) 30 assert.Equal(t, userId, session.TeamMembers[0].UserId) 31 32 session = &Session{Id: sessionId} 33 copySession = session.DeepCopy() 34 35 assert.Equal(t, sessionId, copySession.Id) 36 37 session = &Session{TeamMembers: []*TeamMember{}} 38 copySession = session.DeepCopy() 39 40 assert.Equal(t, 0, len(copySession.TeamMembers)) 41 } 42 43 func TestSessionJson(t *testing.T) { 44 session := Session{} 45 session.PreSave() 46 json := session.ToJson() 47 rsession := SessionFromJson(strings.NewReader(json)) 48 49 require.Equal(t, rsession.Id, session.Id, "Ids do not match") 50 51 session.Sanitize() 52 53 require.False(t, session.IsExpired(), "Shouldn't expire") 54 55 session.ExpiresAt = GetMillis() 56 time.Sleep(10 * time.Millisecond) 57 58 require.True(t, session.IsExpired(), "Should expire") 59 60 session.SetExpireInDays(10) 61 } 62 63 func TestSessionCSRF(t *testing.T) { 64 s := Session{} 65 token := s.GetCSRF() 66 assert.Empty(t, token) 67 68 token = s.GenerateCSRF() 69 assert.NotEmpty(t, token) 70 71 token2 := s.GetCSRF() 72 assert.NotEmpty(t, token2) 73 assert.Equal(t, token, token2) 74 }