diff options
Diffstat (limited to 'packages/auditor-backoffice-ui/src/context')
-rw-r--r-- | packages/auditor-backoffice-ui/src/context/backend.test.ts | 163 | ||||
-rw-r--r-- | packages/auditor-backoffice-ui/src/context/backend.ts | 60 | ||||
-rw-r--r-- | packages/auditor-backoffice-ui/src/context/config.ts | 11 | ||||
-rw-r--r-- | packages/auditor-backoffice-ui/src/context/entity.ts (renamed from packages/auditor-backoffice-ui/src/context/instance.ts) | 31 |
4 files changed, 55 insertions, 210 deletions
diff --git a/packages/auditor-backoffice-ui/src/context/backend.test.ts b/packages/auditor-backoffice-ui/src/context/backend.test.ts deleted file mode 100644 index 359859819..000000000 --- a/packages/auditor-backoffice-ui/src/context/backend.test.ts +++ /dev/null @@ -1,163 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2021-2023 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/> - */ - -/** - * - * @author Sebastian Javier Marchano (sebasjm) - */ - -import * as tests from "@gnu-taler/web-util/testing"; -import { ComponentChildren, h, VNode } from "preact"; -import { AccessToken, MerchantBackend } from "../declaration.js"; -import { - useAdminAPI, - useInstanceAPI, - useManagementAPI, -} from "../hooks/instance.js"; -import { expect } from "chai"; -import { ApiMockEnvironment } from "../hooks/testing.js"; -import { - API_CREATE_INSTANCE, - API_NEW_LOGIN, - API_UPDATE_CURRENT_INSTANCE_AUTH, - API_UPDATE_INSTANCE_AUTH_BY_ID, -} from "../hooks/urls.js"; - -interface TestingContextProps { - children?: ComponentChildren; -} - -describe("backend context api ", () => { - it("should use new token after updating the instance token in the settings as user", async () => { - const env = new ApiMockEnvironment(); - - const hookBehavior = await tests.hookBehaveLikeThis( - () => { - const instance = useInstanceAPI(); - const management = useManagementAPI("default"); - const admin = useAdminAPI(); - - return { instance, management, admin }; - }, - {}, - [ - ({ instance, management, admin }) => { - env.addRequestExpectation(API_UPDATE_INSTANCE_AUTH_BY_ID("default"), { - request: { - method: "token", - token: "another_token", - }, - response: { - name: "instance_name", - } as MerchantBackend.Instances.QueryInstancesResponse, - }); - env.addRequestExpectation(API_NEW_LOGIN, { - auth: "another_token", - request: { - scope: "write", - duration: { - "d_us": "forever", - }, - refreshable: true, - }, - - }); - - management.setNewAccessToken(undefined,"another_token" as AccessToken); - }, - ({ instance, management, admin }) => { - expect(env.assertJustExpectedRequestWereMade()).deep.eq({ - result: "ok", - }); - - env.addRequestExpectation(API_CREATE_INSTANCE, { - // auth: "another_token", - request: { - id: "new_instance_id", - } as MerchantBackend.Instances.InstanceConfigurationMessage, - }); - - admin.createInstance({ - id: "new_instance_id", - } as MerchantBackend.Instances.InstanceConfigurationMessage); - }, - ], - env.buildTestingContext(), - ); - - expect(hookBehavior).deep.eq({ result: "ok" }); - expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" }); - }); - - it("should use new token after updating the instance token in the settings as admin", async () => { - const env = new ApiMockEnvironment(); - - const hookBehavior = await tests.hookBehaveLikeThis( - () => { - const instance = useInstanceAPI(); - const management = useManagementAPI("default"); - const admin = useAdminAPI(); - - return { instance, management, admin }; - }, - {}, - [ - ({ instance, management, admin }) => { - env.addRequestExpectation(API_UPDATE_CURRENT_INSTANCE_AUTH, { - request: { - method: "token", - token: "another_token", - }, - response: { - name: "instance_name", - } as MerchantBackend.Instances.QueryInstancesResponse, - }); - env.addRequestExpectation(API_NEW_LOGIN, { - auth: "another_token", - request: { - scope: "write", - duration: { - "d_us": "forever", - }, - refreshable: true, - }, - }); - instance.setNewAccessToken(undefined, "another_token" as AccessToken); - }, - ({ instance, management, admin }) => { - expect(env.assertJustExpectedRequestWereMade()).deep.eq({ - result: "ok", - }); - - env.addRequestExpectation(API_CREATE_INSTANCE, { - // auth: "another_token", - request: { - id: "new_instance_id", - } as MerchantBackend.Instances.InstanceConfigurationMessage, - }); - - admin.createInstance({ - id: "new_instance_id", - } as MerchantBackend.Instances.InstanceConfigurationMessage); - }, - ], - env.buildTestingContext(), - ); - - expect(hookBehavior).deep.eq({ result: "ok" }); - expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" }); - }); -}); diff --git a/packages/auditor-backoffice-ui/src/context/backend.ts b/packages/auditor-backoffice-ui/src/context/backend.ts index b13b92c42..ce321c3e6 100644 --- a/packages/auditor-backoffice-ui/src/context/backend.ts +++ b/packages/auditor-backoffice-ui/src/context/backend.ts @@ -17,54 +17,54 @@ /** * * @author Sebastian Javier Marchano (sebasjm) + * @author Nic Eigel */ -import { useMemoryStorage } from "@gnu-taler/web-util/browser"; import { createContext, h, VNode } from "preact"; import { useContext } from "preact/hooks"; -import { LoginToken } from "../declaration.js"; -import { useBackendDefaultToken, useBackendURL } from "../hooks/index.js"; +import { useBackendURL } from "../hooks/index.js"; interface BackendContextType { - url: string, - alreadyTriedLogin: boolean; - token?: LoginToken; - updateToken: (token: LoginToken | undefined) => void; + url: string, } const BackendContext = createContext<BackendContextType>({ - url: "", - alreadyTriedLogin: false, - token: undefined, - updateToken: () => null, + url: "", }); function useBackendContextState( - defaultUrl?: string, + defaultUrl?: string, ): BackendContextType { -const [url] = useBackendURL(defaultUrl); - //const url = "http://localhost:8081"; - const [token, updateToken] = useBackendDefaultToken(); - - return { - url, - token, - alreadyTriedLogin: token !== undefined, - updateToken, - }; + const [url] = useBackendURL(defaultUrl); + + return { + url, + }; } export const BackendContextProvider = ({ - children, - defaultUrl, -}: { - children: any; - defaultUrl?: string; + children, + defaultUrl, + }: { + children: any; + defaultUrl?: string; }): VNode => { - const value = useBackendContextState(defaultUrl); + const value = useBackendContextState(defaultUrl); - return h(BackendContext.Provider, { value, children }); + return h(BackendContext.Provider, { value, children }); }; + + export const useBackendContext = (): BackendContextType => - useContext(BackendContext); + useContext(BackendContext); + +interface BackendTokenType { + token: string; +} + +const BackendTokenContext = createContext<BackendTokenType>({} as any); + +export const BackendTokenContextProvider = BackendTokenContext.Provider; + +export const useBackendTokenContext = (): BackendTokenType => useContext(BackendTokenContext);
\ No newline at end of file diff --git a/packages/auditor-backoffice-ui/src/context/config.ts b/packages/auditor-backoffice-ui/src/context/config.ts index def45ea64..58ee5a594 100644 --- a/packages/auditor-backoffice-ui/src/context/config.ts +++ b/packages/auditor-backoffice-ui/src/context/config.ts @@ -1,6 +1,6 @@ /* This file is part of GNU Taler - (C) 2021-2024 Taler Systems S.A. + (C) 2021-2023 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 @@ -21,12 +21,9 @@ import { createContext } from "preact"; import { useContext } from "preact/hooks"; +import { AuditorBackend } from "../declaration.js"; -interface Type { - currency: string; - version: string; -} -const Context = createContext<Type>(null!); +const Context = createContext<AuditorBackend.VersionResponse>(null!); export const ConfigContextProvider = Context.Provider; -export const useConfigContext = (): Type => useContext(Context); +export const useConfigContext = (): AuditorBackend.VersionResponse => useContext(Context); diff --git a/packages/auditor-backoffice-ui/src/context/instance.ts b/packages/auditor-backoffice-ui/src/context/entity.ts index 5800ade7e..8181931c4 100644 --- a/packages/auditor-backoffice-ui/src/context/instance.ts +++ b/packages/auditor-backoffice-ui/src/context/entity.ts @@ -1,6 +1,6 @@ /* This file is part of GNU Taler - (C) 2021-2024 Taler Systems S.A. + (C) 2021-2023 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 @@ -17,20 +17,31 @@ /** * * @author Sebastian Javier Marchano (sebasjm) + * @author Nic Eigel */ import { createContext } from "preact"; import { useContext } from "preact/hooks"; -import { LoginToken } from "../declaration.js"; -interface Type { - id: string; - token?: LoginToken; - admin?: boolean; - changeToken: (t?: LoginToken) => void; +interface EntityType { + title: string; + path: string; + endpoint: string; + entity: any; } -const Context = createContext<Type>({} as any); +const EntityContext = createContext<EntityType>({} as any); -export const InstanceContextProvider = Context.Provider; -export const useInstanceContext = (): Type => useContext(Context); +export const EntityContextProvider = EntityContext.Provider; + +export const useEntityContext = (): EntityType => useContext(EntityContext); + +interface EntityDataType { + data: any; +} + +const EntityDataContext = createContext<EntityDataType>({} as any); + +export const EntityDataContextProvider = EntityDataContext.Provider; + +export const useEntityDataContext = (): EntityDataType => useContext(EntityDataContext); |