taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 8fd86e0a9adcfffb2b810d0a2974d30feeb5afb9
parent 6eaeb20812144000f10631d26c39c6f5feee0ca0
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Wed, 11 Feb 2026 18:50:49 -0300

better name for the test

Diffstat:
Mpackages/taler-harness/src/harness/environments.ts | 3+++
Mpackages/taler-harness/src/harness/harness.ts | 25+++++++++++++------------
Mpackages/taler-harness/src/integrationtests/testrunner.ts | 4++--
Apackages/taler-harness/src/integrationtests/web/test-merchant-login.ts | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dpackages/taler-harness/src/integrationtests/web/test-merchant-self-provision-activation.ts | 105-------------------------------------------------------------------------------
5 files changed, 83 insertions(+), 119 deletions(-)

diff --git a/packages/taler-harness/src/harness/environments.ts b/packages/taler-harness/src/harness/environments.ts @@ -520,7 +520,10 @@ export function createBrowser(t: GlobalTestState) { case "chrome": { const chromeOpts = new Chrome.Options(); + // https://peter.sh/experiments/chromium-command-line-switches chromeOpts.addArguments("--no-sandbox", "-headless"); + // chromeOpts.addArguments("--no-sandbox", "--headless","--no-startup-window"); + chromeOpts.addArguments(`--incognito`); const driver = new Builder() .forBrowser(Browser.CHROME) diff --git a/packages/taler-harness/src/harness/harness.ts b/packages/taler-harness/src/harness/harness.ts @@ -2029,14 +2029,11 @@ export class BrowserService { } async start(): Promise<void> { + const profileDir = path.join(this.globalState.testDir, "browser-profile"); + fs.mkdirSync(profileDir); + switch (this.type) { case "firefox": { - const profileDir = path.join( - this.globalState.testDir, - "browser-profile", - ); - fs.mkdirSync(profileDir); - this.driver = this.globalState.spawnService( "geckodriver", [ @@ -2050,9 +2047,11 @@ export class BrowserService { profileDir, ], `web-browser`, - process.env.BROWSER_PATH ? { - PATH : process.env.BROWSER_PATH - } : undefined + process.env.BROWSER_PATH + ? { + PATH: process.env.BROWSER_PATH, + } + : undefined, ); break; } @@ -2067,9 +2066,11 @@ export class BrowserService { `--log-path=${this.globalState.testDir}/browser.log`, ], `web-browser`, - process.env.BROWSER_PATH ? { - PATH : process.env.BROWSER_PATH - } : undefined + process.env.BROWSER_PATH + ? { + PATH: process.env.BROWSER_PATH, + } + : undefined, ); break; } diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts @@ -217,7 +217,7 @@ import { runWithdrawalIdempotentTest } from "./test-withdrawal-idempotent.js"; import { runWithdrawalManualTest } from "./test-withdrawal-manual.js"; import { runWithdrawalPrepareTest } from "./test-withdrawal-prepare.js"; import { runMerchantBankBadWireTargetTest } from "./test-merchant-bank-bad-wire-target.js"; -import { runWebMerchantSelfProvisionActivationTest } from "./web/test-merchant-self-provision-activation.js"; +import { runWebMerchantLoginTest } from "./web/test-merchant-login.js"; /** * Test runner. @@ -336,7 +336,7 @@ const allTests: TestMainFunction[] = [ runExchangeMasterPubChangeTest, runMerchantCategoriesTest, runMerchantSelfProvisionActivationTest, - runWebMerchantSelfProvisionActivationTest, + runWebMerchantLoginTest, runMerchantSelfProvisionActivationAndLoginTest, runMerchantSelfProvisionForgotPasswordTest, runMerchantSelfProvisionInactiveAccountPermissionsTest, diff --git a/packages/taler-harness/src/integrationtests/web/test-merchant-login.ts b/packages/taler-harness/src/integrationtests/web/test-merchant-login.ts @@ -0,0 +1,65 @@ +/* + This file is part of GNU Taler + (C) 2021 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * Imports. + */ +import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js"; +import { By } from "selenium-webdriver"; +import { + GlobalTestState, + MERCHANT_DEFAULT_AUTH, +} from "../../harness/harness.js"; + +/** + * Do basic checks on instance management and authentication. + */ +export async function runWebMerchantLoginTest(t: GlobalTestState) { + // Set up test environment + + const { merchant, createBrowser } = + await createSimpleTestkudosEnvironmentV3(t); + + const browser = await createBrowser({}); + + await browser.get(merchant.makeInstanceBaseUrl()); + + const title = await browser.getTitle(); + + t.assertDeepEqual("GNU Taler Merchant Backoffice", title); + + await browser.manage().setTimeouts({ implicit: 2000 }); + + const form = await browser.findElement(By.css("form")); + const username = await form.findElement(By.css("input[name=username]")); + const password = await form.findElement(By.css("input[name=token]")); + const submit = await form.findElement(By.css("button[type=submit]")); + await browser.sleep(100); + + const inferedUsername = await username.getAttribute("value") + t.assertTrue(inferedUsername === "admin"); + await password.sendKeys(MERCHANT_DEFAULT_AUTH.password); + await submit.click(); + + await browser.sleep(100); + + const nousername = await browser.findElement(By.css("aside")); + t.assertTrue(nousername !== undefined); + + await browser.quit(); +} + +runWebMerchantLoginTest.suites = ["web", "merchant"]; diff --git a/packages/taler-harness/src/integrationtests/web/test-merchant-self-provision-activation.ts b/packages/taler-harness/src/integrationtests/web/test-merchant-self-provision-activation.ts @@ -1,105 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2021 Taler Systems S.A. - - GNU Taler is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - GNU Taler 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 General Public License for more details. - - You should have received a copy of the GNU General Public License along with - GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> - */ - -/** - * Imports. - */ -import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js"; -import { startTanHelper } from "harness/tan-helper.js"; -import { randomBytes } from "node:crypto"; -import { chmodSync, writeFileSync } from "node:fs"; -import { By } from "selenium-webdriver"; -import { GlobalTestState, MERCHANT_DEFAULT_AUTH } from "../../harness/harness.js"; - -/** - * Do basic checks on instance management and authentication. - */ -export async function runWebMerchantSelfProvisionActivationTest( - t: GlobalTestState, -) { - // Set up test environment - - // FIXME: maybe merchant can use commands? - const RND = randomBytes(10).toString("hex"); - const socketFile = `${t.testDir}/tan-helper-${RND}.socket`; - const helperScript = `${t.testDir}/harness-helper-${RND}.sh`; - writeFileSync( - helperScript, - `#!/bin/bash -taler-harness run-helper --socket ${socketFile} -- $@ -`, - ); - chmodSync(helperScript, "777"); - - const { - walletClient, - bankClient, - exchange, - merchant, - bank, - merchantAdminAccessToken, - createBrowser - } = await createSimpleTestkudosEnvironmentV3(t, undefined, { - additionalMerchantConfig(m) { - m.modifyConfig(async (cfg) => { - cfg.setString("merchant", "ENABLE_SELF_PROVISIONING", "yes"); - cfg.setString("merchant", "HELPER_SMS", helperScript); - cfg.setString("merchant", "HELPER_EMAIL", helperScript); - cfg.setString("merchant", "MANDATORY_TAN_CHANNELS", "email sms"); - }); - }, - }); - const helper = await startTanHelper({ socketFile }); - - const browser = await createBrowser({}) - - await browser.get(merchant.makeInstanceBaseUrl()); - - const title = await browser.getTitle(); - - t.assertDeepEqual("GNU Taler Merchant Backoffice", title); - - await browser.manage().setTimeouts({ implicit: 2000, }); - - // const noAsideWhenLogout = await browser.findElement(By.css('aside')) - // t.assertDeepEqual(noAsideWhenLogout, undefined) - - // browser.manage() - const form = await browser.findElement(By.css('form')) - const username = await form.findElement(By.css("input[name=username]")); - const password = await form.findElement(By.css("input[name=token]")); - const submit = await form.findElement(By.css('button[type=submit]')); - - await username.sendKeys("admin"); - await password.sendKeys(MERCHANT_DEFAULT_AUTH.password); - await submit.click(); - - await browser.sleep(100) - - const nousername = await browser.findElement(By.css("aside")); - t.assertTrue(nousername !== undefined) - - await browser.quit(); - - - helper.stop(); -} - -runWebMerchantSelfProvisionActivationTest.suites = [ - "web", - "merchant", - "self-provision", -];