@p0security/cli 0.18.8 → 0.18.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dist/commands/__tests__/login.test.js +17 -10
- package/build/dist/commands/__tests__/login.test.js.map +1 -1
- package/build/dist/commands/__tests__/request.test.js +64 -9
- package/build/dist/commands/__tests__/request.test.js.map +1 -1
- package/build/dist/commands/__tests__/ssh.test.js +75 -51
- package/build/dist/commands/__tests__/ssh.test.js.map +1 -1
- package/build/dist/commands/allow.js +3 -2
- package/build/dist/commands/allow.js.map +1 -1
- package/build/dist/commands/aws/__tests__/role.test.js +18 -12
- package/build/dist/commands/aws/__tests__/role.test.js.map +1 -1
- package/build/dist/commands/aws/index.js +0 -4
- package/build/dist/commands/aws/index.js.map +1 -1
- package/build/dist/commands/aws/permission-set.js +1 -2
- package/build/dist/commands/aws/permission-set.js.map +1 -1
- package/build/dist/commands/aws/role.js +1 -2
- package/build/dist/commands/aws/role.js.map +1 -1
- package/build/dist/commands/grant.js +12 -2
- package/build/dist/commands/grant.js.map +1 -1
- package/build/dist/commands/index.js +2 -0
- package/build/dist/commands/index.js.map +1 -1
- package/build/dist/commands/kubeconfig.js +1 -2
- package/build/dist/commands/kubeconfig.js.map +1 -1
- package/build/dist/commands/login.js +19 -27
- package/build/dist/commands/login.js.map +1 -1
- package/build/dist/commands/logout.d.ts +2 -0
- package/build/dist/commands/logout.js +61 -0
- package/build/dist/commands/logout.js.map +1 -0
- package/build/dist/commands/ls.js +1 -2
- package/build/dist/commands/ls.js.map +1 -1
- package/build/dist/commands/request.js +12 -2
- package/build/dist/commands/request.js.map +1 -1
- package/build/dist/commands/scp.js +1 -2
- package/build/dist/commands/scp.js.map +1 -1
- package/build/dist/commands/shared/index.d.ts +7 -4
- package/build/dist/commands/shared/index.js +20 -45
- package/build/dist/commands/shared/index.js.map +1 -1
- package/build/dist/commands/shared/request.d.ts +3 -0
- package/build/dist/commands/shared/request.js +105 -59
- package/build/dist/commands/shared/request.js.map +1 -1
- package/build/dist/commands/shared/ssh.js +21 -12
- package/build/dist/commands/shared/ssh.js.map +1 -1
- package/build/dist/commands/ssh-proxy.js +2 -3
- package/build/dist/commands/ssh-proxy.js.map +1 -1
- package/build/dist/commands/ssh-resolve.js +2 -3
- package/build/dist/commands/ssh-resolve.js.map +1 -1
- package/build/dist/commands/ssh.js +3 -4
- package/build/dist/commands/ssh.js.map +1 -1
- package/build/dist/drivers/__tests__/api.test.d.ts +1 -0
- package/build/dist/drivers/__tests__/api.test.js +688 -0
- package/build/dist/drivers/__tests__/api.test.js.map +1 -0
- package/build/dist/drivers/api.d.ts +17 -1
- package/build/dist/drivers/api.js +252 -25
- package/build/dist/drivers/api.js.map +1 -1
- package/build/dist/drivers/auth/index.js +23 -10
- package/build/dist/drivers/auth/index.js.map +1 -1
- package/build/dist/drivers/auth/path.d.ts +2 -0
- package/build/dist/drivers/auth/path.js +19 -1
- package/build/dist/drivers/auth/path.js.map +1 -1
- package/build/dist/drivers/config.js +10 -18
- package/build/dist/drivers/config.js.map +1 -1
- package/build/dist/drivers/env.d.ts +1 -1
- package/build/dist/drivers/env.js +2 -2
- package/build/dist/drivers/env.js.map +1 -1
- package/build/dist/drivers/firestore.d.ts +0 -10
- package/build/dist/drivers/firestore.js +3 -43
- package/build/dist/drivers/firestore.js.map +1 -1
- package/build/dist/drivers/org.d.ts +1 -0
- package/build/dist/drivers/org.js +43 -0
- package/build/dist/drivers/org.js.map +1 -0
- package/build/dist/plugins/aws/config.js +3 -6
- package/build/dist/plugins/aws/config.js.map +1 -1
- package/build/dist/plugins/azure/login.d.ts +3 -0
- package/build/dist/plugins/azure/login.js +86 -0
- package/build/dist/plugins/azure/login.js.map +1 -0
- package/build/dist/plugins/google/ssh-key.js +9 -9
- package/build/dist/plugins/google/ssh-key.js.map +1 -1
- package/build/dist/plugins/kubeconfig/index.js +12 -10
- package/build/dist/plugins/kubeconfig/index.js.map +1 -1
- package/build/dist/plugins/login.js +11 -9
- package/build/dist/plugins/login.js.map +1 -1
- package/build/dist/plugins/self-hosted/ssh.d.ts +3 -0
- package/build/dist/plugins/self-hosted/ssh.js +80 -0
- package/build/dist/plugins/self-hosted/ssh.js.map +1 -0
- package/build/dist/plugins/self-hosted/types.d.ts +31 -0
- package/build/dist/plugins/self-hosted/types.js +3 -0
- package/build/dist/plugins/self-hosted/types.js.map +1 -0
- package/build/dist/types/identity.d.ts +2 -1
- package/build/dist/types/org.d.ts +2 -0
- package/build/dist/types/request.d.ts +1 -1
- package/build/dist/types/ssh.d.ts +5 -4
- package/build/dist/types/ssh.js +6 -1
- package/build/dist/types/ssh.js.map +1 -1
- package/build/dist/util.d.ts +3 -0
- package/build/dist/util.js +19 -3
- package/build/dist/util.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/p0 +0 -13
- package/package.json +2 -1
- package/build/dist/testing/firestore.d.ts +0 -2
- package/build/dist/testing/firestore.js +0 -17
- package/build/dist/testing/firestore.js.map +0 -1
|
@@ -42,12 +42,12 @@ This file is part of @p0security/cli
|
|
|
42
42
|
|
|
43
43
|
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
44
44
|
**/
|
|
45
|
+
const api_1 = require("../../drivers/api");
|
|
45
46
|
const auth = __importStar(require("../../drivers/auth"));
|
|
46
47
|
const config = __importStar(require("../../drivers/config"));
|
|
47
48
|
const env_1 = require("../../drivers/env");
|
|
48
49
|
const stdio_1 = require("../../drivers/stdio");
|
|
49
50
|
const login_1 = require("../../plugins/login");
|
|
50
|
-
const firestore_1 = require("../../testing/firestore");
|
|
51
51
|
const login_2 = require("../login");
|
|
52
52
|
const auth_1 = require("firebase/auth");
|
|
53
53
|
const promises_1 = require("fs/promises");
|
|
@@ -58,36 +58,42 @@ jest.mock("../../drivers/auth/path", () => ({
|
|
|
58
58
|
}));
|
|
59
59
|
jest.mock("../../drivers/stdio");
|
|
60
60
|
jest.mock("../../plugins/login");
|
|
61
|
+
jest.mock("../../drivers/api");
|
|
61
62
|
const mockIdentity = {
|
|
63
|
+
// @ts-expect-error credential has more fields, this is enough for tests
|
|
62
64
|
credential: {
|
|
63
65
|
expires_at: Date.now() * 1e-3 + 60 * 1000,
|
|
64
66
|
},
|
|
67
|
+
// @ts-expect-error org has more fields, this is enough for tests
|
|
65
68
|
org: {
|
|
66
69
|
tenantId: "test-tenant",
|
|
67
70
|
slug: "test-org",
|
|
68
71
|
ssoProvider: "google",
|
|
69
72
|
},
|
|
73
|
+
token: "test",
|
|
70
74
|
};
|
|
71
75
|
const mockSignInWithCredential = auth_1.signInWithCredential;
|
|
72
76
|
const mockReadFile = promises_1.readFile;
|
|
73
77
|
const mockWriteFile = promises_1.writeFile;
|
|
78
|
+
const mockFetchOrgData = api_1.fetchOrgData;
|
|
74
79
|
describe("login", () => {
|
|
75
80
|
beforeEach(() => {
|
|
76
|
-
jest.spyOn(config, "loadConfig").mockResolvedValueOnce(env_1.
|
|
81
|
+
jest.spyOn(config, "loadConfig").mockResolvedValueOnce(env_1.defaultConfig);
|
|
77
82
|
jest.spyOn(config, "saveConfig").mockImplementation(jest.fn());
|
|
78
|
-
jest.spyOn(config, "getTenantConfig").mockReturnValue(env_1.
|
|
83
|
+
jest.spyOn(config, "getTenantConfig").mockReturnValue(env_1.defaultConfig);
|
|
79
84
|
// do NOT spyOn getContactMessage — you want the real one
|
|
80
85
|
});
|
|
81
86
|
it("prints a friendly error if the org is not provided", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
-
(0, firestore_1.mockGetDoc)(undefined);
|
|
83
87
|
yield expect((0, login_2.login)({})).rejects.toMatchInlineSnapshot(`"The P0 organization ID is required. Please provide it as an argument or set the P0_ORG environment variable."`);
|
|
84
88
|
}));
|
|
85
89
|
it("prints a friendly error if the org is not found", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
-
|
|
90
|
+
mockFetchOrgData.mockImplementation(() => {
|
|
91
|
+
throw "Not found";
|
|
92
|
+
});
|
|
87
93
|
yield expect((0, login_2.login)({ org: "test-org" })).rejects.toMatchInlineSnapshot(`"Could not find organization"`);
|
|
88
94
|
}));
|
|
89
95
|
it("prints a friendly error if unsupported login", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
-
|
|
96
|
+
mockFetchOrgData.mockResolvedValue({
|
|
91
97
|
slug: "test-org",
|
|
92
98
|
tenantId: "test-tenant",
|
|
93
99
|
ssoProvider: "microsoft",
|
|
@@ -103,7 +109,7 @@ describe("login", () => {
|
|
|
103
109
|
error.code = "ENOENT";
|
|
104
110
|
return Promise.reject(error);
|
|
105
111
|
});
|
|
106
|
-
|
|
112
|
+
mockFetchOrgData.mockResolvedValue({
|
|
107
113
|
slug: "test-org",
|
|
108
114
|
tenantId: "test-tenant",
|
|
109
115
|
ssoProvider: "google",
|
|
@@ -118,6 +124,7 @@ describe("login", () => {
|
|
|
118
124
|
beforeEach(() => {
|
|
119
125
|
credentialData = "";
|
|
120
126
|
jest.clearAllMocks();
|
|
127
|
+
jest.spyOn(config, "loadConfig").mockResolvedValueOnce(env_1.defaultConfig);
|
|
121
128
|
mockReadFile.mockImplementation(() => __awaiter(void 0, void 0, void 0, function* () { return Buffer.from(credentialData, "utf-8"); }));
|
|
122
129
|
mockWriteFile.mockImplementation((_path, data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
123
130
|
credentialData = data;
|
|
@@ -130,7 +137,7 @@ describe("login", () => {
|
|
|
130
137
|
},
|
|
131
138
|
});
|
|
132
139
|
}));
|
|
133
|
-
|
|
140
|
+
mockFetchOrgData.mockResolvedValue({
|
|
134
141
|
slug: "test-org",
|
|
135
142
|
tenantId: "test-tenant",
|
|
136
143
|
ssoProvider: "google",
|
|
@@ -161,7 +168,7 @@ Please contact support@p0.dev for assistance."
|
|
|
161
168
|
beforeEach(() => {
|
|
162
169
|
jest.clearAllMocks();
|
|
163
170
|
jest.spyOn(auth, "loadCredentials").mockResolvedValue(mockIdentity);
|
|
164
|
-
|
|
171
|
+
mockFetchOrgData.mockResolvedValue({
|
|
165
172
|
slug: "test-org",
|
|
166
173
|
tenantId: "test-tenant",
|
|
167
174
|
ssoProvider: "google",
|
|
@@ -182,7 +189,7 @@ Please contact support@p0.dev for assistance."
|
|
|
182
189
|
expect(stdio_1.print2).toHaveBeenCalledWith("You are now logged in to the test-org organization, and can use the p0 CLI.");
|
|
183
190
|
}));
|
|
184
191
|
it("different org provided, need to re-login", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
185
|
-
|
|
192
|
+
mockFetchOrgData.mockResolvedValue({
|
|
186
193
|
slug: "other-org",
|
|
187
194
|
tenantId: "other-tenant",
|
|
188
195
|
ssoProvider: "google",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../../../src/commands/__tests__/login.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,yDAA2C;AAC3C,6DAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"login.test.js","sourceRoot":"","sources":["../../../../src/commands/__tests__/login.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
12
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
13
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
15
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
16
|
+
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
17
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
18
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
19
|
+
function fulfill(value) { resume("next", value); }
|
|
20
|
+
function reject(value) { resume("throw", value); }
|
|
21
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
22
|
+
};
|
|
11
23
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
24
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
25
|
};
|
|
@@ -27,16 +39,18 @@ const stdio_1 = require("../../drivers/stdio");
|
|
|
27
39
|
const yargs_1 = require("../../testing/yargs");
|
|
28
40
|
const util_1 = require("../../util");
|
|
29
41
|
const request_1 = require("../request");
|
|
30
|
-
const firestore_1 = require("firebase/firestore");
|
|
31
42
|
const yargs_2 = __importDefault(require("yargs"));
|
|
32
|
-
jest.mock("../../drivers/api");
|
|
43
|
+
jest.mock("../../drivers/api", () => (Object.assign(Object.assign({}, jest.requireActual("../../drivers/api")), { fetchCommand: jest.fn(), fetchStreamingCommand: jest.fn(), streamingApiFetch: jest.fn() })));
|
|
33
44
|
jest.mock("../../drivers/auth");
|
|
34
|
-
jest.mock("../../drivers/stdio");
|
|
45
|
+
jest.mock("../../drivers/stdio", () => (Object.assign(Object.assign({}, jest.requireActual("../../drivers/stdio")), { print1: jest.fn(), print2: jest.fn() })));
|
|
35
46
|
const mockFetchCommand = api_1.fetchCommand;
|
|
47
|
+
const mockFetchStreamingCommand = api_1.fetchStreamingCommand;
|
|
36
48
|
const mockPrint1 = stdio_1.print1;
|
|
37
49
|
const mockPrint2 = stdio_1.print2;
|
|
38
50
|
describe("request", () => {
|
|
39
|
-
beforeEach(() =>
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
jest.clearAllMocks();
|
|
53
|
+
});
|
|
40
54
|
describe("when valid request command", () => {
|
|
41
55
|
const command = "request gcloud role viewer";
|
|
42
56
|
function mockFetch(response) {
|
|
@@ -55,13 +69,35 @@ describe("request", () => {
|
|
|
55
69
|
}));
|
|
56
70
|
});
|
|
57
71
|
it("should wait for access", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
-
|
|
72
|
+
/**
|
|
73
|
+
* This test checks that the request command waits for access to be granted
|
|
74
|
+
* before resolving the promise.
|
|
75
|
+
*/
|
|
76
|
+
mockFetchStreamingCommand.mockImplementation(function () {
|
|
77
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
78
|
+
yield yield __await({
|
|
79
|
+
ok: true,
|
|
80
|
+
message: "a message",
|
|
81
|
+
id: "abcefg",
|
|
82
|
+
isPreexisting: false,
|
|
83
|
+
isPersistent: false,
|
|
84
|
+
request: { status: "NEW" },
|
|
85
|
+
});
|
|
86
|
+
yield __await((0, util_1.sleep)(200));
|
|
87
|
+
yield yield __await({
|
|
88
|
+
ok: true,
|
|
89
|
+
message: "Request approved",
|
|
90
|
+
id: "abcefg",
|
|
91
|
+
isPreexisting: false,
|
|
92
|
+
isPersistent: false,
|
|
93
|
+
request: { status: "DONE" },
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
59
97
|
const promise = (0, request_1.requestCommand)((0, yargs_2.default)()).parse(`${command} --wait`);
|
|
60
|
-
|
|
98
|
+
// await for the first response to yield
|
|
99
|
+
const wait = (0, util_1.sleep)(100);
|
|
61
100
|
yield expect(wait).resolves.toBeUndefined();
|
|
62
|
-
firestore_1.onSnapshot.trigger({
|
|
63
|
-
status: "DONE",
|
|
64
|
-
});
|
|
65
101
|
yield expect(promise).resolves.toBeDefined();
|
|
66
102
|
expect(mockPrint2.mock.calls).toMatchSnapshot();
|
|
67
103
|
expect(mockPrint1).not.toHaveBeenCalled();
|
|
@@ -90,6 +126,25 @@ Unknown argument: foo`,
|
|
|
90
126
|
const error = yield (0, yargs_1.failure)((0, request_1.requestCommand)((0, yargs_2.default)()), command);
|
|
91
127
|
expect(error).toMatchSnapshot();
|
|
92
128
|
}));
|
|
129
|
+
it("should handle stream errors", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
130
|
+
mockFetchStreamingCommand.mockImplementation(function () {
|
|
131
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
132
|
+
yield yield __await({
|
|
133
|
+
ok: true,
|
|
134
|
+
message: "a message",
|
|
135
|
+
id: "abcefg",
|
|
136
|
+
isPreexisting: false,
|
|
137
|
+
isPersistent: false,
|
|
138
|
+
request: { status: "NEW" },
|
|
139
|
+
});
|
|
140
|
+
yield __await((0, util_1.sleep)(200));
|
|
141
|
+
throw new TypeError("terminated");
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
const command = "request gcloud role viewer --wait";
|
|
145
|
+
const error = yield (0, yargs_1.failure)((0, request_1.requestCommand)((0, yargs_2.default)()), command);
|
|
146
|
+
expect(error).toMatchSnapshot();
|
|
147
|
+
}));
|
|
93
148
|
});
|
|
94
149
|
});
|
|
95
150
|
//# sourceMappingURL=request.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.test.js","sourceRoot":"","sources":["../../../../src/commands/__tests__/request.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.test.js","sourceRoot":"","sources":["../../../../src/commands/__tests__/request.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
12
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
13
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
15
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
16
|
+
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
17
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
18
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
19
|
+
function fulfill(value) { resume("next", value); }
|
|
20
|
+
function reject(value) { resume("throw", value); }
|
|
21
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
22
|
+
};
|
|
11
23
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
24
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
25
|
};
|
|
@@ -26,21 +38,20 @@ const keys_1 = require("../../common/__mocks__/keys");
|
|
|
26
38
|
const api_1 = require("../../drivers/api");
|
|
27
39
|
const stdio_1 = require("../../drivers/stdio");
|
|
28
40
|
const ssh_1 = require("../../plugins/ssh");
|
|
29
|
-
const firestore_1 = require("../../testing/firestore");
|
|
30
41
|
const util_1 = require("../../util");
|
|
31
42
|
const ssh_2 = require("../ssh");
|
|
32
|
-
const firestore_2 = require("firebase/firestore");
|
|
33
43
|
const lodash_1 = require("lodash");
|
|
34
44
|
const yargs_1 = __importDefault(require("yargs"));
|
|
35
45
|
jest.mock("../../drivers/api");
|
|
36
46
|
jest.mock("../../drivers/auth");
|
|
37
|
-
jest.mock("../../drivers/stdio");
|
|
47
|
+
jest.mock("../../drivers/stdio", () => (Object.assign(Object.assign({}, jest.requireActual("../../drivers/stdio")), { print1: jest.fn(), print2: jest.fn() })));
|
|
38
48
|
jest.mock("../../plugins/ssh");
|
|
39
49
|
jest.mock("../../common/keys");
|
|
40
|
-
const mockFetchCommand = api_1.fetchCommand;
|
|
41
50
|
const mockSshOrScp = ssh_1.sshOrScp;
|
|
42
51
|
const mockPrint1 = stdio_1.print1;
|
|
43
52
|
const mockPrint2 = stdio_1.print2;
|
|
53
|
+
const mockIntegrationConfig = api_1.fetchIntegrationConfig;
|
|
54
|
+
const mockFetchStreamingCommand = api_1.fetchStreamingCommand;
|
|
44
55
|
const MOCK_PERMISSION = {
|
|
45
56
|
provider: "aws",
|
|
46
57
|
publicKey: keys_1.TEST_PUBLIC_KEY,
|
|
@@ -68,85 +79,98 @@ const MOCK_REQUEST = {
|
|
|
68
79
|
generated: MOCK_GENERATED,
|
|
69
80
|
permission: MOCK_PERMISSION,
|
|
70
81
|
};
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
82
|
+
mockIntegrationConfig.mockResolvedValue({
|
|
83
|
+
config: {
|
|
84
|
+
"iam-write": {
|
|
85
|
+
["aws:test-account"]: {
|
|
86
|
+
state: "installed",
|
|
87
|
+
},
|
|
75
88
|
},
|
|
76
89
|
},
|
|
77
90
|
});
|
|
78
91
|
describe("ssh", () => {
|
|
92
|
+
/**
|
|
93
|
+
* mockStreaming simulates a streaming response from the API.
|
|
94
|
+
* It yields an initial response and then a final response after a delay.
|
|
95
|
+
* @param sleep sleep function to simulate delay in streaming response
|
|
96
|
+
*/
|
|
97
|
+
const mockStreaming = (isPersistent, sleep) => {
|
|
98
|
+
mockFetchStreamingCommand.mockImplementationOnce(function () {
|
|
99
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
100
|
+
yield yield __await({
|
|
101
|
+
ok: true,
|
|
102
|
+
message: "a message",
|
|
103
|
+
id: "abcefg",
|
|
104
|
+
isPreexisting: false,
|
|
105
|
+
isPersistent,
|
|
106
|
+
request: { status: "NEW" },
|
|
107
|
+
});
|
|
108
|
+
yield __await((sleep === null || sleep === void 0 ? void 0 : sleep()));
|
|
109
|
+
yield yield __await({
|
|
110
|
+
ok: true,
|
|
111
|
+
message: "Request approved",
|
|
112
|
+
id: "abcefg",
|
|
113
|
+
isPreexisting: false,
|
|
114
|
+
isPersistent,
|
|
115
|
+
request: {
|
|
116
|
+
status: "DONE",
|
|
117
|
+
id: "abcefg",
|
|
118
|
+
generated: MOCK_GENERATED,
|
|
119
|
+
permission: MOCK_PERMISSION,
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
};
|
|
79
125
|
describe.each([
|
|
80
126
|
["persistent", true],
|
|
81
127
|
["ephemeral", false],
|
|
82
128
|
])("%s access", (_, isPersistent) => {
|
|
83
129
|
beforeEach(() => {
|
|
84
130
|
jest.clearAllMocks();
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
id: "abcefg",
|
|
89
|
-
isPreexisting: false,
|
|
90
|
-
isPersistent,
|
|
91
|
-
event: {
|
|
92
|
-
permission: {
|
|
93
|
-
type: "session",
|
|
94
|
-
spec: {
|
|
95
|
-
resource: {
|
|
96
|
-
arn: "arn:aws:ec2:us-west-2:391052057035:instance/i-0b1b7b7b7b7b7b7b7",
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
});
|
|
131
|
+
});
|
|
132
|
+
afterEach(() => {
|
|
133
|
+
mockFetchStreamingCommand.mockReset();
|
|
102
134
|
});
|
|
103
135
|
it("should call p0 request with reason arg", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
-
|
|
136
|
+
mockStreaming(isPersistent);
|
|
137
|
+
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)())
|
|
105
138
|
.fail(lodash_1.noop)
|
|
106
139
|
.parse(`ssh some-instance --reason reason --provider aws`);
|
|
107
|
-
|
|
108
|
-
|
|
140
|
+
// await for the first response to yield
|
|
141
|
+
yield (0, util_1.sleep)(10);
|
|
142
|
+
const hiddenFilenameRequestArgs = (0, lodash_1.omit)(mockFetchStreamingCommand.mock.calls[0][1], "$0");
|
|
109
143
|
expect(hiddenFilenameRequestArgs).toMatchSnapshot("args");
|
|
144
|
+
yield expect(promise).resolves.toBeDefined();
|
|
110
145
|
}));
|
|
111
|
-
it("should wait for access grant", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
112
|
-
|
|
113
|
-
const wait = (0, util_1.sleep)(100);
|
|
114
|
-
yield Promise.race([wait, promise]);
|
|
115
|
-
yield expect(wait).resolves.toBeUndefined();
|
|
116
|
-
}));
|
|
117
|
-
it("should wait for provisioning", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
|
+
it("should wait for access grant/provisioning", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
147
|
+
mockStreaming(isPersistent, () => __awaiter(void 0, void 0, void 0, function* () { return yield (0, util_1.sleep)(200); }));
|
|
118
148
|
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).fail(lodash_1.noop).parse(`ssh some-instance`);
|
|
119
|
-
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
120
|
-
firestore_2.onSnapshot.trigger({
|
|
121
|
-
status: "APPROVED",
|
|
122
|
-
});
|
|
123
149
|
const wait = (0, util_1.sleep)(100);
|
|
124
150
|
yield Promise.race([wait, promise]);
|
|
125
151
|
yield expect(wait).resolves.toBeUndefined();
|
|
152
|
+
yield expect(promise).resolves.toBeDefined();
|
|
126
153
|
}));
|
|
154
|
+
/**
|
|
155
|
+
* This test checks that the sshOrScp function is called with the correct parameters
|
|
156
|
+
* when the command is parsed with a non-interactive command.
|
|
157
|
+
* It mocks the sshOrScp function and verifies that it is called with the expected
|
|
158
|
+
* arguments, including the generated resource and permission.
|
|
159
|
+
* It also checks that the output is printed correctly.
|
|
160
|
+
*/
|
|
127
161
|
it("should call sshOrScp with non-interactive command", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
162
|
+
mockStreaming(isPersistent);
|
|
128
163
|
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)())
|
|
129
164
|
.fail(lodash_1.noop)
|
|
130
165
|
.parse(`ssh some-instance do something`);
|
|
131
|
-
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
132
|
-
firestore_2.onSnapshot.trigger({
|
|
133
|
-
status: "APPROVED",
|
|
134
|
-
});
|
|
135
|
-
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
136
|
-
firestore_2.onSnapshot.trigger(MOCK_REQUEST);
|
|
137
166
|
yield expect(promise).resolves.toBeDefined();
|
|
138
167
|
expect(mockPrint2.mock.calls).toMatchSnapshot("stderr");
|
|
139
168
|
expect(mockPrint1).not.toHaveBeenCalled();
|
|
140
169
|
expect(mockSshOrScp).toHaveBeenCalled();
|
|
141
170
|
}));
|
|
142
171
|
it("should call sshOrScp with interactive session", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
172
|
+
mockStreaming(isPersistent);
|
|
143
173
|
const promise = (0, ssh_2.sshCommand)((0, yargs_1.default)()).fail(lodash_1.noop).parse(`ssh some-instance`);
|
|
144
|
-
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
145
|
-
firestore_2.onSnapshot.trigger({
|
|
146
|
-
status: "APPROVED",
|
|
147
|
-
});
|
|
148
|
-
yield (0, util_1.sleep)(100); // Need to wait for listen before trigger in tests
|
|
149
|
-
firestore_2.onSnapshot.trigger(MOCK_REQUEST);
|
|
150
174
|
yield expect(promise).resolves.toBeDefined();
|
|
151
175
|
expect(mockPrint2.mock.calls).toMatchSnapshot("stderr");
|
|
152
176
|
expect(mockPrint1).not.toHaveBeenCalled();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.test.js","sourceRoot":"","sources":["../../../../src/commands/__tests__/ssh.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ssh.test.js","sourceRoot":"","sources":["../../../../src/commands/__tests__/ssh.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,6 @@ You should have received a copy of the GNU General Public License along with @p0
|
|
|
22
22
|
**/
|
|
23
23
|
const api_1 = require("../drivers/api");
|
|
24
24
|
const auth_1 = require("../drivers/auth");
|
|
25
|
-
const firestore_1 = require("../drivers/firestore");
|
|
26
25
|
const stdio_1 = require("../drivers/stdio");
|
|
27
26
|
const allowArgs = (yargs) => yargs
|
|
28
27
|
.parserConfiguration({ "unknown-options-as-args": true })
|
|
@@ -38,7 +37,9 @@ const allowArgs = (yargs) => yargs
|
|
|
38
37
|
string: true,
|
|
39
38
|
default: [],
|
|
40
39
|
});
|
|
41
|
-
const allowCommand = (yargs) => yargs.command("allow [arguments..]", "Create standing access for a resource", allowArgs, (0,
|
|
40
|
+
const allowCommand = (yargs) => yargs.command("allow [arguments..]", "Create standing access for a resource", allowArgs, (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
yield (0, exports.allow)(args);
|
|
42
|
+
}));
|
|
42
43
|
exports.allowCommand = allowCommand;
|
|
43
44
|
const allow = (args, authn) => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
45
|
const resolvedAuthn = authn !== null && authn !== void 0 ? authn : (yield (0, auth_1.authenticate)());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allow.js","sourceRoot":"","sources":["../../../src/commands/allow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,wCAA8C;AAC9C,0CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"allow.js","sourceRoot":"","sources":["../../../src/commands/allow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,wCAA8C;AAC9C,0CAA+C;AAC/C,4CAA0C;AAK1C,MAAM,SAAS,GAAG,CAAI,KAAoB,EAAE,EAAE,CAC5C,KAAK;KACF,mBAAmB,CAAC,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC;KACxD,IAAI,CAAC,KAAK,CAAC,CAAC,4HAA4H;KACxI,MAAM,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,sCAAsC;CACjD,CAAC;KACD,MAAM,CAAC,WAAW,EAAE;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAc;CACxB,CAAC,CAAC;AAEA,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,EAAE,CAChD,KAAK,CAAC,OAAO,CACX,qBAAqB,EACrB,uCAAuC,EACvC,SAAS,EACT,CAAO,IAAI,EAAE,EAAE;IACb,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAA,CACF,CAAC;AARS,QAAA,YAAY,gBAQrB;AAEG,MAAM,KAAK,GAAG,CACnB,IAGE,EACF,KAAa,EACuB,EAAE;IACtC,MAAM,aAAa,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,MAAM,IAAA,mBAAY,GAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,IAAA,kBAAY,EAAgB,aAAa,EAAE,IAAI,EAAE;QAClE,OAAO;QACP,GAAG,IAAI,CAAC,SAAS;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;QACxD,IAAA,cAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;KACb;SAAM;QACL,MAAM,IAAI,CAAC;KACZ;AACH,CAAC,CAAA,CAAC;AAnBW,QAAA,KAAK,SAmBhB"}
|
|
@@ -23,8 +23,8 @@ This file is part of @p0security/cli
|
|
|
23
23
|
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
24
24
|
**/
|
|
25
25
|
const __1 = require("..");
|
|
26
|
+
const api_1 = require("../../../drivers/api");
|
|
26
27
|
const stdio_1 = require("../../../drivers/stdio");
|
|
27
|
-
const firestore_1 = require("../../../testing/firestore");
|
|
28
28
|
const yargs_1 = require("../../../testing/yargs");
|
|
29
29
|
const saml_response_1 = require("./__input__/saml-response");
|
|
30
30
|
const sts_response_1 = require("./__input__/sts-response");
|
|
@@ -32,6 +32,7 @@ const yargs_2 = __importDefault(require("yargs"));
|
|
|
32
32
|
jest.mock("fs/promises");
|
|
33
33
|
jest.mock("../../../drivers/auth");
|
|
34
34
|
jest.mock("../../../drivers/stdio");
|
|
35
|
+
jest.mock("../../../drivers/api");
|
|
35
36
|
jest.mock("typescript", () => (Object.assign(Object.assign({}, jest.requireActual("typescript")), { sys: {
|
|
36
37
|
writeOutputIsTTY: () => true,
|
|
37
38
|
} })));
|
|
@@ -41,6 +42,7 @@ jest.mock("../../shared/request", () => ({
|
|
|
41
42
|
const mockFetch = jest.spyOn(global, "fetch");
|
|
42
43
|
const mockPrint1 = stdio_1.print1;
|
|
43
44
|
const mockPrint2 = stdio_1.print2;
|
|
45
|
+
const mockIntegrationConfigFetch = api_1.fetchIntegrationConfig;
|
|
44
46
|
beforeEach(() => {
|
|
45
47
|
jest.clearAllMocks();
|
|
46
48
|
mockFetch.mockImplementation((url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -60,7 +62,9 @@ describe("aws role", () => {
|
|
|
60
62
|
state: "installed",
|
|
61
63
|
};
|
|
62
64
|
describe("without Okta SAML", () => {
|
|
63
|
-
|
|
65
|
+
mockIntegrationConfigFetch.mockResolvedValue({
|
|
66
|
+
config: { "iam-write": { "1": item } },
|
|
67
|
+
});
|
|
64
68
|
describe.each([["assume", "aws role assume Role1"]])("%s", (_, command) => {
|
|
65
69
|
it("should print a friendly error message", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
70
|
const error = yield (0, yargs_1.failure)((0, __1.awsCommand)((0, yargs_2.default)()), command);
|
|
@@ -70,16 +74,18 @@ describe("aws role", () => {
|
|
|
70
74
|
});
|
|
71
75
|
describe("with Okta SAML", () => {
|
|
72
76
|
beforeEach(() => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
mockIntegrationConfigFetch.mockResolvedValue({
|
|
78
|
+
config: {
|
|
79
|
+
"iam-write": {
|
|
80
|
+
"1": Object.assign(Object.assign({}, item), { login: {
|
|
81
|
+
type: "federated",
|
|
82
|
+
provider: {
|
|
83
|
+
type: "okta",
|
|
84
|
+
appId: "0oabcdefgh",
|
|
85
|
+
identityProvider: "okta",
|
|
86
|
+
},
|
|
87
|
+
} }),
|
|
88
|
+
},
|
|
83
89
|
},
|
|
84
90
|
});
|
|
85
91
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.test.js","sourceRoot":"","sources":["../../../../../src/commands/aws/__tests__/role.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,0BAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"role.test.js","sourceRoot":"","sources":["../../../../../src/commands/aws/__tests__/role.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,6 @@ This file is part of @p0security/cli
|
|
|
21
21
|
You should have received a copy of the GNU General Public License along with @p0security/cli. If not, see <https://www.gnu.org/licenses/>.
|
|
22
22
|
**/
|
|
23
23
|
const auth_1 = require("../../drivers/auth");
|
|
24
|
-
const firestore_1 = require("../../drivers/firestore");
|
|
25
24
|
const stdio_1 = require("../../drivers/stdio");
|
|
26
25
|
const config_1 = require("../../plugins/aws/config");
|
|
27
26
|
const permission_set_1 = require("./permission-set");
|
|
@@ -53,9 +52,6 @@ const awsArgs = (yargs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
53
52
|
catch (error) {
|
|
54
53
|
// Handle authentication errors here, since
|
|
55
54
|
// this occurs during command building
|
|
56
|
-
// Handle Firestore shutdown here, since Firebase is
|
|
57
|
-
// initialized as part of authentication
|
|
58
|
-
(0, firestore_1.shutdownFirebase)();
|
|
59
55
|
(0, stdio_1.print2)(error);
|
|
60
56
|
typescript_1.sys.exit(1);
|
|
61
57
|
throw error; // This will never be reached, but is needed to satisfy TypeScript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,6CAAkD;AAClD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;GASG;AACH,6CAAkD;AAClD,+CAA6C;AAC7C,qDAA6D;AAC7D,qDAAiD;AACjD,iCAA8B;AAC9B,2CAAiC;AAGjC,MAAM,OAAO,GAAG,CAAO,KAAiB,EAAE,EAAE;;IAC1C,IAAI;QACF,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAY,GAAE,CAAC;QAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAiB,EAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,KAAK;YAChB,gEAAgE;YAChE,6DAA6D;aAC5D,aAAa,CAAC,CAAC,CAAC;aAChB,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,iDAAiD;SAC5D,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,QAAQ,EAAE,yBAAyB;YACnC,IAAI,EAAE,QAAQ;SACf,CAAC;aACD,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEjB,MAAM,WAAW,GACf,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,IAAI,MAAK,KAAK;YAC1B,CAAC,CAAC,IAAA,8BAAa,EAAC,IAAI,EAAE,KAAK,CAAC;YAC5B,CAAC,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxB,OAAO,WAAW,CAAC;KACpB;IAAC,OAAO,KAAK,EAAE;QACd,2CAA2C;QAC3C,sCAAsC;QAEtC,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;QACd,gBAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,MAAM,KAAK,CAAC,CAAC,kEAAkE;KAChF;AACH,CAAC,CAAA,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAE,EAAE,CAC9C,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAD3C,QAAA,UAAU,cACiC"}
|