Skip to content

Commit c0014f1

Browse files
committed
metadata tests
1 parent 5c65af5 commit c0014f1

2 files changed

Lines changed: 106 additions & 11 deletions

File tree

src/MetadataService.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ export default class MetadataService {
1919
return Promise.resolve(this._settings.metadata);
2020
}
2121

22-
if (!this._settings.authority) {
23-
Promise.reject(new Error("No authority configured"));
22+
if (!this._settings.metadataUrl) {
23+
return Promise.reject(new Error("No metadataUrl configured"));
2424
}
2525

26-
return this._jsonService.getJson(this._settings.authority)
26+
return this._jsonService.getJson(this._settings.metadataUrl)
2727
.then(metadata => {
2828
this._settings.metadata = metadata;
2929
return metadata;

test/MetadataService.spec.js

Lines changed: 103 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,118 @@ let assert = chai.assert;
77
describe("MetadataService", function() {
88
let subject;
99
let settings;
10-
11-
beforeEach(function(){
10+
let stubJsonService;
11+
12+
beforeEach(function() {
1213
settings = {};
13-
subject = new MetadataService(settings);
14+
stubJsonService = new StubJsonService();
15+
subject = new MetadataService(settings, stubJsonService);
1416
});
15-
16-
describe("parseResult", function() {
17-
17+
18+
describe("constructor", function() {
19+
1820
it("should require a settings param", function() {
19-
try{
21+
try {
2022
new MetadataService();
2123
}
22-
catch(e){
24+
catch (e) {
2325
return;
2426
}
2527
assert.fail();
2628
});
29+
30+
});
31+
32+
describe("getMetadata", function() {
33+
34+
it("should return a promise", function() {
35+
subject.getMetadata().should.be.instanceof(Promise);
36+
});
37+
38+
it("should use metadata on settings", function(done) {
39+
settings.metadata = "test";
40+
41+
var p = subject.getMetadata();
42+
43+
p.then(result => {
44+
result.should.equal("test");
45+
done();
46+
});
47+
});
48+
49+
it("should require metadataUrl", function(done) {
50+
delete settings.metadataUrl;
51+
52+
var p = subject.getMetadata();
53+
54+
p.then(null, err => {
55+
err.message.should.contain('metadataUrl');
56+
done();
57+
});
58+
});
59+
60+
it("should require metadataUrl", function(done) {
61+
delete settings.metadataUrl;
62+
63+
var p = subject.getMetadata();
64+
65+
p.then(null, err => {
66+
err.message.should.contain('metadataUrl');
67+
done();
68+
});
69+
});
70+
71+
it("should use metadataUrl to make json call", function() {
72+
settings.metadataUrl = "http://sts/metadata";
73+
stubJsonService.result = Promise.resolve('test');
74+
75+
subject.getMetadata();
76+
77+
stubJsonService.url.should.equal("http://sts/metadata");
78+
});
79+
80+
it("should return metadata from json call", function(done) {
81+
settings.metadataUrl = "http://sts/metadata";
82+
stubJsonService.result = Promise.resolve("test");
83+
84+
var p = subject.getMetadata();
85+
86+
p.then(result => {
87+
result.should.equal("test");
88+
done();
89+
});
90+
});
91+
92+
it("should cache metadata from json call", function(done) {
93+
settings.metadataUrl = "http://sts/metadata";
94+
stubJsonService.result = Promise.resolve("test");
95+
96+
var p = subject.getMetadata();
97+
98+
p.then(result => {
99+
settings.metadata.should.equal("test");
100+
done();
101+
});
102+
});
27103

104+
it("should fail if json call fails", function(done) {
105+
settings.metadataUrl = "http://sts/metadata";
106+
stubJsonService.result = Promise.reject("test");
107+
108+
var p = subject.getMetadata();
109+
110+
p.then(null, err => {
111+
err.message.should.contain("metadata");
112+
done();
113+
});
114+
});
115+
28116
});
29117
});
118+
119+
class StubJsonService {
120+
getJson(url) {
121+
this.url = url;
122+
return this.result;
123+
}
124+
}

0 commit comments

Comments
 (0)