Skip to content

Commit

Permalink
fix(settings): use elevated token when revoking all tokens (#728)
Browse files Browse the repository at this point in the history
  • Loading branch information
neurosnap authored Feb 9, 2024
1 parent 2f4d555 commit 54c953d
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/app/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export function setupTestStore(initialState: Partial<WebState>) {
});

store.run(function* (): Operation<void> {
const group = yield* parallel([...tasks, bootup.run()]);
const group = yield* parallel(tasks);
yield* group;
});

Expand Down
41 changes: 41 additions & 0 deletions src/auth/token.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// @vitest-environment node
import { setupTestStore } from "@app/app/store";
import { testEnv } from "@app/mocks";
import { defaultToken } from "@app/schema";
import { revokeAllTokens } from "./token";

const sleep = (n: number) =>
new Promise<void>((resolve) => {
setTimeout(() => {
resolve();
}, n);
});

describe("revokeAllTokens", () => {
it("should use the elevated token", async () => {
let elevated = false;
let body = "";
revokeAllTokens.use(function* (ctx) {
elevated = ctx.elevated;
body = ctx.request?.body as string;
return;
});

const store = setupTestStore({
env: testEnv,
token: defaultToken({ tokenId: "1" }),
elevatedToken: defaultToken({ tokenId: "2" }),
});
store.dispatch(revokeAllTokens());

await sleep(100);

expect(elevated).toBe(true);
expect(JSON.parse(body)).toEqual({
except_tokens: [
`${testEnv.authUrl}/tokens/1`,
`${testEnv.authUrl}/tokens/2`,
],
});
});
});
1 change: 1 addition & 0 deletions src/auth/token.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ export const exchangeToken = authApi.post<ExchangeToken, TokenSuccessResponse>(
export const revokeAllTokens = authApi.post(
"/tokens/revoke_all_accessible",
function* onRevokeAll(ctx, next) {
ctx.elevated = true;
const env = yield* select(selectEnv);
const token = yield* select(selectToken);
const elevated = yield* select(schema.elevatedToken.select);
Expand Down
2 changes: 2 additions & 0 deletions src/test/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export const setupAppIntegrationTest = (
...initState.env,
},
});
store.run(bootup.run());
const App = () => {
return (
<Provider schema={schema} store={store}>
Expand Down Expand Up @@ -69,6 +70,7 @@ export const setupIntegrationTest = (
...initState.env,
},
});
store.run(bootup.run());

const TestProvider = ({ children }: { children: React.ReactNode }) => {
const router = createMemoryRouter(
Expand Down

0 comments on commit 54c953d

Please sign in to comment.