Merge branch 'master' into feature/totp-generator

This commit is contained in:
enxoco
2023-08-25 21:58:11 -04:00
committed by GitHub
8 changed files with 683 additions and 53 deletions

View File

@ -1,11 +1,8 @@
import "./style.css";
import {setupTokenList} from './tokens'
import { tokenList } from "./tokenList";
document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
<div>
<form id="tokens">
</form>
</div>
${tokenList()}
`;
setupTokenList(document.querySelector<HTMLDivElement>("#tokens")!);
// setupTokenList(document.querySelector<HTMLDivElement>("#tokens")!);

14
src/token.test.ts Normal file
View File

@ -0,0 +1,14 @@
// @vitest-environment jsdom
import { assert, expect, test } from 'vitest'
import {displayToken} from './token'
test('a 6 digit token is displayed', () => {
const token = displayToken('ABCDEFGHIJKLMNOP')
expect(token.length).toBe(6)
})
test('displayed totp token is numeric only', () => {
const token = displayToken('ABCDEFGHIJKLMNOP')
expect(isNaN(+token)).toBeFalsy()
})

View File

@ -1,23 +1,11 @@
import { tokens } from "./tokens";
import totp from 'totp-generator'
const period = 30
const digits = 6
let tokenListHtml: HTMLDivElement = document.createElement("div");
function displayTokenListItem(account: string, secret: string) {
tokenListHtml.innerHTML += `<div class="fieldset-wrapper">
<fieldset>
<label>Account</label>
<p>${account}</p>
</fieldset>
<fieldset>
<label>Code</label>
<p>${secret}</p>
</fieldset>
</div>`;
}
tokens.map((token) => {
displayTokenListItem(token.account, token.secret);
});
export function setupTokenList(element: HTMLDivElement) {
element.innerHTML = `<div class="fieldset-wrapper">`;
element.appendChild(tokenListHtml);
element.append("</div>");
export function displayToken(secret) {
const token = totp(secret.replace(/ /g, '').trim(), {
digits,
period,
})
return `${token}`
}

9
src/tokenList.test.ts Normal file
View File

@ -0,0 +1,9 @@
// @vitest-environment jsdom
import { expect, test } from 'vitest'
import { tokenList } from './tokenList'
const tokenListElement = tokenList();
test('displays an empty list', () => {
expect(tokenListElement).toBeDefined()
})