Tools to be used by the GWC backend services for testing purpose.
Generators generate some commonly used fake data.
Generate an mock access token like Auth0 would do. The payload and options can be customized if needed. Please refer to the jsonwebtoken package for documentation. This is a self signed token that is only valid in test environment.
import {generateAccessToken} from '@gwcdata/test-tools'
const accessToken = generateAccessToken(payload, options)
Get a random third party identity provider name.
import {generateAuth0Provider} from '@gwcdata/test-tools'
const provider = generateAuth0Provider(options)
Options
- includeLocal (Boolean): Include the provider name for users authenticating with an email/password combination. (default: false)
Generate a fake auth0 ID.
import {generateAuth0UserId} from '@gwcdata/test-tools'
const auth0Id = generateAuth0UserId(full)
- full (Boolean): prefix the provider name to the ID to create a full auth0 ID also known as externalID. (default: false)
Get a random BlackBerry Spark chat ID
import {generateChatId} from '@gwcdata/test-tools'
const chatId = generateChatId()
Get a random locale from the ones available in GWC.
import {generateLocale} from '@gwcdata/test-tools'
const locale = generateLocale()
Get a random Blackberry Spark regId.
import {generateRegId} from '@gwcdata/test-tools'
const regId = generateRegId()
Get RSA key pair and save to certs folder.
Note. use on test/env.js
import {generateRsaKeyPair} from '@gwcdata/test-tools'
generateRsaKeyPair()
Get a fake base64 string that looks like a user public key. /!\ This is not a valid crypto key
import {generateSignKeyPub} from '@gwcdata/test-tools'
const signKeyPub = generateSignKeyPub()
Get a fake base64 string that looks like a user encrypted private key. /!\ This is not a valid crypto key
import {generateSignKeyEncrypted} from '@gwcdata/test-tools'
const signKeyEncrypted = generateSignKeyEncrypted()
Get a fake base64 string that looks like a user encrypted Blackberry passcode. /!\ This is not a valid crypto key
import {generateBbEncrypted} from '@gwcdata/test-tools'
const bbEncrypted = generateBbEncrypted()
Factory functions generate commonly used entities. They are heavily inspired by factory-girl and the worker functions are fully compatible with it.
Build an object according to a model.
import {factory} from '@gwcdata/test-tools'
const model = factory.build(name, attributes, buildOptions)
const models = factory.buildMany(name, count, attributes, buildOptions)
- name: Name of the model to user.
- count: Number of objects to generate.
- attributes: Override the value of some of the object's attributes.
- buildOptions: Options passed to the workers.
import {factory} from '@gwcdata/test-tools'
const buildOptions = {
accepted: true,
blocked: false
}
const model = factory.build('connection', undefined, buildOptions)
- accepted: Will set the connection as accepted, and set the acceptedAt accordingly.
- blocked: Will set the connection as blocked, and set the blockedAt accordingly.
import {factory} from '@gwcdata/test-tools'
const model = factory.build('identity')
import {factory} from '@gwcdata/test-tools'
const model = factory.build('organization')
import {factory} from '@gwcdata/test-tools'
const buildOptions = {
firstName: John,
lastName: Doe,
organizationId: '51f0ac7a-4b79-485f-9a0f-a0eb7a5d8aa8',
admin: false,
member: false,
moreRandom: false
}
const model = factory.build('user', undefined, buildOptions)
- firstName: First name of the user, will also define all the variations of name.
- lastName: Last name of the user, will also define all the variations of name.
- organizationId: Id of the organization to which the user is related. Will define the date at which he joined.
- admin: User is admin of the organization.
- member: User is a member of the organization.
- moreRandom: Adds randomness to unique fields to avoid collisions when building a large number of objects.
Utility functions that bring some convenience when writing tests.
To replicate a PKI (Public Key Infrastructure), a CA certificate is needed as well as client and server cert2ificates and private keys.
import {generatePkiEnvironment} from '@gwcdata/test-tools'
generatePkiEnvironment()
This will right all the required certificates and keys at the root of the project in a directory called certs
.
The function tlsRequest
is a wrapper around the supertest library that adds the required parameters for performing a tls request.
import {tlsRequest} from '@gwcdata/test-tools'
tlsRequest(options)
.get('/test')
.expect(200);
options
- ca: Override the default CA
- key: Override the default private key
- cert: Override the default certificate
This function generates a bearer token for a given user, it can therefore conveniently be added as authorization during tests.
import {getBearer} from '@gwcdata/test-tools'
const authorization = getBearer(user, payload);
- user: The user making the request
- payload: Data to include in the JWT payload
The function jwtRequest
is a wrapper around the supertest library that adds the required parameters for performing a request authenticated by the bearer JWT of a specified user.
import {jwtRequest} from '@gwcdata/test-tools'
jwtRequest(app, user)
.get('/test')
.expect(200);