aws-sdk-mobile-analytics
Version:
AWS Mobile Analytics SDK for JavaScript
95 lines (92 loc) • 4.94 kB
text/coffeescript
Copyright 2014-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
the License. A copy of the License is located at http://aws.amazon.com/apache2.0/
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
and limitations under the License.
helpers = require('./helpers')
AWS = helpers.AWS
AMA = helpers.AMA
expiration = null
session = null
storage = new AMA.Storage('AppID')
describe 'AMA.Session', ->
describe 'Initialize Session (Default Values)', ->
before ->
session = new AMA.Session({storage: storage})
it 'should be initialized', ->
expect(session).not.to.be.null
expect(session).not.to.be.undefined
it 'should have scoped sessionId storage key', ->
expect(session.StorageKeys.SESSION_ID).to.not.eql('MobileAnalyticsSessionId')
expect(session.StorageKeys.SESSION_ID).to.have.string('MobileAnalyticsSessionId')
expect(session.StorageKeys.SESSION_ID).to.have.string(session.id)
it 'should have scoped sessionExpiration storage key', ->
expect(session.StorageKeys.SESSION_EXPIRATION).to.not.eql('MobileAnalyticsSessionExpiration')
expect(session.StorageKeys.SESSION_EXPIRATION).to.have.string('MobileAnalyticsSessionExpiration')
expect(session.StorageKeys.SESSION_EXPIRATION).to.have.string(session.id)
it 'should persist session id', ->
expect(storage.get(session.StorageKeys.SESSION_ID)).not.to.be.null
expect(storage.get(session.StorageKeys.SESSION_ID)).to.eql(session.id)
it 'should persist expiration', ->
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).not.to.be.null
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.eql(session.expirationDate)
it 'should have a number expiration', ->
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.be.a('number')
expect(session.expirationDate).to.be.a('number')
it 'should have an integer expiration', ->
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION) % 1).to.eql(0)
expect(session.expirationDate % 1).to.eql(0)
describe 'Clear Session', ->
before ->
session = new AMA.Session({storage: storage})
session.expireSession()
it 'should clear session id', ->
expect(storage.get(session.StorageKeys.SESSION_ID)).to.be.undefined
it 'should clear session expiration', ->
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.be.undefined
Needs duplicate session/expiration definitions due to Storage getting reloaded in another file.
describe 'Extend Session (Default Values)', ->
before ->
session = new AMA.Session({storage: storage})
expiration = session.expirationDate
session.extendSession()
it 'should not be original expiration date', ->
expect(expiration).to.not.eql(session.expirationDate)
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.not.eql(expiration)
it 'should persist new expiration date', ->
session = new AMA.Session({storage: storage})
expiration = session.expirationDate
session.extendSession()
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.eql(session.expirationDate)
it 'should be 30min later', ->
expect(session.expirationDate).to.eql(expiration + session.sessionLength)
describe 'Extend Session (1 min later)', ->
before ->
session = new AMA.Session({storage: storage})
expiration = session.expirationDate
session.extendSession(60000)
it 'should not be original expiration date', ->
expect(expiration).to.not.eql(session.expirationDate)
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.not.eql(expiration)
it 'should persist new expiration date', ->
session = new AMA.Session({storage: storage})
expiration = session.expirationDate
session.extendSession(60000)
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.eql(session.expirationDate)
it 'should be 60 sec later', ->
expect(session.expirationDate).to.eql(expiration + 60000)
describe 'Reset Session Timeout (1 min from now)', ->
beforeEach ->
session = new AMA.Session({storage: storage})
expiration = session.expirationDate
session.resetSessionTimeout(60000)
it 'should not be original expiration date', ->
expect(expiration).to.not.eql(session.expirationDate)
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.not.eql(expiration)
it 'should persist new expiration date', ->
expect(storage.get(session.StorageKeys.SESSION_EXPIRATION)).to.eql(session.expirationDate)