Skip to content

Instantly share code, notes, and snippets.

@IcodeNet
Forked from wordyallen/cognito.spec.js
Created January 15, 2021 07:31
Show Gist options
  • Save IcodeNet/0890224935b598deab53712c602577d1 to your computer and use it in GitHub Desktop.
Save IcodeNet/0890224935b598deab53712c602577d1 to your computer and use it in GitHub Desktop.
Testing Cognito
require('dotenv').config()
import {exec} from 'child_process'
import {
CognitoUserPool as Pool,
CognitoUserAttribute as Attribute,
CognitoUser as User,
AuthenticationDetails as Details,
} from 'amazon-cognito-identity-js'
import {LocalStorage} from 'node-localstorage'
import prompt from 'prompt'
const {NODE_ENV} = process.env
const localStorage = new LocalStorage('./tests/.scratch')
const {UserPoolId, ClientId} = process.env
const u = {
username: 'test8',
password: 'password',
newPassword: 'newPassword',
email: 'test8@mailinator.com'
}
const poolData = {UserPoolId, ClientId}
const pool = new Pool(poolData)
const list =[new Attribute({Name:'email', Value: u.email})]
const user = new User({ Username: u.username, Pool: pool })
beforeAll( done =>
pool.signUp(u.username, u.password, list, null, (err, res) => err
? (console.error(err), done())
: (console.log( 'New User Created ⚡️ '), done())
)
)
NODE_ENV==='local'
? test('Confirm User ✅ ', done => {
prompt.start()
prompt.get(['code'], (err, { code }) => err
? (console.log(err), done())
: user.confirmRegistration(code, true, (err, res) => err
? (console.log(err), done())
: (expect(res).toEqual('SUCCESS', done() )
)
)
)
}, 60000)
: test.skip() // run in CI
test('Sign In and Get Token 🍪 ', () => new Promise((resolve, reject)=>
user.authenticateUser(
new Details({ Username: u.username, Password: u.password}), {
onSuccess: res => resolve(res),
onFailure: err => reject(err)
}))
.then(res => {
localStorage.setItem('token', res.getAccessToken().getJwtToken())
expect(res).toBeTruthy()
})
.catch(err => expect(err).toBeFalsy())
)
test('Retrieve Current User from localStorage 🚶 ', done =>
user.getSession( (err, session) => err
? (console.error(err), done())
: (expect(session.isValid()).toBeTruthy(), done())
)
)
test('Retrieve User Attributes 🚚 ', done =>
user.getUserAttributes((err, res)=> err
? (console.log(err), done())
: (
expect(res.filter(
user => user.getValue()===u.email)
).toHaveLength(1),
done()
)
)
)
test('Change User Password 🤔 ', done =>
user.changePassword(u.password, u.newPassword,
(err, res)=> err
? (console.error(err), done())
: (expect(res).toEqual('SUCCESS') , done())
)
)
test('Sign User Out Globally 🌎 ', () => new Promise((resolve, reject)=>
user.globalSignOut({
onSuccess: res => resolve(res),
onFailure: err => reject(err)
}))
.then(res => {
localStorage.removeItem('token')
expect(res).toEqual('SUCCESS')
})
.catch(err => expect(err).toBeFalsy())
)
afterAll(done => user.authenticateUser(
new Details({ Username: u.username, Password: u.newPassword })
,{
onSuccess: result => user.deleteUser(
(err, result)=> err
? (console.error(err), done())
: (console.log('User Deleted 👋🏼 '), done())
),
onFailure: err => (console.error(err), done())
})
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment