realm-object-server
Version:
99 lines • 4.49 kB
JavaScript
;
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 NicknameAuthProvider_1 = require("./NicknameAuthProvider");
const TestServer_1 = require("../../TestServer");
const errors = require("../../errors");
const uuid = require("uuid");
describe("NicknameAuthProvider", () => {
let provider;
let server;
before(() => __awaiter(this, void 0, void 0, function* () {
server = new TestServer_1.TestServer();
provider = new NicknameAuthProvider_1.NicknameAuthProvider();
yield server.start({
authProviders: [provider]
});
}));
after(() => __awaiter(this, void 0, void 0, function* () {
if (server) {
yield server.shutdown();
}
}));
describe("when nickname provided", () => {
it("logs a user in", () => __awaiter(this, void 0, void 0, function* () {
const user = yield provider.authenticateOrCreateUser({
data: "foo"
});
chai_1.assert.isDefined(user);
chai_1.assert.isTrue(user.created);
chai_1.assert.isFalse(user.isAdmin);
chai_1.assert.isDefined(user.userId);
chai_1.assert.equal(user.accounts[0].provider, "nickname");
chai_1.assert.isDefined(user.accounts[0].providerId);
}));
it("logs the same user every time", () => __awaiter(this, void 0, void 0, function* () {
const first = yield provider.authenticateOrCreateUser({
data: "bar"
});
chai_1.assert.isDefined(first);
chai_1.assert.isTrue(first.created);
const second = yield provider.authenticateOrCreateUser({
data: "bar"
});
chai_1.assert.isFalse(second.created);
chai_1.assert.equal(second.userId, first.userId);
}));
describe('when nickname is "admin"', () => {
it("logs an admin user", () => __awaiter(this, void 0, void 0, function* () {
const user = yield provider.authenticateOrCreateUser({
data: "admin"
});
chai_1.assert.isFalse(user.isAdmin);
}));
});
describe("admin tests", () => {
it("when is_admin is requested, is logged in as a regular user", () => __awaiter(this, void 0, void 0, function* () {
const nickname = uuid.v4();
const user = (yield chai_1.assert.isFulfilled(provider.authenticateOrCreateUser({
data: nickname,
user_info: {
is_admin: true
}
})));
chai_1.assert.isFalse(user.isAdmin);
}));
it("cannot be promoted to admin", () => __awaiter(this, void 0, void 0, function* () {
const nickname = uuid.v4();
let user = yield provider.authenticateOrCreateUser({
data: nickname
});
chai_1.assert.isTrue(user.created);
chai_1.assert.isFalse(user.isAdmin);
user = (yield chai_1.assert.isFulfilled(provider.authenticateOrCreateUser({
data: nickname,
user_info: {
is_admin: true
}
})));
chai_1.assert.isFalse(user.isAdmin);
}));
});
});
describe("when nickname not provided", () => {
it("throws an error", () => __awaiter(this, void 0, void 0, function* () {
yield chai_1.assert.isRejected(provider.authenticateOrCreateUser({}), errors.realm.MissingParameters);
}));
});
});
//# sourceMappingURL=NicknameAuthProvider.spec.js.map