UNPKG

mi-auth-client

Version:
541 lines (540 loc) 33.7 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var utils_1 = require("../utils"); var _a = require('./mockObjects'), mockJwt = _a.mockJwt, mockUsers = _a.mockUsers, mockBrands = _a.mockBrands, mockAdvertisers = _a.mockAdvertisers, mockRoles = _a.mockRoles; var R = require("ramda"); var mockMe; function mockStrapiClientTool() { return { // user operations createUser: function (token, profile) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } if (!profile) { resolve({ data: null, error: "Please provide your user profile." }); } var username = profile.username, email = profile.email, password = profile.password, role = profile.role, platform = profile.platform, advertisers = profile.advertisers; if (!username && !email && !password && !role && !platform && !advertisers) { resolve({ data: null, error: "Please provide username, email, password, role, access, advertiser in profile." }); } if (typeof (username) != 'string') { resolve({ data: null, error: "Type of username must be string." }); } if (!utils_1.isEmail(email)) { resolve({ data: null, error: "Invalid email format." }); } if (typeof (password) != 'string') { resolve({ data: null, error: "Type of password must be string." }); } if (typeof (role) != 'string') { resolve({ data: null, error: "Type of role must be string." }); } if (!utils_1.isValidKey(role, utils_1.roleNames)) { resolve({ data: null, error: "Please select role in one of root, superAdmin, admin, user" }); } if (!Array.isArray(platform)) { resolve({ data: null, error: "Type of platform must be array." }); } var id = R.reduce(function (a, b) { return a > b ? a : b; }, 0, mockUsers.map(function (e) { return e.id; })) + 1; var advertiserInfo = mockAdvertisers.filter(function (e) { return advertisers.includes(e.id); }); var brand = []; var newUser = { id: id, username: username, email: email, password: password, role: role, platform: platform, brand: brand, advertisers: advertiserInfo }; //update owner to brand advertiserInfo.forEach(function (e) { var index = mockBrands.findIndex(function (c) { return c.id == e.brand; }); if (role == 'superAdmin') mockBrands[index].owners = mockBrands[index].owners.concat(newUser); newUser.brand.push(R.pick(['id', 'name'], mockBrands[index])); }); //update user to advertiser mockAdvertisers = mockAdvertisers.map(function (e) { if (advertisers.includes(e.id)) { e.users.push(R.pick(['id', 'username', 'email', 'role', 'platform', 'brand'], newUser)); } return e; }); mockUsers.push(newUser); resolve({ data: utils_1.lastElement(mockUsers), error: null }); })]; }); }); }, login: function (name, password) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (!name) { resolve({ data: null, error: "Please provide your name, which is email." }); } if (!password) { resolve({ data: null, error: "Please provide your password." }); } if (!utils_1.isEmail(name)) { resolve({ data: null, error: "nvalid email format." }); } if (typeof (password) != 'string') { resolve({ data: null, error: "Type of password must be string." }); } var index = mockUsers.findIndex(function (e) { return e.email == name; }); mockMe = mockUsers[index]; resolve({ data: { jwt: mockJwt, user: mockMe }, error: null }); })]; }); }); }, getMe: function (token) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } resolve({ data: mockMe, error: null }); })]; }); }); }, listUsers: function (token, select) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (!token) { resolve({ data: null, error: "Invalid token" }); } if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var _a = select.ids, ids = _a === void 0 ? [] : _a, brands = select.brands, advertisers = select.advertisers; if (ids.length != 0) { var users = mockUsers.filter(function (e) { return ids.includes(e.id); }); resolve({ data: users, error: null }); } if (brands) { var users = mockUsers.filter(function (e) { return e.advertisers.find(function (a) { return brands.includes(a.brand); }); }); resolve({ data: users, error: null }); } if (advertisers) { var users = mockUsers.filter(function (e) { return e.advertisers.find(function (a) { return advertisers.includes(a.id); }); }); resolve({ data: users, error: null }); } //list all users resolve({ data: mockUsers, error: null }); })]; }); }); }, updateUser: function (token, id, profile) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var username = profile.username, password = profile.password, role = profile.role, platform = profile.platform; if (password && typeof (password) != 'string') { resolve({ data: null, error: "Type of password must be string." }); } if (role && typeof (role) != 'string') { resolve({ data: null, error: "Type of role must be string." }); } if (role && !utils_1.isValidKey(role, utils_1.roleNames)) { resolve({ data: null, error: "Please select role in one of root, superAdmin, admin, user" }); } if (platform && !Array.isArray(platform)) { resolve({ data: null, error: "Type of platform must be array." }); } var user = mockUsers.find(function (e) { return e.id == id; }); var index = mockUsers.indexOf(user); var advertisers = profile.advertisers ? R.filter(function (e) { return profile.advertisers.includes(e.id); }, mockAdvertisers).map(R.pick(['id', 'name', 'brand'])) : undefined; var brand = advertisers ? R.filter(function (e) { return advertisers.map(function (e) { return e.brand; }).includes(e.id); }, mockBrands).map(R.pick(['id', 'name'])) : undefined; mockUsers[index] = utils_1.assignObject(mockUsers[index], { username: username || user.username, role: role || user.role, brand: brand || user.brand, advertisers: advertisers || user.advertisers }); // update user to advertiser if (profile.advertisers) { mockAdvertisers = mockAdvertisers.map(function (e) { var existUserIndex = e.users.findIndex(function (e) { return e.id == id; }); var isExist = existUserIndex != -1; if (profile.advertisers.includes(e.id) && isExist) return e; if (!profile.advertisers.includes(e.id) && !isExist) return e; // add user to advertiser if (profile.advertisers.includes(e.id) && !isExist) { e.users.push(R.pick(['username', 'id', 'email', 'role', 'platform', 'brand'], mockUsers[index])); return e; } // remove user from advertiser if (!profile.advertisers.includes(e.id) && isExist) { e.users.splice(existUserIndex, 1); return e; } }); } //update owner to brand if (profile.role == 'superAdmin') { //add to brand mockBrands = mockBrands.map(function (e) { var existOwnerIndex = e.owners.findIndex(function (e) { return e.id == id; }); var isExist = existOwnerIndex !== -1; if (!isExist) e.owners.push(R.pick(["id", "username", "email", "role", "platform"], mockUsers[index])); return e; }); } else if (profile.role !== 'superAdmin') { //remove owner from brand mockBrands = mockBrands.map(function (e) { var existOwnerIndex = e.owners.findIndex(function (e) { return e.id == id; }); var isExist = existOwnerIndex !== -1; if (isExist) e.owners.splice(existOwnerIndex, 1); return e; }); } resolve({ data: mockUsers[index], error: null }); })]; }); }); }, deleteUser: function (token, id) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } try { // remove user var index = mockUsers.findIndex(function (e) { return e.id == id; }); var user = mockUsers[index]; mockUsers.splice(index, 1); // remove user from advertiser mockAdvertisers = mockAdvertisers.map(function (e) { var existUserIndex = e.users.findIndex(function (e) { return e.id == id; }); if (existUserIndex == -1) return e; // user not exist in advertiser e.users.splice(existUserIndex, 1); return e; }); // remove user from brand owner if (user.role == 'superAdmin') mockBrands = mockBrands.map(function (e) { console.log(e.owners); var existOwnerIndex = e.owners.findIndex(function (e) { return e.id == id; }); var isExist = existOwnerIndex !== -1; if (isExist) e.owners.splice(existOwnerIndex, 1); return e; }); } catch (err) { resolve({ data: null, error: err }); } resolve({ data: true, error: null }); })]; }); }); }, // role operations listRoles: function (token) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { throw new Error("Invalid token."); } resolve(mockRoles); })]; }); }); }, // brand operations createBrand: function (token, profile) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var name = profile.name, _a = profile.advertisers, advertisers = _a === void 0 ? [] : _a, _b = profile.owners, owners = _b === void 0 ? [] : _b; if (!name) { resolve({ data: null, error: "Please provie name in profile" }); } if (typeof (name) != 'string') { resolve({ data: null, error: "Invalid type of name" }); } var id = R.reduce(function (a, b) { return a > b ? a : b; }, 0, mockBrands.map(function (e) { return e.id; })) + 1; var advertisersInfo = mockAdvertisers.filter(function (e) { return profile.advertisers.includes(e.id); }).map(function (e) { return { id: e.id, name: e.name, brand: id }; }); var ownersInfo = mockUsers.filter(function (e) { return owners.includes(e.id); }); mockBrands.push({ id: id, name: name, advertisers: advertisersInfo, owners: ownersInfo }); // add advertiser to brand mockAdvertisers = mockAdvertisers.map(function (e) { if (advertisers.includes(e.id)) e.brand = id; return e; }); resolve({ data: utils_1.lastElement(mockBrands), error: null }); })]; }); }); }, listBrands: function (token, select) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var ids = select.ids; if (ids) { var brands = mockBrands.filter(function (e) { return ids.includes(e.id); }); resolve({ data: brands, error: null }); } resolve({ data: mockBrands, error: null }); })]; }); }); }, updateBrand: function (token, id, profile) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var brand = mockBrands.find(function (e) { return e.id == id; }); var index = mockBrands.indexOf(brand); var owners = profile.owners ? mockUsers.filter(function (e) { return e.id == profile.owners[0]; }) : brand.owners; mockBrands[index] = utils_1.assignObject(mockBrands[index], { name: profile.name, owners: owners }); resolve({ data: mockBrands[index], error: null }); })]; }); }); }, deleteBrand: function (token, id) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } try { var brand_1 = mockBrands.find(function (e) { return e.id == id; }); var index = mockBrands.indexOf(brand_1); mockBrands.splice(index, 1); // remove brand from advertiser mockAdvertisers = mockAdvertisers.map(function (e) { if (brand_1.advertisers.map(function (e) { return e.id; }).includes(e.id)) e.brand = null; return e; }); } catch (err) { resolve({ data: null, error: err }); } resolve({ data: true, error: null }); })]; }); }); }, // advertiser operations createAdvertiser: function (token, profile) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var name = profile.name, brand = profile.brand; if (!name) { resolve({ data: null, error: "Please provie name in profile" }); } if (typeof (name) != 'string') { resolve({ data: null, error: "Invalid type of name" }); } if (brand && typeof (brand) != 'number') { resolve({ data: null, error: "Invalid type of brand" }); } // add advertiser to user var users = mockUsers.filter(function (e) { return profile.users.includes(e.id) || e.role == 'root' || (e.brand.map(function (e) { return e.id; }).includes(brand) && e.role == 'superAdmin'); }); var id = R.reduce(function (a, b) { return a > b ? a : b; }, 0, mockAdvertisers.map(function (e) { return e.id; })) + 1; var advertiser = { id: id, name: name, brand: brand, users: users }; mockUsers = mockUsers.map(function (e) { if (users.map(function (e) { return e.id; }).includes(e.id)) e.advertisers.push(R.pick(['name', 'brand', 'id'], advertiser)); return e; }); // create new advertiser mockAdvertisers.push(advertiser); // add advertiser to brand mockBrands = mockBrands.map(function (e) { if (e.id == profile.brand) e.advertisers.push(R.pick(['id', 'name', 'brand'], advertiser)); return e; }); resolve({ data: advertiser, error: null }); })]; }); }); }, listAdvertisers: function (token, select) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { //throw new Error("Invalid token."); resolve({ data: null, error: "Invalid token" }); } var _a = select.ids, ids = _a === void 0 ? [] : _a, _b = select.brands, brands = _b === void 0 ? [] : _b; if (ids.length != 0) { var advertiser = mockAdvertisers.filter(function (e) { return ids.includes(e.id); }); resolve({ data: advertiser, error: null }); } if (brands.length != 0) { var advertiser = mockAdvertisers.filter(function (e) { return brands.includes(e.brand); }); resolve({ data: advertiser, error: null }); } resolve({ data: mockAdvertisers, error: null }); })]; }); }); }, updateAdvertiser: function (token, id, profile) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } var index = mockAdvertisers.findIndex(function (e) { return e.id == id; }); var advertiser = mockAdvertisers[index]; var newUser = mockUsers.filter(function (e) { return profile.users.includes(e.id); }); mockAdvertisers[index] = utils_1.assignObject(mockAdvertisers[index], { name: profile.name || advertiser.name, brand: profile.brand || advertiser.brand, users: newUser || advertiser.users }); if (profile.users) { mockUsers = mockUsers.map(function (e) { var existAdvIndex = e.advertisers.findIndex(function (e) { return e.id == id; }); var isExist = existAdvIndex !== -1; if (profile.users.includes(e.id) && isExist) return e; if (!profile.users.includes(e.id) && !isExist) return e; // add advertiser to user if (profile.users.includes(e.id) && !isExist) { e.advertisers.push(R.pick(['name', 'brand', 'id'], mockAdvertisers[index])); return e; } // remove advertiser from user if (!profile.users.includes(e.id) && isExist) { e.advertisers.splice(existAdvIndex, 1); return e; } }); } if (profile.brand) { mockBrands = mockBrands.map(function (e) { var existAdvIndex = e.advertisers.findIndex(function (e) { return e.id == id; }); var isExist = existAdvIndex !== -1; if (profile.brand == e.id && isExist) return e; if (profile.brand != e.id && !isExist) return e; //add advertiser from brand if (profile.brand == e.id && !isExist) { e.advertisers.push(R.pick(['name', 'brand', 'id'], mockAdvertisers[index])); return e; } // remove advertiser from brand if (profile.brand != e.id && isExist) { e.advertisers.splice(existAdvIndex, 1); return e; } }); } resolve({ data: mockAdvertisers[index], error: null }); })]; }); }); }, deleteAdvertiser: function (token, id) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve) { if (token != 'strapi_mock_token') { resolve({ data: null, error: "Invalid token" }); } try { // delete advertiser var advertiser_1 = mockAdvertisers.find(function (e) { return e.id == id; }); var index = mockAdvertisers.indexOf(advertiser_1); mockAdvertisers.splice(index, 1); // remove advertiser from users var userIds_1 = advertiser_1.users.map(function (e) { return e.id; }); mockUsers = mockUsers.map(function (e) { if (!userIds_1.includes(e.id)) return e; var advIdx = e.advertisers.findIndex(function (e) { return e.id == advertiser_1.id; }); e.advertisers.splice(advIdx, 1); return e; }); // remove advertiser from brand mockBrands = mockBrands.map(function (e) { if (advertiser_1.brand != e.id) return e; var advIdx = e.advertisers.findIndex(function (e) { return e.id == advertiser_1.id; }); e.advertisers.splice(advIdx, 1); return e; }); } catch (err) { resolve({ data: null, error: err }); } resolve({ data: true, error: null }); })]; }); }); }, }; } exports.default = mockStrapiClientTool;