Skip to content

Commit

Permalink
More constants
Browse files Browse the repository at this point in the history
  • Loading branch information
Nick Balestra committed May 26, 2019
1 parent 386909b commit 918a733
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 27 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
TODO
node_modules
credentials.json
cf-credentials.json
/testLocal.js
*.log
7 changes: 6 additions & 1 deletion src/constants.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
module.exports = {
CF_API_URL: "https://api.cloudflare.com/client/v4",
CREDENTIALS_FILENAME: "credentials.json"
CF_CREDENTIALS_FILENAME: "cf-credentials.json",

CF_KEYFILENAME_ENV_NAME: "CF_KEYFILENAME",
CF_EMAIL_ENV_NAME: "CF_EMAIL",
CF_ID_ENV_NAME: "CF_ID",
CF_KEY_ENV_NAME: "CF_KEY"
};
27 changes: 18 additions & 9 deletions src/utils/getOptions.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
/* eslint-disable global-require, no-param-reassign, import/no-dynamic-require, no-nested-ternary */
/* eslint-disable global-require, no-param-reassign, import/no-dynamic-require, no-nested-ternary, operator-linebreak */
const { join } = require("path");
const { CF_API_URL, CREDENTIALS_FILENAME } = require("./../constants.js");
const {
CF_API_URL,
CF_CREDENTIALS_FILENAME,
CF_KEYFILENAME_ENV_NAME,
CF_EMAIL_ENV_NAME,
CF_ID_ENV_NAME,
CF_KEY_ENV_NAME
} = require("./../constants.js");

module.exports = credentials => {
if (typeof credentials === "string") {
credentials = require(credentials);
}
if (!credentials) {
credentials = process.env.KEYFILENAME
? require(process.env.KEYFILENAME)
: process.env.CF_EMAIL && process.env.CF_ID && process.env.CF_KEY
credentials = process.env[CF_KEYFILENAME_ENV_NAME]
? require(process.env[CF_KEYFILENAME_ENV_NAME])
: process.env[CF_EMAIL_ENV_NAME] &&
process.env[CF_ID_ENV_NAME] &&
process.env[CF_KEY_ENV_NAME]
? {
id: process.env.CF_ID,
email: process.env.CF_EMAIL,
key: process.env.CF_KEY
email: process.env[CF_EMAIL_ENV_NAME],
id: process.env[CF_ID_ENV_NAME],
key: process.env[CF_KEY_ENV_NAME]
}
: require(join(process.cwd(), CREDENTIALS_FILENAME));
: require(join(process.cwd(), CF_CREDENTIALS_FILENAME));
}

return {
Expand Down
34 changes: 17 additions & 17 deletions tests/getOptions.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,26 @@

const { join } = require("path");
const getOptions = require("../src/utils/getOptions");
const constants = require("../src/constants");
const {
CF_API_URL,
CF_KEYFILENAME_ENV_NAME,
CF_EMAIL_ENV_NAME,
CF_ID_ENV_NAME,
CF_KEY_ENV_NAME
} = require("../src/constants");

afterEach(() => {
delete process.env.KEYFILENAME;
delete process.env[CF_KEYFILENAME_ENV_NAME];
delete process.env.CF_ID;
delete process.env.CF_EMAIL;
delete process.env[CF_EMAIL_ENV_NAME];
delete process.env.CF_KEY;
});

test("Passing credential object", () => {
const credentials = require(join(__dirname, "mockCredentials.json"));

const options = getOptions(credentials);
expect(options.baseURL).toBe(
`${constants.CF_API_URL}/accounts/${credentials.id}`
);
expect(options.baseURL).toBe(`${CF_API_URL}/accounts/${credentials.id}`);
expect(options.headers.common["X-Auth-Email"]).toBe(credentials.email);
expect(options.headers.common["X-Auth-Key"]).toBe(credentials.key);
});
Expand All @@ -28,9 +32,7 @@ test("Passing path to credentialsFile.json", () => {

const options = getOptions(credentialsFile);

expect(options.baseURL).toBe(
`${constants.CF_API_URL}/accounts/${credentials.id}`
);
expect(options.baseURL).toBe(`${CF_API_URL}/accounts/${credentials.id}`);
expect(options.headers.common["X-Auth-Email"]).toBe(credentials.email);
expect(options.headers.common["X-Auth-Key"]).toBe(credentials.key);
});
Expand All @@ -39,12 +41,10 @@ test("Relying on path available in global env", () => {
const credentialsFile = join(__dirname, "mockCredentials.json");
const credentials = require(credentialsFile);

process.env.KEYFILENAME = credentialsFile;
process.env[CF_KEYFILENAME_ENV_NAME] = credentialsFile;
const options = getOptions();

expect(options.baseURL).toBe(
`${constants.CF_API_URL}/accounts/${credentials.id}`
);
expect(options.baseURL).toBe(`${CF_API_URL}/accounts/${credentials.id}`);
expect(options.headers.common["X-Auth-Email"]).toBe(credentials.email);
expect(options.headers.common["X-Auth-Key"]).toBe(credentials.key);
});
Expand All @@ -54,12 +54,12 @@ test("Relying on credential available in global env", () => {
const CF_KEY = "123ABC";
const CF_EMAIL = "[email protected]";

process.env.CF_ID = CF_ID;
process.env.CF_EMAIL = CF_EMAIL;
process.env.CF_KEY = CF_KEY;
process.env[CF_ID_ENV_NAME] = CF_ID;
process.env[CF_EMAIL_ENV_NAME] = CF_EMAIL;
process.env[CF_KEY_ENV_NAME] = CF_KEY;
const options = getOptions();

expect(options.baseURL).toBe(`${constants.CF_API_URL}/accounts/${CF_ID}`);
expect(options.baseURL).toBe(`${CF_API_URL}/accounts/${CF_ID}`);
expect(options.headers.common["X-Auth-Email"]).toBe(CF_EMAIL);
expect(options.headers.common["X-Auth-Key"]).toBe(CF_KEY);
});

0 comments on commit 918a733

Please sign in to comment.