Skip to content

Commit 4b109bd

Browse files
Adding build stop unit test cases
1 parent 4867d45 commit 4b109bd

File tree

2 files changed

+131
-271
lines changed

2 files changed

+131
-271
lines changed

test/unit/bin/commands/stop.js

Lines changed: 7 additions & 267 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe("buildStop", () => {
1717
let body = testObjects.buildStopSampleBody;
1818
let bsConfig = testObjects.sampleBsConfig;
1919

20-
describe("Handle API deprecated", () => {
20+
describe("Handle API success", () => {
2121
var sandbox;
2222

2323
beforeEach(() => {
@@ -34,296 +34,36 @@ describe("buildStop", () => {
3434
});
3535
getErrorCodeFromErrStub = sandbox.stub().returns("random-error");
3636
setDefaultsStub = sandbox.stub();
37+
stopBrowserStackBuildStub = sandbox.stub().returns(Promise.reject(true));
3738
});
3839

3940
afterEach(() => {
4041
sandbox.restore();
4142
sinon.restore();
4243
});
4344

44-
it("message thrown if API deprecated", () => {
45-
let message = Constants.userMessages.API_DEPRECATED;
46-
let messageType = Constants.messageTypes.INFO;
47-
let errorCode = "api_deprecated";
48-
49-
let requestStub = sandbox
50-
.stub(request, "post")
51-
.yields(null, { statusCode: 299 }, null);
52-
53-
const stop = proxyquire('../../../../bin/commands/stop', {
54-
'../helpers/utils': {
55-
validateBstackJson: validateBstackJsonStub,
56-
setUsername: setUsernameStub,
57-
setAccessKey: setAccessKeyStub,
58-
getErrorCodeFromErr: getErrorCodeFromErrStub,
59-
sendUsageReport: sendUsageReportStub,
60-
setUsageReportingFlag: setUsageReportingFlagStub,
61-
setCypressConfigFilename: setCypressConfigFilenameStub,
62-
getUserAgent: getUserAgentStub,
63-
getConfigPath: getConfigPathStub,
64-
setDefaults: setDefaultsStub
65-
},
66-
request: {post: requestStub},
67-
});
68-
69-
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
70-
71-
return stop(args)
72-
.then(function (_bsConfig) {
73-
sinon.assert.calledOnce(requestStub);
74-
sinon.assert.calledOnce(getUserAgentStub);
75-
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, message, messageType, errorCode);
76-
})
77-
.catch((error) => {
78-
chai.assert.isNotOk(error, "Promise error");
79-
});
80-
});
81-
82-
it("message thrown if build returned", () => {
83-
let message = body.message;
84-
let messageType = Constants.messageTypes.INFO;
85-
let errorCode = "api_deprecated";
86-
87-
let requestStub = sandbox
88-
.stub(request, "post")
89-
.yields(null, { statusCode: 299 }, JSON.stringify(body));
90-
91-
const stop = proxyquire('../../../../bin/commands/stop', {
92-
'../helpers/utils': {
93-
validateBstackJson: validateBstackJsonStub,
94-
getErrorCodeFromErr: getErrorCodeFromErrStub,
95-
setUsername: setUsernameStub,
96-
setAccessKey: setAccessKeyStub,
97-
sendUsageReport: sendUsageReportStub,
98-
setUsageReportingFlag: setUsageReportingFlagStub,
99-
setCypressConfigFilename: setCypressConfigFilenameStub,
100-
getUserAgent: getUserAgentStub,
101-
getConfigPath: getConfigPathStub,
102-
setDefaults: setDefaultsStub
103-
},
104-
request: {post: requestStub},
105-
});
106-
107-
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
108-
109-
return stop(args)
110-
.then(function (_bsConfig) {
111-
sinon.assert.calledOnce(requestStub);
112-
sinon.assert.calledOnce(getUserAgentStub);
113-
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, message, messageType, errorCode);
114-
})
115-
.catch((error) => {
116-
chai.assert.isNotOk(error, "Promise error");
117-
});
118-
});
119-
});
120-
121-
describe("Handle statusCode != 200", () => {
122-
beforeEach(() => {
123-
sandbox = sinon.createSandbox();
124-
setUsernameStub = sandbox.stub();
125-
setAccessKeyStub = sandbox.stub();
126-
validateBstackJsonStub = sandbox.stub();
127-
getConfigPathStub = sandbox.stub();
128-
setUsageReportingFlagStub = sandbox.stub().returns(undefined);
129-
setCypressConfigFilenameStub = sandbox.stub().returns(undefined);
130-
getUserAgentStub = sandbox.stub().returns("random user-agent");
131-
sendUsageReportStub = sandbox.stub().callsFake(function () {
132-
return "end";
133-
});
134-
getErrorCodeFromErrStub = sandbox.stub().returns("random-error");
135-
setDefaultsStub = sandbox.stub();
136-
});
137-
138-
afterEach(() => {
139-
sandbox.restore();
140-
sinon.restore();
141-
});
142-
143-
it("message thrown if statusCode != 200", () => {
144-
let message = Constants.userMessages.BUILD_STOP_FAILED;
145-
let messageType = Constants.messageTypes.ERROR;
146-
let errorCode = "api_failed_build_stop";
147-
148-
let requestStub = sinon
149-
.stub(request, "post")
150-
.yields(null, { statusCode: 400 }, null);
151-
152-
const stop = proxyquire('../../../../bin/commands/stop', {
153-
'../helpers/utils': {
154-
validateBstackJson: validateBstackJsonStub,
155-
getErrorCodeFromErr: getErrorCodeFromErrStub,
156-
sendUsageReport: sendUsageReportStub,
157-
setUsername: setUsernameStub,
158-
setAccessKey: setAccessKeyStub,
159-
setUsageReportingFlag: setUsageReportingFlagStub,
160-
setCypressConfigFilename: setCypressConfigFilenameStub,
161-
getUserAgent: getUserAgentStub,
162-
getConfigPath: getConfigPathStub,
163-
setDefaults: setDefaultsStub
164-
},
165-
request: {post: requestStub},
166-
});
167-
168-
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
169-
170-
return stop(args)
171-
.then(function (_bsConfig) {
172-
sinon.assert.calledOnce(requestStub);
173-
sinon.assert.calledOnce(getUserAgentStub);
174-
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, message, messageType, errorCode);
175-
})
176-
.catch((error) => {
177-
chai.assert.isNotOk(error, "Promise error");
178-
});
179-
});
180-
181-
it("message thrown if statusCode != 200 and user unauthorized", () => {
182-
let body_with_message = {
183-
...body,
184-
message: "Unauthorized",
185-
};
186-
187-
let message = `${
188-
Constants.userMessages.BUILD_STOP_FAILED
189-
} with error: \n${JSON.stringify(body_with_message, null, 2)}`;
190-
let messageType = Constants.messageTypes.ERROR;
191-
let errorCode = "api_auth_failed";
192-
193-
let requestStub = sinon
194-
.stub(request, "post")
195-
.yields(null, { statusCode: 401 }, JSON.stringify(body_with_message));
196-
45+
it("should call stopBrowserStackBuild method", () => {
19746
const stop = proxyquire('../../../../bin/commands/stop', {
19847
'../helpers/utils': {
19948
validateBstackJson: validateBstackJsonStub,
200-
getErrorCodeFromErr: getErrorCodeFromErrStub,
201-
sendUsageReport: sendUsageReportStub,
20249
setUsername: setUsernameStub,
20350
setAccessKey: setAccessKeyStub,
204-
setUsageReportingFlag: setUsageReportingFlagStub,
205-
setCypressConfigFilename: setCypressConfigFilenameStub,
206-
getUserAgent: getUserAgentStub,
207-
getConfigPath: getConfigPathStub,
208-
setDefaults: setDefaultsStub
209-
},
210-
request: {post: requestStub},
211-
});
212-
213-
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
214-
215-
return stop(args)
216-
.then(function (_bsConfig) {
217-
sinon.assert.calledOnce(requestStub);
218-
sinon.assert.calledOnce(getUserAgentStub);
219-
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, message, messageType, errorCode);
220-
})
221-
.catch((error) => {
222-
chai.assert.isNotOk(error, "Promise error");
223-
});
224-
});
225-
226-
it("message thrown if statusCode != 200 and build is present", () => {
227-
let message = `${
228-
Constants.userMessages.BUILD_STOP_FAILED
229-
} with error: \n${JSON.stringify(body, null, 2)}`;
230-
let messageType = Constants.messageTypes.ERROR;
231-
let errorCode = "api_failed_build_stop";
232-
233-
let requestStub = sinon
234-
.stub(request, "post")
235-
.yields(null, { statusCode: 402 }, JSON.stringify(body));
236-
237-
const stop = proxyquire('../../../../bin/commands/stop', {
238-
'../helpers/utils': {
239-
validateBstackJson: validateBstackJsonStub,
240-
getErrorCodeFromErr: getErrorCodeFromErrStub,
241-
sendUsageReport: sendUsageReportStub,
242-
setUsername: setUsernameStub,
243-
setAccessKey: setAccessKeyStub,
244-
setUsageReportingFlag: setUsageReportingFlagStub,
245-
setCypressConfigFilename: setCypressConfigFilenameStub,
246-
getUserAgent: getUserAgentStub,
247-
getConfigPath: getConfigPathStub,
248-
setDefaults: setDefaultsStub
249-
},
250-
request: {post: requestStub},
251-
});
252-
253-
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
254-
255-
return stop(args)
256-
.then(function (_bsConfig) {
257-
sinon.assert.calledOnce(requestStub);
258-
sinon.assert.calledOnce(getUserAgentStub);
259-
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, message, messageType, errorCode);
260-
})
261-
.catch((error) => {
262-
chai.assert.isNotOk(error, "Promise error");
263-
});
264-
});
265-
});
266-
267-
describe("Handle API success", () => {
268-
var sandbox;
269-
270-
beforeEach(() => {
271-
sandbox = sinon.createSandbox();
272-
setUsernameStub = sandbox.stub();
273-
setAccessKeyStub = sandbox.stub();
274-
validateBstackJsonStub = sandbox.stub();
275-
getConfigPathStub = sandbox.stub();
276-
setUsageReportingFlagStub = sandbox.stub().returns(undefined);
277-
setCypressConfigFilenameStub = sandbox.stub().returns(undefined);
278-
getUserAgentStub = sandbox.stub().returns("random user-agent");
279-
sendUsageReportStub = sandbox.stub().callsFake(function () {
280-
return "end";
281-
});
282-
getErrorCodeFromErrStub = sandbox.stub().returns("random-error");
283-
setDefaultsStub = sandbox.stub();
284-
});
285-
286-
afterEach(() => {
287-
sandbox.restore();
288-
sinon.restore();
289-
});
290-
291-
it("message thrown if API success", () => {
292-
let message = `${JSON.stringify(body, null, 2)}`;
293-
let messageType = Constants.messageTypes.SUCCESS;
294-
let errorCode = null;
295-
296-
let requestStub = sandbox
297-
.stub(request, "post")
298-
.yields(null, { statusCode: 200 }, JSON.stringify(body));
299-
300-
const stop = proxyquire('../../../../bin/commands/stop', {
301-
'../helpers/utils': {
302-
validateBstackJson: validateBstackJsonStub,
30351
getErrorCodeFromErr: getErrorCodeFromErrStub,
30452
sendUsageReport: sendUsageReportStub,
305-
setUsername: setUsernameStub,
306-
setAccessKey: setAccessKeyStub,
30753
setUsageReportingFlag: setUsageReportingFlagStub,
30854
setCypressConfigFilename: setCypressConfigFilenameStub,
309-
getUserAgent: getUserAgentStub,
31055
getConfigPath: getConfigPathStub,
311-
setDefaults: setDefaultsStub
312-
},
313-
request: {post: requestStub},
56+
setDefaults: setDefaultsStub,
57+
stopBrowserStackBuild: stopBrowserStackBuildStub
58+
}
31459
});
31560

31661
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
31762

31863
return stop(args)
31964
.then(function (_bsConfig) {
320-
sinon.assert.calledOnce(requestStub);
321-
sinon.assert.calledOnce(getUserAgentStub);
322-
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, message, messageType, errorCode);
65+
sinon.assert.calledOnce(stopBrowserStackBuildStub);
32366
})
324-
.catch((error) => {
325-
chai.assert.isNotOk(error, "Promise error");
326-
});
32767
});
32868
});
32969

0 commit comments

Comments
 (0)