mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
d8ff186303
Client and server now have their own tsconfig so that the transpilation is only done on the part that is being modified. It also allows faster transpilation since tests are now excluded from tsconfig. They are compiled by ts-node during unit tests execution.
105 lines
3.5 KiB
TypeScript
105 lines
3.5 KiB
TypeScript
import Assert = require("assert");
|
|
import Sinon = require("sinon");
|
|
import MongoDB = require("mongodb");
|
|
import BluebirdPromise = require("bluebird");
|
|
import { MongoClientStub } from "../../mocks/connectors/mongo/MongoClientStub";
|
|
import { MongoCollection } from "../../../src/lib/storage/mongo/MongoCollection";
|
|
|
|
describe("MongoCollection", function () {
|
|
let mongoCollectionStub: MongoDB.Collection<any>;
|
|
let findStub: Sinon.SinonStub;
|
|
let findOneStub: Sinon.SinonStub;
|
|
let insertStub: Sinon.SinonStub;
|
|
let updateStub: Sinon.SinonStub;
|
|
let removeStub: Sinon.SinonStub;
|
|
let countStub: Sinon.SinonStub;
|
|
|
|
before(function () {
|
|
const Collection = require("mongodb").Collection;
|
|
mongoCollectionStub = Sinon.createStubInstance(Collection);
|
|
findStub = mongoCollectionStub.find as Sinon.SinonStub;
|
|
findOneStub = mongoCollectionStub.findOne as Sinon.SinonStub;
|
|
insertStub = mongoCollectionStub.insert as Sinon.SinonStub;
|
|
updateStub = mongoCollectionStub.update as Sinon.SinonStub;
|
|
removeStub = mongoCollectionStub.remove as Sinon.SinonStub;
|
|
countStub = mongoCollectionStub.count as Sinon.SinonStub;
|
|
});
|
|
|
|
describe("find", function () {
|
|
it("should find a document in the collection", function () {
|
|
const collection = new MongoCollection(mongoCollectionStub);
|
|
findStub.returns({
|
|
sort: Sinon.stub().returns({
|
|
limit: Sinon.stub().returns({
|
|
toArray: Sinon.stub().yields(undefined, [])
|
|
})
|
|
})
|
|
});
|
|
|
|
return collection.find({ key: "KEY" })
|
|
.then(function () {
|
|
Assert(findStub.calledWith({ key: "KEY" }));
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("findOne", function () {
|
|
it("should find one document in the collection", function () {
|
|
const collection = new MongoCollection(mongoCollectionStub);
|
|
findOneStub.yields(undefined, {});
|
|
|
|
return collection.findOne({ key: "KEY" })
|
|
.then(function () {
|
|
Assert(findOneStub.calledWith({ key: "KEY" }));
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("insert", function () {
|
|
it("should insert a document in the collection", function () {
|
|
const collection = new MongoCollection(mongoCollectionStub);
|
|
insertStub.yields(undefined, {});
|
|
|
|
return collection.insert({ key: "KEY" })
|
|
.then(function () {
|
|
Assert(insertStub.calledWith({ key: "KEY" }));
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("update", function () {
|
|
it("should update a document in the collection", function () {
|
|
const collection = new MongoCollection(mongoCollectionStub);
|
|
updateStub.yields(undefined, {});
|
|
|
|
return collection.update({ key: "KEY" }, { key: "KEY", value: 1 })
|
|
.then(function () {
|
|
Assert(updateStub.calledWith({ key: "KEY" }, { key: "KEY", value: 1 }));
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("remove", function () {
|
|
it("should remove a document in the collection", function () {
|
|
const collection = new MongoCollection(mongoCollectionStub);
|
|
removeStub.yields(undefined, {});
|
|
|
|
return collection.remove({ key: "KEY" })
|
|
.then(function () {
|
|
Assert(removeStub.calledWith({ key: "KEY" }));
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("count", function () {
|
|
it("should count documents in the collection", function () {
|
|
const collection = new MongoCollection(mongoCollectionStub);
|
|
countStub.yields(undefined, {});
|
|
|
|
return collection.count({ key: "KEY" })
|
|
.then(function () {
|
|
Assert(countStub.calledWith({ key: "KEY" }));
|
|
});
|
|
});
|
|
});
|
|
}); |