1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/lib/routes/client-api/register.test.js
Christopher Kolstad 6c2af3c6bc
fix: add middleware verifying content type
- By default only accepts 'application/json'
- Routes that need different content-type, can call post or put with
  additional arguments, one per content-type you need to support.
2021-02-11 16:09:42 +01:00

122 lines
2.8 KiB
JavaScript

'use strict';
const test = require('ava');
const supertest = require('supertest');
const { EventEmitter } = require('events');
const store = require('../../../test/fixtures/store');
const getLogger = require('../../../test/fixtures/no-logger');
const getApp = require('../../app');
const { createServices } = require('../../services');
const eventBus = new EventEmitter();
function getSetup() {
const stores = store.createStores();
const config = {
baseUriPath: '',
stores,
eventBus,
getLogger,
};
const services = createServices(stores, config);
const app = getApp(config, services);
return {
request: supertest(app),
stores,
};
}
test.afterEach(() => {
getLogger.setMuteError(false);
});
test('should register client', t => {
t.plan(0);
const { request } = getSetup();
return request
.post('/api/client/register')
.send({
appName: 'demo',
instanceId: 'test',
strategies: ['default'],
sdkVersion: 'unleash-client-test:1.2',
started: Date.now(),
interval: 10,
})
.expect(202);
});
test('should register client without sdkVersin', t => {
t.plan(0);
const { request } = getSetup();
return request
.post('/api/client/register')
.send({
appName: 'demo',
instanceId: 'test',
strategies: ['default'],
started: Date.now(),
interval: 10,
})
.expect(202);
});
test('should require appName field', t => {
t.plan(0);
const { request } = getSetup();
return request
.post('/api/client/register')
.set('Content-Type', 'application/json')
.expect(400);
});
test('should require strategies field', t => {
t.plan(0);
const { request } = getSetup();
return request
.post('/api/client/register')
.send({
appName: 'demo',
instanceId: 'test',
// strategies: ['default'],
started: Date.now(),
interval: 10,
})
.expect(400);
});
test('should fail if store fails', t => {
t.plan(0);
getLogger.setMuteError(true);
// --- start custom config
const stores = store.createStores();
stores.clientApplicationsStore = {
upsert: () => {
throw new Error('opps');
},
};
const app = getApp({
baseUriPath: '',
stores,
eventBus,
getLogger,
});
// --- end custom config
const request = supertest(app);
return request
.post('/api/client/register')
.send({
appName: 'demo',
instanceId: 'test',
strategies: ['default'],
started: Date.now(),
interval: 10,
})
.expect(500);
});