UNPKG

pip-webui

Version:

HTML5 UI for LOB applications

273 lines (204 loc) 10.4 kB
/** * @file pipMockedUsers * @copyright Digital Living Software Corp. 2014-2016 * * Mocked: * GET /api/users/current * GET /api/users * POST /api/users * GET /api/users/:id * PUT /api/users/:id * DELETE /api/users/:id * * GET /api/users/:party_id/sessions * DELETE /api/users/:party_id/sessions/:id */ (function () { 'use strict'; var thisModule = angular.module('pipMocked.Users', ['ngMockE2E', 'ngResource']); thisModule.factory('MockedCurrentUserResource', function ($httpBackend, $log, MockedResource) { var child = Object.create(MockedResource); child.api = '/api/users/current'; child.register = function() { // GET /api/users/current $httpBackend.whenGET(child.fakeUrl + child.api) .respond(function(method, url, data, headers, params) { var user; user = child.dataset.getCurrentUser(); if (!user || !user.id) { var error = child.getError('1106'); return [error.StatusCode, error.request, error.headers]; } return [200, user, {}]; }); } return child; }); thisModule.factory('MockedUsersResource', function ($httpBackend, $log, MockedResource) { var child = Object.create(MockedResource); child.api = '/api/users'; child.register = function() { // GET /api/users $httpBackend.whenGET(child.fakeUrl + child.api) .respond(function(method, url, data, headers, params) { var user, users = child.dataset.get('UsersTestCollection'), usersCollection; if (!users) { throw new Error('MockedUsersResource: Users collection is not found') } usersCollection = users.getAll(); return [200, usersCollection, {}]; }); // POST /api/users $httpBackend.whenPOST(child.fakeUrl + child.api) .respond(function(method, url, data, headers, params) { var user, userData = angular.fromJson(data), users = child.dataset.get('UsersTestCollection'), usersCollection; if (!userData || !userData['email']) { throw new Error('MockedUsersResource: user email is not specified') } if (!users) { throw new Error('MockedUsersResource: Users collection is not found') } usersCollection = users.getAll(); user = _.find(usersCollection, function (item) { return item.email == userData.email; }); if (user && user.id) { var error = child.getError('1104'); return [error.StatusCode, error.request, error.headers]; } // add user to collection user = users.create(userData); return [200, user, {}]; }); // GET /api/users/:id $httpBackend.whenGET(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var user, idParams, userId, users = child.dataset.get('UsersTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedUsersResource: user_id is not specified into url') } userId = idParams[0]; if (!users) { throw new Error('MockedUsersResource: Users collection is not found') } user = users.findById(userId); return [200, user, {}]; }); // PUT /api/users/:id $httpBackend.whenPUT(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var user, userData = angular.fromJson(data), idParams, userId, users = child.dataset.get('UsersTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedUsersResource: user_id is not specified into url') } userId = idParams[0]; if (!users) { throw new Error('MockedUsersResource: Users collection is not found') } user = users.findById(userId); user = users.update(userId, userData); return [200, user, {}]; }); // DELETE /api/users/:id $httpBackend.whenDELETE(new RegExp(child.regEsc(child.fakeUrl + child.api + '/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var user, userData = angular.fromJson(data), idParams, userId, users = child.dataset.get('UsersTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedUsersResource: user_id is not specified into url') } userId = idParams[0]; if (!users) { throw new Error('MockedUsersResource: Users collection is not found') } user = users.findById(userId); if (!user || !user.id) { var error = child.getError('1106'); return [error.StatusCode, error.request, error.headers]; } users.deleteById(user.id); return [200, "OK", {}]; }); } return child; }); thisModule.factory('MockedUserSessionsResource', function ($httpBackend, $log, MockedResource) { var child = Object.create(MockedResource); // /api/users/:party_id/sessions/:id child.api = '/api/users/:party_id/sessions/:id'; child.register = function() { // GET /api/users/:party_id/sessions $httpBackend.whenGET(new RegExp(child.regEsc(child.fakeUrl + '/api/users/') + child.IdRegExp + child.regEsc('/sessions'))) .respond(function(method, url, data, headers, params) { var user, idParams, userId, users = child.dataset.get('UsersTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedUserSessionsResource: user_id is not specified into url') } userId = idParams[0]; if (!users) { throw new Error('MockedUserSessionsResource: Users collection is not found') } user = users.findById(userId); if (!user || !user.id) { var error = child.getError('1106'); return [error.StatusCode, error.request, error.headers]; } return [200, user.sessions, {}]; }); // DELETE /api/users/:party_id/sessions/:id $httpBackend.whenDELETE(new RegExp(child.regEsc(child.fakeUrl + '/api/users/') + child.IdRegExp + child.regEsc('/sessions/') + child.IdRegExp + child.EndStringRegExp)) .respond(function(method, url, data, headers, params) { var user, i, match = false, idParams, userId, sessionId, users = child.dataset.get('UsersTestCollection'); idParams = child.getUrlIdParams(url); if (!idParams || idParams.length == 0) { throw new Error('MockedUserSessionsResource: user_id is not specified into url') } userId = idParams[0]; sessionId = idParams[1]; if (!users) { throw new Error('MockedUserSessionsResource: Users collection is not found') } user = users.findById(userId); if (!user || !user.id) { var error = child.getError('1106'); return [error.StatusCode, error.request, error.headers]; } for (i = 0; i < user.sessions.length; i++) { if (user.sessions[i].id === sessionId) { match = true; user.sessions.splice(i, 1); break; } } user = users.update(userId, users); return [200, match ? "OK" : null, {}]; }); } return child; }); })();