mirror of
https://github.com/outline/outline.git
synced 2026-06-13 11:25:03 +03:00
d3eb3db7ba
* shares.info, collections.info, documents.info * shares.list, shares.create, shares.update * shares.sitemap * parity with existing document shared screen * collection share popover * parent share and table * collection scene * collection link in sidebar * sidebar and breadcrumb collection link click * collection link click in editor * meta * more meta + 404 page * map internal link, remove showLastUpdated option * fix shares.list pagination * show last updated * shareLoader tests * lint * sidebar context for collection link * badge in shares table * fix existing tests * tsc * update failing test snapshot * env * signed url for collection attachments * include collection content in SSR for screen readers * search * drafts can be shared * review * tsc, remove old shared-doc scene * tweaks * DRY * refactor loader * Remove share/collection urls * fix: Collection overview should not be editable when viewing shared link and logged in * Tweak public breadcrumb * fix: Deleted documents should never be exposed through share * empty sharedTree array where includeChildDocuments is false * revert includeChildDocs guard for logical correctness + SSR bug fix * fix: check document is part of share --------- Co-authored-by: Tom Moor <tom@getoutline.com>
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { buildUser } from "@server/test/factories";
|
|
import { getTestServer } from "@server/test/support";
|
|
import { parseEmail } from "@shared/utils/email";
|
|
|
|
const server = getTestServer();
|
|
|
|
describe("#slack.post", () => {
|
|
it("should fail with status 400 bad request if query param state is not valid", async () => {
|
|
const user = await buildUser();
|
|
const res = await server.get(
|
|
`/auth/slack.post?state=${JSON.stringify(
|
|
{}
|
|
)}&code=123&token=${user.getJwtToken()}`
|
|
);
|
|
expect(res.status).toEqual(400);
|
|
});
|
|
|
|
it("should fail with status 400 bad request if query param state is not JSON", async () => {
|
|
const user = await buildUser();
|
|
const res = await server.get(
|
|
`/auth/slack.post?state=bad&code=123&token=${user.getJwtToken()}`
|
|
);
|
|
expect(res.status).toEqual(400);
|
|
});
|
|
|
|
it("should fail with status 400 bad request when both code and error are missing in query params", async () => {
|
|
const res = await server.get(
|
|
"/auth/slack.post?state=182d14d5-0dbd-4521-ac52-25484c25c96e"
|
|
);
|
|
const body = await res.json();
|
|
expect(res.status).toEqual(400);
|
|
expect(body.message).toEqual("query: one of code or error is required");
|
|
});
|
|
});
|
|
|
|
describe("Slack authentication domain extraction", () => {
|
|
it("should correctly extract domain from user email", () => {
|
|
const testCases = [
|
|
{ email: "user@gmail.com", expectedDomain: "gmail.com" },
|
|
{ email: "test@company.com", expectedDomain: "company.com" },
|
|
{
|
|
email: "admin@subdomain.domain.com",
|
|
expectedDomain: "subdomain.domain.com",
|
|
},
|
|
];
|
|
|
|
testCases.forEach(({ email, expectedDomain }) => {
|
|
const { domain } = parseEmail(email);
|
|
expect(domain).toEqual(expectedDomain);
|
|
});
|
|
});
|
|
});
|