File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22 "name" : " oidc-client" ,
33 "version" : " 1.0.0" ,
44 "description" : " OpenID Connect (OIDC) client library" ,
5- "main" : " src/index .js" ,
5+ "main" : " src/_index .js" ,
66 "scripts" : {
77 "build" : " webpack" ,
88 "test" : " mocha --compilers js:babel-register test/*.spec.js"
Original file line number Diff line number Diff line change 1+ export default class AuthorizationResultParser {
2+ constructor ( location ) {
3+ this . _location = location ;
4+ }
5+
6+ parseResult ( value ) {
7+ value = value || this . _location . hash ;
8+
9+ var idx = value . lastIndexOf ( "#" ) ;
10+ if ( idx >= 0 ) {
11+ value = value . substr ( idx + 1 ) ;
12+ }
13+
14+ var params = { } ,
15+ regex = / ( [ ^ & = ] + ) = ( [ ^ & ] * ) / g,
16+ m ;
17+
18+ var counter = 0 ;
19+ while ( m = regex . exec ( value ) ) {
20+ params [ decodeURIComponent ( m [ 1 ] ) ] = decodeURIComponent ( m [ 2 ] ) ;
21+ if ( counter ++ > 50 ) {
22+ return {
23+ error : "Response exceeded expected number of parameters"
24+ } ;
25+ }
26+ }
27+
28+ for ( var prop in params ) {
29+ return params ;
30+ }
31+ }
32+ }
Original file line number Diff line number Diff line change 11export default class OidcClientService {
2- constructor ( settings , metadataService ) {
2+ constructor ( settings , metadataService , authorizationResultParser ) {
33 this . _settings = settings ;
44 this . _metadataService = metadataService ;
5+ this . _authorizationResultParser = authorizationResultParser ;
56 }
67}
Original file line number Diff line number Diff line change 1+ import AuthorizationResultParser from './AuthorizationResultParser' ;
12import XMLHttpRequestFactory from './XMLHttpRequestFactory' ;
23import JsonService from './JsonService' ;
34import MetadataService from './MetadataService' ;
45
56import OidcClientService from './OidcClientService' ;
67
8+ let parser = new AuthorizationResultParser ( window . location ) ;
79let xmlHttpRequestFactory = new XMLHttpRequestFactory ( ) ;
810let jsonService = new JsonService ( xmlHttpRequestFactory ) ;
911let metadataService = new MetadataService ( jsonService ) ;
1012
1113export default class OidcClient extends OidcClientService {
1214 constructor ( settings ) {
13- super ( settings , metadataService )
15+ super ( settings , metadataService , parser )
1416 }
1517}
Original file line number Diff line number Diff line change 1+ import AuthorizationResultParser from '../src/AuthorizationResultParser' ;
2+
3+ import chai from 'chai' ;
4+ chai . should ( ) ;
5+ let assert = chai . assert ;
6+
7+
8+ describe ( "AuthorizationResultParser" , function ( ) {
9+ let subject ;
10+
11+ beforeEach ( function ( ) {
12+ subject = new AuthorizationResultParser ( ) ;
13+ } ) ;
14+
15+ describe ( "parseResult" , function ( ) {
16+
17+ it ( "should parse key/value pairs" , function ( ) {
18+ var result = subject . parseResult ( "a=apple&b=banana&c=carrot" ) ;
19+ result . should . deep . equal ( { a :"apple" , b :"banana" , c :"carrot" } ) ;
20+ } ) ;
21+
22+ it ( "should parse any order" , function ( ) {
23+ var result = subject . parseResult ( "b=banana&c=carrot&a=apple" ) ;
24+ result . should . deep . equal ( { a :"apple" , b :"banana" , c :"carrot" } ) ;
25+ } ) ;
26+
27+ it ( "should parse past host name and hash fragment" , function ( ) {
28+ var result = subject . parseResult ( "http://server?test1=xoxo&test2=xoxo/#a=apple&b=banana&c=carrot" ) ;
29+ result . should . deep . equal ( { a :"apple" , b :"banana" , c :"carrot" } ) ;
30+ } ) ;
31+
32+ it ( "should return error for long values" , function ( ) {
33+ var result = subject . parseResult ( "a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple&a=apple" ) ;
34+ result . should . have . property ( 'error' ) ;
35+ } ) ;
36+
37+ } ) ;
38+ } ) ;
You can’t perform that action at this time.
0 commit comments