54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import { Client, ReqResponse, SessionId } from "./client";
|
|
|
|
class MockClient implements Client {
|
|
users: { [_: string]: string }
|
|
|
|
constructor() {
|
|
this.users = { 'vakarian': 'aoeu', 'shephard': 'aoeu' }
|
|
}
|
|
|
|
async auth(username: string, password: string): Promise<ReqResponse<SessionId>> {
|
|
if (this.users[username] == password) {
|
|
if (username == 'shephard') {
|
|
return { type: 'password-reset' }
|
|
}
|
|
return { type: "ok", content: "auth-successful" }
|
|
} else {
|
|
return { type: "error", content: 401 }
|
|
}
|
|
}
|
|
}
|
|
|
|
describe("what happens in an authentication", () => {
|
|
it("handles a successful response", async () => {
|
|
let client = new MockClient()
|
|
let response = await client.auth("vakarian", "aoeu")
|
|
expect(response).toEqual({ type: "ok", content: "auth-successful" })
|
|
})
|
|
|
|
it("handles an authentication failure", async () => {
|
|
let client = new MockClient();
|
|
{
|
|
let response = await client.auth("vakarian", "")
|
|
expect(response).toEqual({ type: "error", content: 401 });
|
|
}
|
|
|
|
{
|
|
let response = await client.auth("grunt", "")
|
|
expect(response).toEqual({ type: "error", content: 401 });
|
|
}
|
|
})
|
|
|
|
it("handles a password-reset condition", async () => {
|
|
let client = new MockClient();
|
|
{
|
|
let response = await client.auth("shephard", "aoeu")
|
|
expect(response).toEqual({ type: "password-reset" });
|
|
}
|
|
{
|
|
let response = await client.auth("shephard", "")
|
|
expect(response).toEqual({ type: "error", content: 401 });
|
|
}
|
|
})
|
|
})
|