UNPKG

3.69 kBJavaScriptView Raw
1'use strict';
2
3const Path = require('path');
4const { expect } = require('code');
5const Hapi = require('hapi');
6const Lab = require('lab');
7const StandIn = require('stand-in');
8const CloudApiGql = require('../lib/');
9const CloudApi = require('webconsole-cloudapi-client');
10
11
12const lab = exports.lab = Lab.script();
13const { describe, it, afterEach } = lab;
14
15
16describe('keys', () => {
17 afterEach(() => {
18 StandIn.restoreAll();
19 });
20
21 const register = {
22 plugin: CloudApiGql,
23 options: {
24 keyPath: Path.join(__dirname, 'test.key'),
25 keyId: 'test',
26 apiBaseUrl: 'http://localhost'
27 }
28 };
29
30 it('can get all keys', async () => {
31 const keys = [{
32 name: 'test',
33 fingerprint: 'fingerprint',
34 value: 'foo'
35 }];
36
37 const server = new Hapi.Server();
38 StandIn.replaceOnce(CloudApi.prototype, 'fetch', (stand) => {
39 return keys;
40 });
41
42 await server.register(register);
43 await server.initialize();
44 const res = await server.inject({
45 url: '/graphql',
46 method: 'post',
47 payload: { query: 'query { keys { name fingerprint value } }' }
48 });
49 expect(res.statusCode).to.equal(200);
50 expect(res.result.data.keys).to.exist();
51 expect(res.result.data.keys[0].name).to.equal(keys[0].name);
52 expect(res.result.data.keys[0].fingerprint).to.equal(keys[0].fingerprint);
53 expect(res.result.data.keys[0].value).to.equal(keys[0].value);
54 });
55
56 it('can get a single key', async () => {
57 const key = {
58 name: 'test',
59 fingerprint: 'fingerprint',
60 value: 'foo'
61 };
62
63 const server = new Hapi.Server();
64 StandIn.replaceOnce(CloudApi.prototype, 'fetch', (stand) => {
65 return key;
66 });
67
68 await server.register(register);
69 await server.initialize();
70 const res = await server.inject({
71 url: '/graphql',
72 method: 'post',
73 payload: { query: 'query { key(name: "test") { name fingerprint value } }' }
74 });
75 expect(res.statusCode).to.equal(200);
76 expect(res.result.data.key).to.exist();
77 expect(res.result.data.key.name).to.equal(key.name);
78 expect(res.result.data.key.fingerprint).to.equal(key.fingerprint);
79 expect(res.result.data.key.value).to.equal(key.value);
80 });
81
82 it('can create a key', async () => {
83 const server = new Hapi.Server();
84 StandIn.replaceOnce(CloudApi.prototype, 'fetch', (stand, path, options) => {
85 return {
86 name: options.payload.name,
87 value: options.payload.key,
88 fingerprint: 'fingerprint'
89 };
90 });
91
92 await server.register(register);
93 await server.initialize();
94 const res = await server.inject({
95 url: '/graphql',
96 method: 'post',
97 payload: { query: 'mutation { createKey(name: "test", key: "foo") { name fingerprint value } }' }
98 });
99 expect(res.statusCode).to.equal(200);
100 expect(res.result.data.createKey).to.exist();
101 expect(res.result.data.createKey.name).to.equal('test');
102 expect(res.result.data.createKey.fingerprint).to.equal('fingerprint');
103 expect(res.result.data.createKey.value).to.equal('foo');
104 });
105
106 it('can delete a key', async () => {
107 const server = new Hapi.Server();
108 StandIn.replaceOnce(CloudApi.prototype, 'fetch', (stand, path) => {
109 return {
110 name: path.split('/').pop()
111 };
112 });
113
114 await server.register(register);
115 await server.initialize();
116 const res = await server.inject({
117 url: '/graphql',
118 method: 'post',
119 payload: { query: 'mutation { deleteKey(name: "test") { name } }' }
120 });
121 expect(res.statusCode).to.equal(200);
122 expect(res.result.data.deleteKey).to.exist();
123 expect(res.result.data.deleteKey.name).to.equal('test');
124 });
125});