diff --git a/src/api/v1/mcaptcha/levels.rs b/src/api/v1/mcaptcha/levels.rs index 8a2b4666..2ffb2af5 100644 --- a/src/api/v1/mcaptcha/levels.rs +++ b/src/api/v1/mcaptcha/levels.rs @@ -90,8 +90,8 @@ pub fn services(cfg: &mut web::ServiceConfig) { ); } -// TODO try for non-existent token names - +// TODO redo mcaptcha table to include levels as json field +// so that the whole thing can be added/udpaed in a single stroke async fn add_levels( payload: web::Json, data: web::Data, diff --git a/templates/auth/login/ts/index.ts b/templates/auth/login/ts/index.ts index 237faf81..806a98c4 100644 --- a/templates/auth/login/ts/index.ts +++ b/templates/auth/login/ts/index.ts @@ -47,7 +47,7 @@ const login = async (e: Event) => { password, }; - const formUrl = getFormUrl(null); + const formUrl = getFormUrl(); const res = await fetch(formUrl, genJsonPayload(payload)); if (res.ok) { diff --git a/templates/auth/register/ts/index.ts b/templates/auth/register/ts/index.ts index c24d2e4b..9af41422 100644 --- a/templates/auth/register/ts/index.ts +++ b/templates/auth/register/ts/index.ts @@ -67,7 +67,7 @@ const registerUser = async (e: Event) => { confirm_password: passwordCheck, email, }; - const formUrl = getFormUrl(null); + const formUrl = getFormUrl(); const res = await fetch(formUrl, genJsonPayload(payload)); if (res.ok) { diff --git a/templates/panel/sitekey/add/ts/addLevelButton.ts b/templates/panel/sitekey/add/ts/addLevelButton.ts index e4e1b5ee..958f9578 100644 --- a/templates/panel/sitekey/add/ts/addLevelButton.ts +++ b/templates/panel/sitekey/add/ts/addLevelButton.ts @@ -24,7 +24,6 @@ import { } from './removeLevelButton'; import CONST from './const'; -const ADD_LEVEL_BUTTON = 'sitekey-form__level-add-level-button'; /** * Gets executed when 'Add' Button is clicked to add levels @@ -60,8 +59,8 @@ const addLevel = (e: Event) => { /** adds onclick event listener */ const addLevelButtonAddEventListener = () => { - let addLevelButton = ( - document.querySelector(`.${ADD_LEVEL_BUTTON}`) + const addLevelButton = ( + document.querySelector(`.${CONST.ADD_LEVEL_BUTTON}`) ); addLevelButton.addEventListener('click', addLevel); }; diff --git a/templates/panel/sitekey/add/ts/const.ts b/templates/panel/sitekey/add/ts/const.ts index ccdde758..726fb834 100644 --- a/templates/panel/sitekey/add/ts/const.ts +++ b/templates/panel/sitekey/add/ts/const.ts @@ -31,6 +31,8 @@ const LEGEND_CLASS = 'sitekey__level-title'; const REMOVE_LEVEL_BUTTON_ID_WITHOUT_LEVEL = 'remove-level'; const REMOVE_LEVEL_LABEL_TEXT = "Remove Level"; +const ADD_LEVEL_BUTTON = 'sitekey-form__level-add-level-button'; + const CONST = { LABEL_CLASS, INPUT_ID_WITHOUT_LEVEL, @@ -43,6 +45,7 @@ const CONST = { LEGEND_CLASS, REMOVE_LEVEL_BUTTON_ID_WITHOUT_LEVEL, REMOVE_LEVEL_LABEL_TEXT, + ADD_LEVEL_BUTTON, }; export default CONST; diff --git a/templates/panel/sitekey/add/ts/levels/getLevelFields.test.ts b/templates/panel/sitekey/add/ts/levels/getLevelFields.test.ts new file mode 100644 index 00000000..025abdf3 --- /dev/null +++ b/templates/panel/sitekey/add/ts/levels/getLevelFields.test.ts @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import getLevelFields from './getLevelFields'; +import {getAddForm, addLevel} from '../setupTests'; +import {Level} from './index'; +//import CONST from '../const'; + +document.body.innerHTML = getAddForm(); + +const level1: Level = { + difficulty_factor: 200, + visitor_threshold: 500, +}; + +const level2: Level = { + difficulty_factor: 400, + visitor_threshold: 700, +}; + +it('get levels fields works', () => { + addLevel(level1.visitor_threshold, level1.difficulty_factor); + console.log(document.body.innerHTML); + expect(getLevelFields(1)).toEqual(level1); + + addLevel(level2.visitor_threshold, level2.difficulty_factor); + expect(getLevelFields(2)).toEqual(level2); +}); diff --git a/templates/panel/sitekey/add/ts/levels/getLevelFields.ts b/templates/panel/sitekey/add/ts/levels/getLevelFields.ts index f92c4cd7..4158ccf1 100644 --- a/templates/panel/sitekey/add/ts/levels/getLevelFields.ts +++ b/templates/panel/sitekey/add/ts/levels/getLevelFields.ts @@ -18,8 +18,6 @@ import {Level} from './index'; import CONST from '../const'; -import isNumber from '../../../../../utils/isNumber'; - /** Fetches level from DOM using the ID passesd and validates */ const getLevelFields = (id: number) => { console.log(`[getLevelFields]: id: ${id}`); diff --git a/templates/panel/sitekey/add/ts/levels/getNumLevels.test.ts b/templates/panel/sitekey/add/ts/levels/getNumLevels.test.ts new file mode 100644 index 00000000..97173651 --- /dev/null +++ b/templates/panel/sitekey/add/ts/levels/getNumLevels.test.ts @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import getNumLevels from './getNumLevels'; +import {getAddForm, addLevel} from '../setupTests'; +//import CONST from '../const'; + +document.body.innerHTML = getAddForm(); + +it('get num levels works', () => { + expect(getNumLevels()).toBe(1); + addLevel(2, 4); + expect(getNumLevels()).toBe(2); + addLevel(4, 9); + expect(getNumLevels()).toBe(3); +}); diff --git a/templates/panel/sitekey/add/ts/levels/getNumLevels.ts b/templates/panel/sitekey/add/ts/levels/getNumLevels.ts index b42d2170..25fb2180 100644 --- a/templates/panel/sitekey/add/ts/levels/getNumLevels.ts +++ b/templates/panel/sitekey/add/ts/levels/getNumLevels.ts @@ -17,11 +17,16 @@ import CONST from '../const'; +import {mockAlert} from '../../../../../setUpTests'; + +mockAlert(); /** returns number of level input fields currently in DOM */ const getNumLevels = () => { let numLevels = 0; - document.querySelectorAll(`.${CONST.LEVEL_CONTAINER_CLASS}`).forEach(_ => numLevels++); + document + .querySelectorAll(`.${CONST.LEVEL_CONTAINER_CLASS}`) + .forEach(_ => numLevels++); console.debug(`[getNumLevels]: numLevels: ${numLevels}`); return numLevels; }; diff --git a/templates/panel/sitekey/add/ts/setupTests.ts b/templates/panel/sitekey/add/ts/setupTests.ts new file mode 100644 index 00000000..3c1bbf99 --- /dev/null +++ b/templates/panel/sitekey/add/ts/setupTests.ts @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +import getNumLevels from './levels/getNumLevels'; +import CONST from './const'; +import addLevelButtonAddEventListener from './addLevelButton'; + +export const getAddForm = () => ` +
+

+ Add Sitekey +

+ + + + +
+ + Level 1 + + + + + +
+ + +
+`; + +/** add level to DOM by filling add level form */ +export const addLevel = (visitor: number, diff: number) => { + addLevelButtonAddEventListener(); + + const level = getNumLevels(); + const visitorField = ( + document.getElementById(`${CONST.VISITOR_WITHOUT_LEVEL}${level}`) + ); + visitorField.value = visitor.toString(); + + const diffField = ( + document.getElementById(`${CONST.DIFFICULTY_WITHOUT_LEVEL}${level}`) + ); + diffField.value = diff.toString(); + + const addLevelButton = ( + document.querySelector(`.${CONST.ADD_LEVEL_BUTTON}`) + ); + + addLevelButton.click(); +};