UNPKG

2.48 kBJavaScriptView Raw
1var assert = require('assert');
2var sinon = require('sinon');
3var inquirer = require('inquirer');
4var request = require('request');
5var _ = require('lodash');
6var parseUrl = require('url').parse;
7var listApps = require('../commands/list-apps');
8var log = require('../lib/log');
9
10require('dash-assert');
11
12describe('list-apps', function() {
13 var self;
14
15 beforeEach(function() {
16 self = this;
17
18 this.mockAnswers = {};
19 this.program = {
20 profile: {
21 endpoint: 'https://apphost.com/',
22 jwt: {
23 token: '23523454'
24 }
25 }
26 };
27
28 this.orgs = [];
29 this.apps = [];
30
31 this.mockInquirer = require('./mock-inquirer')(this.mockAnswers);
32 sinon.stub(inquirer, 'prompt', this.mockInquirer.prompt);
33
34 sinon.stub(request, 'get', function(options, callback) {
35 var urlPath = parseUrl(options.url).pathname;
36 switch (urlPath) {
37 case '/api/profile/orgs':
38 return callback(null, {statusCode: 200}, self.orgs);
39 break;
40 case '/api/orgs/1/apps':
41 return callback(null, {statusCode: 200}, self.apps);
42 break;
43 default:
44 throw new Error("Unexpected request " + urlPath);
45 }
46 });
47
48 sinon.stub(log, 'write', _.noop());
49 sinon.stub(console, 'log', _.noop());
50 });
51
52 afterEach(function() {
53 request.get.restore();
54 inquirer.prompt.restore();
55 log.write.restore();
56 console.log.restore();
57 });
58
59 it('prompts for org', function(done) {
60 this.orgs = [{orgId: '1'}, {orgId: '2'}];
61 this.mockAnswers.orgId = '1';
62
63 listApps(this.program, function(err) {
64 if (err) return done(err);
65 assert.ok(self.mockInquirer.wasAsked('orgId'));
66
67 assert.isTrue(request.get.calledWith(
68 sinon.match({url: 'https://apphost.com/api/profile/orgs'})));
69
70 assert.isTrue(request.get.calledWith(
71 sinon.match({url: 'https://apphost.com/api/orgs/1/apps'})));
72
73 done();
74 });
75 });
76
77 it('does not prompt for orgId if only one org', function(done) {
78 this.orgs = [{orgId: '1'}];
79
80 listApps(this.program, function(err) {
81 if (err) return done(err);
82 assert.isFalse(self.mockInquirer.wasAsked('orgId'));
83
84 done();
85 });
86 });
87
88 it('displays message if user not member of any orgs', function(done) {
89 listApps(this.program, function(err) {
90 if (err) return done(err);
91 log.write.calledWith(sinon.match("You don't belong to any organizations"));
92
93 done();
94 });
95 });
96});