Skip to content

Commit 8f34081

Browse files
committed
refactored APIs on metadata service
1 parent 834d97b commit 8f34081

File tree

9 files changed

+92
-103
lines changed

9 files changed

+92
-103
lines changed

src/MetadataService.js

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -38,39 +38,36 @@ export default class MetadataService {
3838
});
3939
}
4040

41-
getAuthorizationUrl(){
42-
Log.info("MetadataService.getAuthorizationUrl");
43-
44-
return this.getMetadata().then(metadata => {
45-
Log.info("metadata recieved");
46-
47-
if (!metadata.authorization_endpoint) {
48-
Log.error("Metadata does not contain authorization_endpoint");
49-
throw new Error("Metadata does not contain authorization_endpoint");
50-
}
51-
52-
return metadata.authorization_endpoint;
53-
}, err => {
54-
Log.error("Failed to load authorization url", err);
55-
throw new Error("Failed to load authorization url")
56-
});
41+
getAuthorizationEndpoint(){
42+
Log.info("MetadataService.getAuthorizationEndpoint");
43+
return this.getMetadataProperty("authorization_endpoint");
5744
}
5845

59-
getUserInfoUrl(){
60-
Log.info("MetadataService.getUserInfoUrl");
46+
getUserInfoEndpoint(){
47+
Log.info("MetadataService.getUserInfoEndpoint");
48+
return this.getMetadataProperty("userinfo_endpoint");
49+
}
50+
51+
getEndSessionEndpoint(){
52+
Log.info("MetadataService.getEndSessionEndpoint");
53+
return this.getMetadataProperty("end_session_endpoint");
54+
}
55+
56+
getMetadataProperty(name){
57+
Log.info("MetadataService.getMetadataProperty", name);
6158

6259
return this.getMetadata().then(metadata => {
6360
Log.info("metadata recieved");
6461

65-
if (!metadata.userinfo_endpoint) {
66-
Log.error("Metadata does not contain userinfo_endpoint");
67-
throw new Error("Metadata does not contain userinfo_endpoint");
62+
if (metadata[name] === undefined) {
63+
Log.error("Metadata does not contain property " + name);
64+
throw new Error("Metadata does not contain property " + name);
6865
}
6966

70-
return metadata.userinfo_endpoint;
67+
return metadata[name];
7168
}, err => {
72-
Log.error("Failed to load userinfo url", err);
73-
throw new Error("Failed to load userinfo url")
69+
Log.error("Failed to load metadata property " + name, err);
70+
throw new Error("Failed to load metadata property " + name)
7471
});
7572
}
7673

@@ -82,17 +79,10 @@ export default class MetadataService {
8279
return Promise.resolve(this._settings.signingKeys);
8380
}
8481

85-
return this.getMetadata().then(metadata => {
86-
Log.info("Metadata received", metadata);
87-
88-
if (!metadata.jwks_uri) {
89-
Log.error("Metadata does not contain jwks_uri");
90-
throw new Error("Metadata does not contain jwks_uri");
91-
}
92-
93-
Log.info("getting keys from", metadata.jwks_uri);
82+
return this.getMetadataProperty("jwks_uri").then(jwks_uri => {
83+
Log.info("jwks_uri received", jwks_uri);
9484

95-
return this._jsonService.getJson(metadata.jwks_uri).then(keySet => {
85+
return this._jsonService.getJson(jwks_uri).then(keySet => {
9686
Log.info("key set received", keySet);
9787

9888
if (!keySet.keys){

src/OidcClientService.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,18 @@ export default class OidcClientService {
1919
return this._settings;
2020
}
2121

22-
createSigninRequest() {
22+
createSigninRequest(request) {
2323
Log.info("createSigninRequest");
24-
25-
//reSigninRequest.create(this._settings);
2624
}
2725

2826
processSigninResponse(){
2927
Log.info("processSigninResponse");
30-
3128
}
3229

33-
createSignoutRequest(){
30+
createSignoutRequest(request){
3431
Log.info("createSignoutRequest");
3532

33+
3634
}
3735

3836
// OidcClient.prototype.createTokenRequestAsync = function () {

src/OidcClientSettings.js

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -56,24 +56,4 @@ export default class OidcClientSettings {
5656
get filterProtocolClaims(){
5757
return this._filterProtocolClaims;
5858
}
59-
60-
// get isOidc() {
61-
// if (this._settings.response_type) {
62-
// var result = this._settings.response_type.split(/\s+/g).filter(function(item) {
63-
// return item === "id_token";
64-
// });
65-
// return !!(result[0]);
66-
// }
67-
// return false;
68-
// }
69-
70-
// get isOAuth() {
71-
// if (this._settings.response_type) {
72-
// var result = this._settings.response_type.split(/\s+/g).filter(function(item) {
73-
// return item === "token";
74-
// });
75-
// return !!(result[0]);
76-
// }
77-
// return false;
78-
// }
7959
}

src/SigninRequest.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,24 @@ export default class SigninRequest {
22
constructor(settings){
33
this._settings = settings;
44
}
5+
6+
// get isOidc() {
7+
// if (this._settings.response_type) {
8+
// var result = this._settings.response_type.split(/\s+/g).filter(function(item) {
9+
// return item === "id_token";
10+
// });
11+
// return !!(result[0]);
12+
// }
13+
// return false;
14+
// }
15+
16+
// get isOAuth() {
17+
// if (this._settings.response_type) {
18+
// var result = this._settings.response_type.split(/\s+/g).filter(function(item) {
19+
// return item === "token";
20+
// });
21+
// return !!(result[0]);
22+
// }
23+
// return false;
24+
// }
525
}

src/SignoutRequest.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
11
export default class SignoutRequest {
2-
constructor(settings){
3-
this._settings = settings;
4-
}
52
}

src/UserInfoService.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default class UserInfoService {
2424
return Promise.reject(new Error("A token is required"));
2525
}
2626

27-
return this._metadataService.getUserInfoUrl().then(url => {
27+
return this._metadataService.getUserInfoEndpoint().then(url => {
2828
Log.info("received userinfo url", url);
2929

3030
return this._jsonService.getJson(url, token).then(claims => {

test/MetadataService.spec.js

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -117,34 +117,34 @@ describe("MetadataService", function() {
117117
});
118118

119119
});
120-
121-
describe("getAuthorizationUrl", function() {
120+
121+
describe("getMetadataProperty", function() {
122122

123123
it("should return a promise", function() {
124-
subject.getAuthorizationUrl().should.be.instanceof(Promise);
124+
subject.getMetadataProperty().should.be.instanceof(Promise);
125125
});
126126

127127
it("should use metadata on settings", function(done) {
128128
settings.metadata = {
129-
authorization_endpoint: "http://sts/authorize"
129+
foo: "test"
130130
};
131131

132-
let p = subject.getAuthorizationUrl();
132+
let p = subject.getMetadataProperty("foo");
133133

134134
p.then(result => {
135-
result.should.equal("http://sts/authorize");
135+
result.should.equal("test");
136136
done();
137137
});
138138
});
139139

140-
it("should fail if no authorization_endpoint on metadata", function(done) {
140+
it("should fail if no data on metadata", function(done) {
141141
settings.metadata = {
142142
};
143143

144-
let p = subject.getAuthorizationUrl();
144+
let p = subject.getMetadataProperty("foo");
145145

146146
p.then(null, err => {
147-
err.message.should.contain("authorization_endpoint");
147+
err.message.should.contain("foo");
148148
done();
149149
});
150150
});
@@ -155,61 +155,65 @@ describe("MetadataService", function() {
155155
};
156156
stubJsonService.result = Promise.reject("test");
157157

158-
let p = subject.getAuthorizationUrl();
158+
let p = subject.getMetadataProperty("foo");
159159

160160
p.then(null, err => {
161-
err.message.should.contain("authorization");
161+
err.message.should.contain("foo");
162162
done();
163163
});
164164
});
165165

166166
});
167167

168-
describe("getUserInfoUrl", function() {
169-
170-
it("should return a promise", function() {
171-
subject.getUserInfoUrl().should.be.instanceof(Promise);
172-
});
168+
describe("getAuthorizationEndpoint", function() {
173169

174-
it("should use metadata on settings", function(done) {
170+
it("should return value from metadata", function(done) {
175171
settings.metadata = {
176-
userinfo_endpoint: "http://sts/userinfo"
172+
authorization_endpoint: "http://sts/authorize"
177173
};
178174

179-
let p = subject.getUserInfoUrl();
175+
let p = subject.getAuthorizationEndpoint();
180176

181177
p.then(result => {
182-
result.should.equal("http://sts/userinfo");
178+
result.should.equal("http://sts/authorize");
183179
done();
184180
});
185181
});
182+
183+
});
184+
185+
describe("getUserInfoEndpoint", function() {
186186

187-
it("should fail if no userinfo_endpoint on metadata", function(done) {
187+
it("should return value from", function(done) {
188188
settings.metadata = {
189+
userinfo_endpoint: "http://sts/userinfo"
189190
};
190191

191-
let p = subject.getUserInfoUrl();
192+
let p = subject.getUserInfoEndpoint();
192193

193-
p.then(null, err => {
194-
err.message.should.contain("userinfo_endpoint");
194+
p.then(result => {
195+
result.should.equal("http://sts/userinfo");
195196
done();
196197
});
197198
});
198-
199-
it("should fail if json call to load metadata fails", function(done) {
199+
200+
});
201+
202+
describe("getEndSessionEndpoint", function() {
203+
204+
it("should return value from", function(done) {
200205
settings.metadata = {
201-
metadataUrl:"http://sts/metadata"
206+
end_session_endpoint: "http://sts/signout"
202207
};
203-
stubJsonService.result = Promise.reject("test");
204208

205-
let p = subject.getUserInfoUrl();
209+
let p = subject.getEndSessionEndpoint();
206210

207-
p.then(null, err => {
208-
err.message.should.contain("userinfo");
211+
p.then(result => {
212+
result.should.equal("http://sts/signout");
209213
done();
210214
});
211215
});
212-
216+
213217
});
214218

215219
describe("getSigningKeys", function() {
@@ -235,7 +239,7 @@ describe("MetadataService", function() {
235239
let p = subject.getSigningKeys();
236240

237241
p.then(null, err => {
238-
err.message.should.contain('jwks_uri');
242+
err.message.should.contain('signing keys');
239243
done();
240244
});
241245
});

test/StubMetadataService.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export default class StubMetadataService{
2-
getUserInfoUrl(){
3-
return this.userInfoUrlResult;
2+
getUserInfoEndpoint(){
3+
return this.userInfoEndpointResult;
44
}
55
}

test/UserInfoService.spec.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ describe("UserInfoService", function() {
4949
});
5050
});
5151

52-
it("should call userinfo url and pass token", function(done) {
53-
stubMetadataService.userInfoUrlResult = Promise.resolve("http://sts/userinfo");
52+
it("should call userinfo endpoint and pass token", function(done) {
53+
stubMetadataService.userInfoEndpointResult = Promise.resolve("http://sts/userinfo");
5454
stubJsonService.result = Promise.resolve("test");
5555

5656
subject.getClaims("token").then(claims => {
@@ -62,7 +62,7 @@ describe("UserInfoService", function() {
6262
});
6363

6464
it("should fail when dependencies fail", function(done) {
65-
stubMetadataService.userInfoUrlResult = Promise.reject("test");
65+
stubMetadataService.userInfoEndpointResult = Promise.reject("test");
6666

6767
subject.getClaims("token").then(null,
6868
err => {
@@ -74,7 +74,7 @@ describe("UserInfoService", function() {
7474
});
7575

7676
it("should return claims", function(done) {
77-
stubMetadataService.userInfoUrlResult = Promise.resolve("http://sts/userinfo");
77+
stubMetadataService.userInfoEndpointResult = Promise.resolve("http://sts/userinfo");
7878
stubJsonService.result = Promise.resolve({
7979
foo: 1, bar: 'test',
8080
aud:'some_aud', iss:'issuer',
@@ -99,7 +99,7 @@ describe("UserInfoService", function() {
9999
});
100100

101101
it("should filter protocol claims", function(done) {
102-
stubMetadataService.userInfoUrlResult = Promise.resolve("http://sts/userinfo");
102+
stubMetadataService.userInfoEndpointResult = Promise.resolve("http://sts/userinfo");
103103
stubJsonService.result = Promise.resolve({
104104
foo: 1, bar: 'test',
105105
aud:'some_aud', iss:'issuer',

0 commit comments

Comments
 (0)