9b283559f1
Part of https://github.com/actions/create-github-app-token/issues/43 This PR adds tests for [`main.js`](https://github.com/actions/create-github-app-token/blob/main/lib/main.js), similar to [the tests that already exist for `post.js`](https://github.com/actions/create-github-app-token/tree/main/tests). Specifically, it tests that: - `main` exits with an error when `GITHUB_REPOSITORY` is missing. - `main` exits with an error when `GITHUB_REPOSITORY_OWNER` is missing. - `main` successfully obtains a token when… - …the `owner` and `repositories` inputs are set (and the latter is a single repo). - …the `owner` and `repositories` inputs are set (and the latter is a list of repos). - …the `owner` input is set (to an org), but the `repositories` input isn’t set. - …the `owner` input is set (to a user), but the `repositories` input isn’t set. - …the `owner` input is not set, but the `repositories` input is set. - …neither the `owner` nor `repositories` input is set. ❧ Architecturally, in order to keep individual tests concise, this PR adds `tests/main.js`, which: - sets commonly-used inputs, environment variables, and mocks, then - calls a callback function that can edit the variables and add additional mocks, then - runs `main.js` itself. The `tests/main-token-get-*.test.js` test files run `tests/main.js` with various scenario-specific callback functions.
20 lines
555 B
JavaScript
20 lines
555 B
JavaScript
import { readdirSync } from "node:fs";
|
||
|
||
import { execa } from "execa";
|
||
import test from "ava";
|
||
|
||
const tests = readdirSync("tests").filter((file) => file.endsWith(".test.js"));
|
||
|
||
for (const file of tests) {
|
||
test(file, async (t) => {
|
||
// Override Actions environment variables that change `core`’s behavior
|
||
const env = {
|
||
GITHUB_OUTPUT: undefined,
|
||
GITHUB_STATE: undefined,
|
||
};
|
||
const { stderr, stdout } = await execa("node", [`tests/${file}`], { env });
|
||
t.snapshot(stderr, "stderr");
|
||
t.snapshot(stdout, "stdout");
|
||
});
|
||
}
|