test('Should show error on remove of non-existent endpoint', done => { // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({delEndpoint: 'do-not-exist'})); // execute login removeEndpoint({}).then(() => { // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); done(); }); });
// test failure test('Should not login with wrong certificate', done => { // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve(failedLogin.user)); // spy on console const consoleSpy = sinon.spy(console, 'log'); // execute login login({key: privateKeyNameBroken}).then(() => { // make sure log in was successful // check that server was called expect(failedLoginSrv.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore inquirer inquirer.prompt.restore(); // restore console console.log.restore(); done(); }); });
// test deauth test('Should deauth on 401 on questions list', done => { // save config for restoration cfg.__save('template'); // handle correct request const setupServer = nock('http://localhost:8080').get('/setup').query(true).reply(401); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({givenRecipeName: 'test'})); // execute login setup({}).then(() => { // make sure log in was successful // check that server was called expect(setupServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock setupServer.done(); done(); }); });
test('Should deauth on 401 on list', done => { // restore config with auth cfg.__restore('token'); // handle correct request const tokenServer = nock('http://localhost:8080').get('/deployToken').reply(401); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({tokenName: 'test'})); // execute login token({cmd: 'ls'}).then(() => { // make sure log in was successful // check that server was called expect(tokenServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock tokenServer.done(); done(); }); });
test('Should not remove only endpoint', done => { // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({delEndpoint: origCfg.endpoint})); // execute login removeEndpoint({}).then(() => { // first check console output expect(consoleSpy.args).toMatchSnapshot(); // then check config changes expect(cfg.userConfig.endpoint).toEqual(origCfg.endpoint); expect(cfg.userConfig.user.username).toEqual(origCfg.user.username); expect(cfg.userConfig.token).toEqual(origCfg.token); expect(cfg.userConfig.endpoints.length).toEqual(0); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); done(); }); });
// test generation test('Should generate token', done => { // handle correct request const tokenServer = nock('http://localhost:8080').post('/deployToken').reply(200, {token: 'test'}); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({tokenName: 'test'})); // execute login token({}).then(() => { // make sure log in was successful // check that server was called expect(tokenServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock tokenServer.done(); done(); }); });
// test login test('Should login using key with passphrase', done => { // stup inquirer answers sinon .stub(inquirer, 'prompt') .callsFake(() => Promise.resolve(Object.assign({}, correctLoginWithPassphrase.user, {password: 'test123'}))); // spy on console const consoleSpy = sinon.spy(console, 'log'); // execute login login({key: privateKeyWithPassphrase}).then(() => { // make sure log in was successful // check that server was called expect(correctLoginPassSrv.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // then check config changes expect(cfg.userConfig.token).toEqual(token); expect(cfg.userConfig.user.username).toEqual(correctLoginWithPassphrase.user.username); // restore inquirer inquirer.prompt.restore(); // restore console console.log.restore(); done(); }); });
test('Should remove current endpoint using inquirer', done => { // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({delEndpoint: mockEndpoint})); // execute login removeEndpoint({}).then(() => { // first check console output expect(consoleSpy.args).toMatchSnapshot(); // then check config changes expect(cfg.userConfig.endpoint).toEqual(mockEndpoint2); expect(cfg.userConfig.user).toBeNull(); expect(cfg.userConfig.token).toBeNull(); expect(cfg.userConfig.endpoints.length).toEqual(1); expect(cfg.userConfig.endpoints[0].endpoint).toEqual(origCfg.endpoint); expect(cfg.userConfig.endpoints[0].user.username).toEqual(origCfg.user.username); expect(cfg.userConfig.endpoints[0].token).toEqual(origCfg.token); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); done(); }); });
// test wrong credentials test('Should fail to login with broken private key', done => { // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve(wrongUser)); // spy on console const consoleSpy = sinon.spy(console, 'log'); // execute login login({key: 'asd'}).then(() => { // first check console output expect(consoleSpy.args).toMatchSnapshot(); // then check the config (should not change) expect(cfg.userConfig.token).toEqual(token); expect(cfg.userConfig.user.username).toEqual(correctLogin.user.username); // restore inquirer inquirer.prompt.restore(); // restore console console.log.restore(); done(); }); });
// test login test('Should login and update endpoint when endpoint was provided', done => { // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve(correctLogin.user)); // spy on console const consoleSpy = sinon.spy(console, 'log'); // execute login login({url: testEndpointUrl, key: privateKeyName}).then(() => { // make sure log in was successful // check that server was called expect(correctEndpointLoginSrv.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // then check config changes expect(cfg.userConfig.token).toEqual(token); expect(cfg.userConfig.user.username).toEqual(correctLogin.user.username); expect(cfg.userConfig.endpoint).toEqual(testEndpointUrl); // restore inquirer inquirer.prompt.restore(); // restore console console.log.restore(); done(); }); });
// test generation test('Should create new secret', done => { // handle correct request const secretServer = nock('http://localhost:8080') .post('/secrets') .reply(200, {name: testSecret.secretName, value: testSecret.secretValue}); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve(testSecret)); // execute login secrets({}).then(() => { // make sure log in was successful // check that server was called expect(secretServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock secretServer.done(); done(); }); });
// test deauth test('Should deauth on 401 on creation', done => { // save current config state cfg.__save('token'); // handle correct request const secretServer = nock('http://localhost:8080').post('/secrets').reply(401); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({secretName: 'test'})); // execute login secrets({}).then(() => { // make sure log in was successful // check that server was called expect(secretServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock secretServer.done(); done(); }); });
// test login test('Should login', done => { // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve(correctLogin.user)); // spy on console const consoleSpy = sinon.spy(console, 'log'); // execute login login({key: privateKeyName}).then(() => { // make sure log in was successful // check that server was called expect(correctLoginSrv.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // then check config changes expect(cfg.userConfig.token).toEqual(token); expect(cfg.userConfig.user.username).toEqual(correctLogin.user.username); // restore inquirer inquirer.prompt.restore(); // restore console console.log.restore(); done(); }); });
test('Should deauth on 401 on list', done => { // restore original config cfg.__restore('template'); // handle correct request const templateServer = nock('http://localhost:8080').get('/templates').reply(401); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({templateName: 'test'})); // execute login template({cmd: 'ls'}).then(() => { // make sure log in was successful // check that server was called expect(templateServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock templateServer.done(); done(); }); });
test('Should deauth on 401 on list', done => { // restore config with auth cfg.__restore('token'); // handle correct request const secretServer = nock('http://localhost:8080').get('/secrets').reply(401); // spy on console const consoleSpy = sinon.spy(console, 'log'); // stup inquirer answers sinon.stub(inquirer, 'prompt').callsFake(() => Promise.resolve({secretName: 'test'})); // execute login secrets({cmd: 'ls'}).then(() => { // make sure log in was successful // check that server was called expect(secretServer.isDone()).toBeTruthy(); // first check console output expect(consoleSpy.args).toMatchSnapshot(); // restore console console.log.restore(); // restore inquirer inquirer.prompt.restore(); // tear down nock secretServer.done(); done(); }); });