UNPKG

realm-object-server

Version:

Realm Object Server

112 lines 5.45 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const chai_1 = require("chai"); const chai = require("chai"); chai.use(require("chai-as-promised")); const sinon = require("sinon"); const path = require("path"); const superagent = require("superagent"); const superagentMock = require("superagent-mock"); const CloudkitAuthProvider_1 = require("./CloudkitAuthProvider"); const errors = require("../../errors"); const TestServer_1 = require("../../TestServer"); describe("CloudkitAuthProvider", () => { let provider; let signedRequestSpy; let server; let mock; const validUserIds = ["_bc5eca430b7597a64745b454b002faf7", "_bc5eca430b7597a64745b454b002faf8"]; before(() => { mock = superagentMock(superagent, [{ pattern: "https://api.apple-cloudkit.com(.*)", post: function (match, data) { return { code: 200, body: data, }; }, fixtures: function (match, params, headers, context) { if (match[1] === "/database/1/iCloud.io.realm.realmtasks.ios/development/public/users/discover") { const paramsData = JSON.parse(params); const userRecordName = paramsData.lookupInfos[0].userRecordName; if (validUserIds.indexOf(userRecordName) === -1) { const err = new Error(); err.response = { body: { reason: "No valid user ids to lookup", } }; throw err; } return { users: [{ lookupInfo: { userRecordName } }] }; } }, }]); }); after(() => { mock.unset(); }); before(() => __awaiter(this, void 0, void 0, function* () { server = new TestServer_1.TestServer(); provider = new CloudkitAuthProvider_1.CloudkitAuthProvider({ container: "iCloud.io.realm.realmtasks.ios", keyId: "94938c4a9cf6770491bafea8dcf252f9712b748479d8ad6c84344186746accfb", privateKeyPath: path.join(__dirname, "..", "..", "..", "fixtures", "cloudkit_eckey.pem"), environment: "development" }); signedRequestSpy = sinon.spy(provider, "signedRequest"); yield server.start({ authProviders: [provider] }); })); after(() => __awaiter(this, void 0, void 0, function* () { if (server) { yield server.shutdown(); } })); describe("authenticateOrCreateUser", () => { describe("without data param", () => { it("should return a MissingParameters exception", () => __awaiter(this, void 0, void 0, function* () { yield chai_1.assert.isRejected(provider.authenticateOrCreateUser({}), errors.realm.MissingParameters); })); }); describe("with invalid user record name", () => { it("should return an InvalidCredentials exception", () => __awaiter(this, void 0, void 0, function* () { yield chai_1.assert.isRejected(provider.authenticateOrCreateUser({ data: "isInvalid" }), errors.realm.InvalidCredentials); })); }); describe("on first request", () => { it("should return a user", () => __awaiter(this, void 0, void 0, function* () { signedRequestSpy.resetHistory(); const user = yield chai_1.assert.isFulfilled(provider.authenticateOrCreateUser({ data: validUserIds[0] })); chai_1.assert.isTrue(user.created); chai_1.assert.isDefined(user.userId); chai_1.assert.isFalse(user.isAdmin); chai_1.assert.equal(user.accounts[0].provider, "cloudkit"); chai_1.assert.equal(user.accounts[0].providerId, validUserIds[0]); sinon.assert.calledOnce(signedRequestSpy); })); }); describe("on subsequent requests", () => { it("should return a user", () => __awaiter(this, void 0, void 0, function* () { yield chai_1.assert.isFulfilled(provider.authenticateOrCreateUser({ data: validUserIds[1] })); signedRequestSpy.resetHistory(); yield chai_1.assert.isFulfilled(provider.authenticateOrCreateUser({ data: validUserIds[1] })); sinon.assert.notCalled(signedRequestSpy); })); }); }); }); //# sourceMappingURL=CloudkitAuthProvider.spec.js.map