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  }