Skip to content

Commit 9f7156f

Browse files
authored
Merge pull request #14 from GeoffSelby/feature-site-commands
Add site commands feature
2 parents 413c264 + 04dde09 commit 9f7156f

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed

__tests__/commands.test.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
const {
2+
setupFetchStub,
3+
expectToHaveBeenCalledWith,
4+
} = require('./stub/fetchStub');
5+
const Forge = require('../lib/Forge');
6+
7+
beforeAll(() => {
8+
require('cross-fetch/polyfill');
9+
jest.spyOn(window, 'fetch');
10+
});
11+
12+
afterEach(() => {
13+
global.fetch.mockReset();
14+
});
15+
16+
test('it executes a command', async () => {
17+
setupFetchStub();
18+
19+
const payload = {
20+
command: 'ls -ls',
21+
};
22+
23+
const forge = new Forge('API_TOKEN');
24+
await forge.commands.execute(1, 1, payload);
25+
26+
expectToHaveBeenCalledWith('/servers/1/sites/1/commands', 'POST', payload);
27+
28+
expect(window.fetch).toHaveBeenCalledTimes(1);
29+
});
30+
31+
test('lists command history', async () => {
32+
setupFetchStub();
33+
34+
const forge = new Forge('API_TOKEN');
35+
await forge.commands.list(1, 1);
36+
37+
expectToHaveBeenCalledWith('/servers/1/sites/1/commands', 'GET');
38+
39+
expect(window.fetch).toHaveBeenCalledTimes(1);
40+
});
41+
42+
test('gets a command by id', async () => {
43+
setupFetchStub();
44+
45+
const forge = new Forge('API_TOKEN');
46+
await forge.commands.get(1, 1, 1);
47+
48+
expectToHaveBeenCalledWith('/servers/1/sites/1/commands/1', 'GET');
49+
50+
expect(window.fetch).toHaveBeenCalledTimes(1);
51+
});

lib/Forge.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,17 @@
404404
};
405405
}
406406

407+
get commands() {
408+
return {
409+
execute: (serverId, siteId, payload) =>
410+
this.post(`/servers/${serverId}/sites/${siteId}/commands`, payload),
411+
list: (serverId, siteId) =>
412+
this.get(`/servers/${serverId}/sites/${siteId}/commands`),
413+
get: (serverId, siteId, commandId) =>
414+
this.get(`/servers/${serverId}/sites/${siteId}/commands/${commandId}`),
415+
};
416+
}
417+
407418
get wordpress() {
408419
return {
409420
install: (serverId, siteId, payload) =>

src/Forge.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,17 @@ class Forge extends ForgeRequest {
335335
};
336336
}
337337

338+
get commands() {
339+
return {
340+
execute: (serverId, siteId, payload) =>
341+
this.post(`/servers/${serverId}/sites/${siteId}/commands`, payload),
342+
list: (serverId, siteId) =>
343+
this.get(`/servers/${serverId}/sites/${siteId}/commands`),
344+
get: (serverId, siteId, commandId) =>
345+
this.get(`/servers/${serverId}/sites/${siteId}/commands/${commandId}`),
346+
};
347+
}
348+
338349
get wordpress() {
339350
return {
340351
install: (serverId, siteId, payload) =>

0 commit comments

Comments
 (0)