package entity import ( "testing" "time" "github.com/stretchr/testify/assert" "github.com/photoprism/photoprism/pkg/rnd" ) func TestNewSession(t *testing.T) { t.Run("NoSessionData", func(t *testing.T) { m := NewSession(time.Hour) assert.True(t, rnd.IsSessionID(m.ID)) assert.False(t, m.CreatedAt.IsZero()) assert.False(t, m.UpdatedAt.IsZero()) assert.False(t, m.ExpiresAt.IsZero()) assert.NotEmpty(t, m.ID) assert.NotNil(t, m.Data()) assert.Equal(t, 0, len(m.Data().Tokens)) }) t.Run("EmptySessionData", func(t *testing.T) { m := NewSession(time.Hour) m.SetData(NewSessionData()) assert.True(t, rnd.IsSessionID(m.ID)) assert.False(t, m.CreatedAt.IsZero()) assert.False(t, m.UpdatedAt.IsZero()) assert.False(t, m.ExpiresAt.IsZero()) assert.NotEmpty(t, m.ID) assert.NotNil(t, m.Data()) assert.Equal(t, 0, len(m.Data().Tokens)) }) t.Run("WithSessionData", func(t *testing.T) { data := NewSessionData() data.Tokens = []string{"foo", "bar"} m := NewSession(time.Hour) m.SetData(data) assert.True(t, rnd.IsSessionID(m.ID)) assert.False(t, m.CreatedAt.IsZero()) assert.False(t, m.UpdatedAt.IsZero()) assert.False(t, m.ExpiresAt.IsZero()) assert.NotEmpty(t, m.ID) assert.NotNil(t, m.Data()) assert.Len(t, m.Data().Tokens, 2) assert.Equal(t, "foo", m.Data().Tokens[0]) assert.Equal(t, "bar", m.Data().Tokens[1]) // t.Logf("Session: %#v", m) }) } func TestSession_SetData(t *testing.T) { t.Run("Nil", func(t *testing.T) { m := NewSession(time.Hour) assert.NotNil(t, m) sess := m.SetData(nil) assert.NotNil(t, sess) assert.NotEmpty(t, sess.ID) assert.Equal(t, sess.ID, m.ID) }) }