chore: otp starting

This commit is contained in:
Stefan Benz
2024-11-15 09:29:48 +01:00
parent 726d97ffa0
commit d79ee0f19e
2 changed files with 67 additions and 0 deletions

31
acceptance/tests/otp.ts Normal file
View File

@@ -0,0 +1,31 @@
import * as http from "node:http";
let messages = new Map<string, any>();
export function startSink() {
const hostname = "127.0.0.1"
const port = 3030
const server = http.createServer((req, res) => {
console.log("Sink received message: ")
let body = '';
req.on('data', (chunk) => {
body += chunk;
});
req.on('end', () => {
console.log(body);
const data = JSON.parse(body)
messages.set(data.contextInfo.recipientEmailAddress, data.args.code)
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.write('OK');
res.end();
});
});
server.listen(port, hostname, () => {
console.log(`Sink running at http://${hostname}:${port}/`);
});
return server
}

View File

@@ -0,0 +1,36 @@
import {test as base} from "@playwright/test";
import {OtpType, PasswordUserWithOTP} from './user';
import path from 'path';
import dotenv from 'dotenv';
import {loginScreenExpect, loginWithPassword} from "./login";
import {startSink} from "./otp";
// Read from ".env" file.
dotenv.config({path: path.resolve(__dirname, '.env.local')});
const test = base.extend<{ user: PasswordUserWithOTP }>({
user: async ({page}, use) => {
const user = new PasswordUserWithOTP({
email: "otp_sms@example.com",
firstName: "first",
lastName: "last",
password: "Password1!",
organization: "",
type: OtpType.sms,
});
await user.ensure(page);
await use(user);
},
});
test("username, password and otp login", async ({user, page}) => {
const server = startSink()
await loginWithPassword(page, user.getUsername(), user.getPassword())
await loginScreenExpect(page, user.getFullName());
server.close()
});