UNPKG

apeman-app-validate

Version:
145 lines (135 loc) 3.38 kB
/** * Test case for create. * Runs with mocha. */ 'use strict' const create = require('../lib/create.js') const apemanport = require('apemanport') const assert = require('assert') const co = require('co') const apemanApp = require('apeman-app') const apemanrequest = require('apemanrequest') const loc = require('../doc/mocks/mock-locales') describe('create', function () { let app, server, port let request = apemanrequest.create({}) before(() => co(function * () { app = create({ properties: { accountName: { type: 'string', minLength: 2 }, password: { type: 'string' } }, required: [ 'accountName', 'password' ] }) assert.ok(app) port = yield apemanport.find() server = yield apemanApp('testing-app', { port, configuration: { $apps: { 'testing-app': { '': [ require('apeman-app-body')(), require('apeman-app-locale')(loc), require('apeman-app-route')({ '/users': { 'POST': [ app ] } }) ] } } } }) })) after(() => co(function * () { yield server.close() })) it('Get multiple data to validate.', () => co(function * () { let body = { data: [ { attributes: { name: 'hoge' } }, { attributes: { name: 'fuge' } } ] } let data = app.parseData(body, 'data/attributes') assert.deepEqual( data, [ { name: 'hoge' }, { name: 'fuge' } ] ) assert.equal(data[ 0 ].$pointer, '/data/0/attributes') assert.equal(data[ 1 ].$pointer, '/data/1/attributes') })) it('Send invalid request', () => co(function * () { let res = yield request({ url: `http://localhost:${port}/users`, method: 'POST', json: true, form: { data: { type: 'users', attributes: { accountName: 'f' } } } }) assert.equal(res.statusCode, 400) let { body } = res let errors = body.errors assert.equal(errors[ 0 ].source.pointer, '/data/attributes/password') })) it('Send invalid request with multiple body', () => co(function * () { let res = yield request({ url: `http://localhost:${port}/users`, method: 'POST', form: { data: [ { type: 'users', attributes: { accountName: 'f', password: 'hoge' } } ] } }) let { body } = res assert.equal(res.statusCode, 400) let errors = body.errors assert.equal(errors[ 0 ].source.pointer, '/data/0/attributes/accountName') assert.ok(errors) })) it('Send without data', () => co(function * () { let res = yield request({ url: `http://localhost:${port}/users`, method: 'POST', json: true, form: { data: [] } }) let { body } = res console.log(body) assert.equal(res.statusCode, 400) let errors = body.errors assert.ok(errors[ 0 ]) assert.equal(errors[ 0 ].status, '422') assert.equal(errors[ 0 ].source.pointer, '/data/attributes') })) }) /* global describe, before, after, it */