Skip to content

Commit f9e83fc

Browse files
committed
add text validator api key
1 parent 8a506b2 commit f9e83fc

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
describe('DG.ApiKeyValidator', function() {
2+
afterEach(function() {
3+
validator = null;
4+
});
5+
6+
describe('#validate', function() {
7+
var xhr;
8+
var requests = [];
9+
var testApiKey = window.__karma__.config.secretKey;
10+
var validator;
11+
beforeEach(function() {
12+
validator = new DG.ApiKeyValidator(testApiKey);
13+
xhr = sinon.useFakeXMLHttpRequest();
14+
requests = [];
15+
xhr.onCreate = function(req) { requests.push(req); };
16+
});
17+
18+
afterEach(function() {
19+
xhr.restore();
20+
validator.destroy();
21+
validator = null;
22+
});
23+
24+
25+
it('should make a request to the correct endpoint', function() {
26+
validator.validate(function() {});
27+
expect(requests.length).to.be(1);
28+
expect(requests[0].url).to.be(validator.endpoint);
29+
expect(requests[0].method).to.be('GET');
30+
});
31+
32+
it('should handle successful response', function(done) {
33+
var response = {
34+
meta: {code: 200},
35+
result: {
36+
// eslint-disable-next-line camelcase
37+
is_active: true,
38+
service: {
39+
// eslint-disable-next-line camelcase
40+
is_active: true,
41+
status: {
42+
code: 'ok'
43+
}
44+
}
45+
}
46+
};
47+
48+
validator.validate(function(result) {
49+
expect(result.result.service.is_active).to.eql(response.result.service.is_active);
50+
expect(validator.isLoading).to.be(false);
51+
done();
52+
});
53+
54+
requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify(response));
55+
});
56+
});
57+
58+
describe('#invalid', function() {
59+
var xhr;
60+
var requests = [];
61+
var invalidApiKey = window.__karma__.config.secretInvalidKey;
62+
var validator;
63+
beforeEach(function() {
64+
validator = new DG.ApiKeyValidator(invalidApiKey);
65+
xhr = sinon.useFakeXMLHttpRequest();
66+
requests = [];
67+
xhr.onCreate = function(req) { requests.push(req); };
68+
});
69+
70+
afterEach(function() {
71+
xhr.restore();
72+
validator.destroy();
73+
validator = null;
74+
});
75+
76+
it('should handle insecure response the key service is blocked', function(done) {
77+
var response = {
78+
meta: {code: 200},
79+
result: {
80+
// eslint-disable-next-line camelcase
81+
is_active: false,
82+
service: {
83+
// eslint-disable-next-line camelcase
84+
is_active: false,
85+
status: {
86+
code: 'blocked'
87+
}
88+
}
89+
}
90+
};
91+
92+
validator.validate(function(result) {
93+
expect(result.result.service.is_active).to.eql(response.result.service.is_active);
94+
expect(validator.isLoading).to.be(false);
95+
done();
96+
});
97+
98+
requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify(response));
99+
});
100+
});
101+
102+
describe('#empty', function() {
103+
var xhr;
104+
var requests = [];
105+
var validator;
106+
beforeEach(function() {
107+
validator = new DG.ApiKeyValidator('');
108+
xhr = sinon.useFakeXMLHttpRequest();
109+
requests = [];
110+
xhr.onCreate = function(req) { requests.push(req); };
111+
});
112+
113+
afterEach(function() {
114+
xhr.restore();
115+
validator.destroy();
116+
validator = null;
117+
});
118+
119+
it('should handle insecure response without key', function(done) {
120+
var response = {
121+
meta: {code: 400},
122+
result: {}
123+
};
124+
125+
validator.validate(function(result) {
126+
expect(result.meta.code).to.eql(response.meta.code);
127+
expect(validator.isLoading).to.be(false);
128+
done();
129+
});
130+
requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify(response));
131+
});
132+
133+
});
134+
});

0 commit comments

Comments
 (0)