This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/apis/userprofile/tests/user.js_
2022-11-03 16:41:13 -04:00

79 lines
3.1 KiB
Plaintext

'use strict';
var Test = require('tape');
var Express = require('express');
var BodyParser = require('body-parser');
var Swaggerize = require('swaggerize-express');
var Path = require('path');
var Request = require('supertest');
var Mockgen = require('../data/mockgen.js');
var Parser = require('swagger-parser');
/**
* Test for /user
*/
Test('/user', function (t) {
var apiPath = Path.resolve(__dirname, '../config/swagger.json');
var App = Express();
App.use(BodyParser.json());
App.use(BodyParser.urlencoded({
extended: true
}));
App.use(Swaggerize({
api: apiPath,
handlers: Path.resolve(__dirname, '../handlers')
}));
Parser.validate(apiPath, function (err, api) {
t.error(err, 'No parse error');
t.ok(api, 'Valid swagger api');
/**
* summary:
* description: List all user profiles
* parameters:
* produces:
* responses: 200, default
*/
t.test('test getAllUsers get operation', function (t) {
Mockgen().requests({
path: '/user',
operation: 'get'
}, function (err, mock) {
var request;
t.error(err);
t.ok(mock);
t.ok(mock.request);
//Get the resolved path from mock request
//Mock request Path templates({}) are resolved using path parameters
request = Request(App)
.get('/api' + mock.request.path);
if (mock.request.body) {
//Send the request body
request = request.send(mock.request.body);
} else if (mock.request.formData){
//Send the request form data
request = request.send(mock.request.formData);
//Set the Content-Type as application/x-www-form-urlencoded
request = request.set('Content-Type', 'application/x-www-form-urlencoded');
}
// If headers are present, set the headers.
if (mock.request.headers && mock.request.headers.length > 0) {
Object.keys(mock.request.headers).forEach(function (headerName) {
request = request.set(headerName, mock.request.headers[headerName]);
});
}
request.end(function (err, res) {
t.error(err, 'No error');
t.ok(res.statusCode === 200, 'Ok response status');
var Validator = require('is-my-json-valid');
var validate = Validator(api.paths['/user']['get']['responses']['200']['schema']);
var response = res.body;
if (Object.keys(response).length <= 0) {
response = res.text;
}
t.ok(validate(response), 'Valid response');
t.error(validate.errors, 'No validation errors');
t.end();
});
});
});
});
});