merchant-backoffice

ZZZ: Inactive/Deprecated
Log | Files | Refs | Submodules | README

commit 3beb4dc7aa430c8cd6c26f339f77b01bd4776413
parent 1a59c8ff4a3b1550ae886e8bd993801e4ae3c137
Author: Sebastian <sebasjm@gmail.com>
Date:   Mon,  9 May 2022 13:29:33 -0300

fix and test for auth update also for admin

Diffstat:
Mpackages/merchant-backoffice/src/hooks/instance.ts | 3++-
Mpackages/merchant-backoffice/tests/context/backend.test.tsx | 76+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 75 insertions(+), 4 deletions(-)

diff --git a/packages/merchant-backoffice/src/hooks/instance.ts b/packages/merchant-backoffice/src/hooks/instance.ts @@ -134,7 +134,7 @@ export function useManagementAPI(instanceId: string): InstanceAPI { export function useInstanceAPI(): InstanceAPI { const { mutate } = useSWRConfig(); - const { url: baseUrl, token: adminToken } = useBackendContext(); + const { url: baseUrl, token: adminToken, updateLoginStatus } = useBackendContext(); const { token: instanceToken, id, admin } = useInstanceContext(); const { url, token } = !admin @@ -181,6 +181,7 @@ export function useInstanceAPI(): InstanceAPI { data: { method: "token", token: newToken }, }); + updateLoginStatus(baseUrl, newToken) mutate([`/private/`, token, url], null); }; diff --git a/packages/merchant-backoffice/tests/context/backend.test.tsx b/packages/merchant-backoffice/tests/context/backend.test.tsx @@ -23,6 +23,7 @@ import { renderHook } from "@testing-library/preact-hooks"; import { ComponentChildren, h, VNode } from "preact"; import { act } from "preact/test-utils"; import { BackendContextProvider } from "../../src/context/backend"; +import { InstanceContextProvider } from "../../src/context/instance"; import { MerchantBackend } from "../../src/declaration"; import { useAdminAPI, @@ -32,6 +33,7 @@ import { import { API_CREATE_INSTANCE, API_GET_CURRENT_INSTANCE, + API_UPDATE_CURRENT_INSTANCE_AUTH, API_UPDATE_INSTANCE_AUTH_BY_ID, assertJustExpectedRequestWereMade, AxiosMockEnvironment, @@ -40,6 +42,7 @@ import { interface TestingContextProps { children?: ComponentChildren; } + function TestingContext({ children }: TestingContextProps): VNode { return ( <BackendContextProvider defaultUrl="http://backend" initialToken="token"> @@ -47,9 +50,25 @@ function TestingContext({ children }: TestingContextProps): VNode { </BackendContextProvider> ); } +function AdminTestingContext({ children }: TestingContextProps): VNode { + return ( + <BackendContextProvider defaultUrl="http://backend" initialToken="token"> + <InstanceContextProvider + value={{ + token: "token", + id: "default", + admin: true, + changeToken: () => null, + }} + > + {children} + </InstanceContextProvider> + </BackendContextProvider> + ); +} describe("backend context api ", () => { - it("should use new token after updating the instance token in the settings", async () => { + it("should use new token after updating the instance token in the settings as user", async () => { const env = new AxiosMockEnvironment(); const { result, waitForNextUpdate } = renderHook( @@ -78,11 +97,62 @@ describe("backend context api ", () => { } as MerchantBackend.Instances.QueryInstancesResponse, }); - act(async () => { + await act(async () => { await result.current?.management.setNewToken("another_token"); }); - await waitForNextUpdate({ timeout: 1 }); + // await waitForNextUpdate({ timeout: 1 }); + + assertJustExpectedRequestWereMade(env); + + env.addRequestExpectation(API_CREATE_INSTANCE, { + auth: "Bearer another_token", + request: { + id: "new_instance_id", + } as MerchantBackend.Instances.InstanceConfigurationMessage, + }); + + result.current.admin.createInstance({ + id: "new_instance_id", + } as MerchantBackend.Instances.InstanceConfigurationMessage); + + assertJustExpectedRequestWereMade(env); + }); + + it("should use new token after updating the instance token in the settings as admin", async () => { + const env = new AxiosMockEnvironment(); + + const { result, waitForNextUpdate } = renderHook( + () => { + const instance = useInstanceAPI(); + const management = useManagementAPI("default"); + const admin = useAdminAPI(); + + return { instance, management, admin }; + }, + { wrapper: AdminTestingContext } + ); + + if (!result.current) { + expect(result.current).toBeDefined(); + return; + } + + env.addRequestExpectation(API_UPDATE_CURRENT_INSTANCE_AUTH, { + request: { + method: "token", + token: "another_token", + }, + response: { + name: "instance_name", + } as MerchantBackend.Instances.QueryInstancesResponse, + }); + + await act(async () => { + await result.current?.instance.setNewToken("another_token"); + }); + + // await waitForNextUpdate({ timeout: 1 }); assertJustExpectedRequestWereMade(env);