Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit fd96524

Browse files
committed
feat(core): added grantType helper to authScheme
1 parent 1ef4992 commit fd96524

File tree

2 files changed

+80
-3
lines changed

2 files changed

+80
-3
lines changed

packages/api-elements/lib/elements/AuthScheme.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class AuthScheme extends ArrayElement {
1818
/**
1919
* @name transitions
2020
* @type ArraySlice
21-
* @memberof HttpMessagePayload.prototype
21+
* @memberof AuthScheme.prototype
2222
*/
2323
get transitions() {
2424
return this.children.filter(item => item.element === 'transition');
@@ -27,11 +27,25 @@ class AuthScheme extends ArrayElement {
2727
/**
2828
* @name members
2929
* @type ArraySlice
30-
* @memberof HttpMessagePayload.prototype
30+
* @memberof AuthScheme.prototype
3131
*/
3232
get members() {
3333
return this.children.filter(item => item.element === 'member');
3434
}
35+
36+
/**
37+
* @name grantTypeValue
38+
* @memberof AuthScheme.prototype
39+
*/
40+
get grantTypeValue() {
41+
const grantType = this.members.find(item => item.key.toValue() === 'grantType');
42+
43+
if (grantType && grantType.value) {
44+
return grantType.value.toValue();
45+
}
46+
47+
return undefined;
48+
}
3549
}
3650

3751
module.exports = AuthScheme;

packages/api-elements/test/api-description-test.js

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,19 @@ describe('API description namespace', () => {
10031003
},
10041004
},
10051005
},
1006+
{
1007+
element: 'member',
1008+
content: {
1009+
key: {
1010+
element: 'string',
1011+
content: 'grantType',
1012+
},
1013+
value: {
1014+
element: 'string',
1015+
content: 'token',
1016+
},
1017+
},
1018+
},
10061019
{
10071020
element: 'transition',
10081021
attributes: {
@@ -1039,7 +1052,7 @@ describe('API description namespace', () => {
10391052

10401053
it('should contain members', () => {
10411054
const { members } = authScheme;
1042-
expect(members).to.have.length(1);
1055+
expect(members).to.have.length(2);
10431056
members.forEach((item) => {
10441057
expect(item).to.be.an.instanceof(MemberElement);
10451058
});
@@ -1052,6 +1065,56 @@ describe('API description namespace', () => {
10521065
expect(item).to.be.an.instanceof(Transition);
10531066
});
10541067
});
1068+
1069+
it('should retrieve grant type', () => {
1070+
expect(authScheme.grantTypeValue).to.equal('token');
1071+
});
1072+
1073+
it('without grant type should return undefined', () => {
1074+
const refracted = {
1075+
element: 'Token Auth Scheme',
1076+
meta: {
1077+
id: {
1078+
element: 'string',
1079+
content: 'Custom Token Auth',
1080+
},
1081+
},
1082+
content: [],
1083+
};
1084+
1085+
const element = namespace.fromRefract(refracted);
1086+
const authScheme = new AuthScheme(element.content, element.meta, element.attributes);
1087+
1088+
expect(authScheme.grantTypeValue).to.be.undefined;
1089+
});
1090+
1091+
it('without grant type value should return undefined', () => {
1092+
const refracted = {
1093+
element: 'Token Auth Scheme',
1094+
meta: {
1095+
id: {
1096+
element: 'string',
1097+
content: 'Custom Token Auth',
1098+
},
1099+
},
1100+
content: [
1101+
{
1102+
element: 'member',
1103+
content: {
1104+
key: {
1105+
element: 'string',
1106+
content: 'grantType',
1107+
},
1108+
},
1109+
},
1110+
],
1111+
};
1112+
1113+
const element = namespace.fromRefract(refracted);
1114+
const authScheme = new AuthScheme(element.content, element.meta, element.attributes);
1115+
1116+
expect(authScheme.grantTypeValue).to.be.undefined;
1117+
});
10551118
});
10561119

10571120
context('HTTP transaction element', () => {

0 commit comments

Comments
 (0)