Skip to content

Commit

Permalink
improves the code based on PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Zoltan Tarcsay committed Aug 30, 2018
1 parent 51a77fd commit c5b4c51
Show file tree
Hide file tree
Showing 16 changed files with 61 additions and 53 deletions.
2 changes: 1 addition & 1 deletion src/am-client.spec.ts → src/amclient/am-client.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import mockAxios from './testing/mock-axios';
import mockAxios from '../testing/mock-axios';
import { AmClient } from './am-client';

describe('AmClient', () => {
Expand Down
37 changes: 11 additions & 26 deletions src/am-client.ts → src/amclient/am-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,9 @@ import { OutgoingHttpHeaders } from 'http';
import * as shortid from 'shortid';
import * as url from 'url';

export interface AmServerInfo {
cookieName: string;
domains: string[];
}

export interface AmPolicyDecisionRequest {
resources: string[];
application: string;
subject: { ssoToken: string };
}

export interface AmPolicyDecision {
resource: string;
actions: { [ action: string ]: boolean; };
attributes: { [ attribute: string ]: string[]; };
advices: any;
}
import { AmPolicyDecision } from './am-policy-decision';
import { AmPolicyDecisionRequest } from './am-policy-decision-request';
import { AmServerInfo } from './am-server-info';

/**
* ForgeRock OpenAM / Access Management client
Expand Down Expand Up @@ -47,7 +33,7 @@ export class AmClient {
getServerInfo(): Promise<AmServerInfo> {
return Axios
.get(
this.serverAddress + '/json/serverinfo/*',
`${this.serverAddress}/json/serverinfo/*`,
{ headers: { host: this.hostname } })
.then(res => res.data);
}
Expand Down Expand Up @@ -75,7 +61,7 @@ export class AmClient {
}

return Axios
.post(this.serverAddress + '/json/authenticate', null, {
.post(`${this.serverAddress}/json/authenticate`, null, {
headers: {
host: this.hostname,
'X-OpenAM-Username': username,
Expand All @@ -102,7 +88,7 @@ export class AmClient {
};

return Axios
.post(this.serverAddress + '/json/sessions', null, {
.post(`${this.serverAddress}/json/sessions`, null, {
headers,
params: { realm, _action: 'logout' }
})
Expand All @@ -118,7 +104,7 @@ export class AmClient {
}

return Axios
.post(this.serverAddress + '/json/sessions/' + sessionId, null, {
.post(`${this.serverAddress}/json/sessions/${sessionId}`, null, {
params: { _action: 'validate' },
headers: {
'host': this.hostname,
Expand Down Expand Up @@ -170,7 +156,7 @@ export class AmClient {
cookieName: string,
realm = '/'): Promise<AmPolicyDecision[]> {
return Axios
.post(this.serverAddress + '/json/policies', data, {
.post(`${this.serverAddress}/json/policies`, data, {
headers: {
[ cookieName ]: sessionId,
host: this.hostname
Expand All @@ -191,7 +177,7 @@ export class AmClient {
*/
sessionServiceRequest(requestSet: string): Promise<any> {
return Axios
.post(this.serverAddress + '/sessionservice', requestSet, {
.post(`${this.serverAddress}/sessionservice`, requestSet, {
headers: {
host: this.hostname,
'Content-Type': 'text/xml'
Expand All @@ -208,9 +194,8 @@ export class AmClient {
* @return {Promise} Token info response
*/
validateAccessToken(accessToken: string, realm = '/'): Promise<any> {
//noinspection JSValidateTypes
return Axios
.get(this.serverAddress + '/oauth2/tokeninfo', {
.get(`${this.serverAddress}/oauth2/tokeninfo`, {
headers: {
host: this.hostname
},
Expand All @@ -228,7 +213,7 @@ export class AmClient {
getProfile(userId: string, realm: string, sessionId: string, cookieName: string): Promise<any> {
//noinspection JSValidateTypes
return Axios
.get(this.serverAddress + '/json/users/' + userId, {
.get(`${this.serverAddress}/json/users/${userId}`, {
headers: {
host: this.hostname,
cookie: `${cookieName}=${sessionId}`
Expand Down
5 changes: 5 additions & 0 deletions src/amclient/am-policy-decision-request.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export interface AmPolicyDecisionRequest {
resources: string[];
application: string;
subject: { ssoToken: string };
}
6 changes: 6 additions & 0 deletions src/amclient/am-policy-decision.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export interface AmPolicyDecision {
resource: string;
actions: { [ action: string ]: boolean; };
attributes: { [ attribute: string ]: string[]; };
advices: any;
}
4 changes: 4 additions & 0 deletions src/amclient/am-server-info.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export interface AmServerInfo {
cookieName: string;
domains: string[];
}
10 changes: 7 additions & 3 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
export * from './am-client';
export * from './amclient/am-client';
export * from './amclient/am-policy-decision';
export * from './amclient/am-policy-decision-request';
export * from './amclient/am-server-info';
export * from './cache/cache';
export * from './cache/in-memory-cache';
export * from './error/invalid-session-error';
export * from './error/shield-evaluation-error';
export * from './policy-agent';
export * from './policy-agent-options';
export * from './policyagent/policy-agent';
export * from './policyagent/policy-agent-options';
export * from './shield/basic-auth-shield';
export * from './shield/cookie-shield';
export * from './shield/oauth2-shield';
export * from './shield/policy-shield';
export * from './shield/session-data';
export * from './shield/shield';
export * from './utils/deferred';
export * from './utils/http-utils';
export * from './utils/logger';
export * from './utils/xml-utils';
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { LoggerInstance } from 'winston';
import { AmClient } from './am-client';
import { Cache } from './cache/cache';
import { AmClient } from '../amclient/am-client';
import { Cache } from '../cache/cache';

export interface EvaluationErrorDetails {
status: number;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Shield } from './shield/shield';
import mockAxios from './testing/mock-axios';
import { Shield } from '../shield/shield';
import mockAxios from '../testing/mock-axios';

import { PolicyAgent } from './policy-agent';
import { PolicyAgentOptions } from './policy-agent-options';
import { getFixture } from './testing/utils';
import { getFixture } from '../testing/utils';

describe('PolicyAgent', () => {
let agent: PolicyAgent;
Expand Down
24 changes: 14 additions & 10 deletions src/policy-agent.ts → src/policyagent/policy-agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,25 @@ import { NextFunction } from 'express-serve-static-core';
import * as fs from 'fs';
import * as Handlebars from 'handlebars';
import { IncomingMessage, ServerResponse } from 'http';
import { resolve } from 'path';
import * as ShortId from 'shortid';
import { LoggerInstance } from 'winston';
import * as XMLBuilder from 'xmlbuilder';

import { AmClient, AmPolicyDecision, AmPolicyDecisionRequest, AmServerInfo } from './am-client';
import { Cache } from './cache/cache';
import { InMemoryCache } from './cache/in-memory-cache';
import { InvalidSessionError } from './error/invalid-session-error';
import { AmClient } from '../amclient/am-client';
import { AmPolicyDecision } from '../amclient/am-policy-decision';
import { AmPolicyDecisionRequest } from '../amclient/am-policy-decision-request';
import { AmServerInfo } from '../amclient/am-server-info';
import { Cache } from '../cache/cache';
import { InMemoryCache } from '../cache/in-memory-cache';
import { InvalidSessionError } from '../error/invalid-session-error';
import { Shield } from '../shield/shield';
import { baseUrl, sendResponse } from '../utils/http-utils';
import { Logger } from '../utils/logger';
import { parseXml } from '../utils/xml-utils';
import { EvaluationErrorDetails, PolicyAgentOptions } from './policy-agent-options';
import { Shield } from './shield/shield';
import { baseUrl, sendResponse } from './utils/http-utils';
import { Logger } from './utils/logger';
import { parseXml } from './utils/xml-utils';

const pkg = require('../package.json');
const pkg = require('../../package.json');

export const SESSION_EVENT = 'session';
export const CDSSO_PATH = '/agent/cdsso';
Expand Down Expand Up @@ -539,6 +543,6 @@ export class PolicyAgent extends EventEmitter {
* Compiles the default error page with Handlebars.js
*/
protected getDefaultErrorTemplate() {
return Handlebars.compile(fs.readFileSync(__dirname + '/templates/error.handlebars').toString());
return Handlebars.compile(fs.readFileSync(resolve(__dirname, '../templates/error.handlebars')).toString());
}
}
2 changes: 1 addition & 1 deletion src/shield/basic-auth-shield.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as basicAuth from 'basic-auth';
import { IncomingMessage, ServerResponse } from 'http';

import { ShieldEvaluationError } from '../error/shield-evaluation-error';
import { PolicyAgent } from '../policy-agent';
import { PolicyAgent } from '../policyagent/policy-agent';
import { Deferred } from '../utils/deferred';
import { sendResponse } from '../utils/http-utils';
import { SessionData } from './session-data';
Expand Down
2 changes: 1 addition & 1 deletion src/shield/cookie-shield.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PolicyAgent } from '../policy-agent';
import { PolicyAgent } from '../policyagent/policy-agent';
import { CookieShield } from './cookie-shield';
import { ServerResponse, IncomingMessage } from 'http';

Expand Down
2 changes: 1 addition & 1 deletion src/shield/cookie-shield.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { IncomingMessage, ServerResponse } from 'http';

import { ShieldEvaluationError } from '../error/shield-evaluation-error';
import { PolicyAgent } from '../policy-agent';
import { PolicyAgent } from '../policyagent/policy-agent';
import { Deferred } from '../utils/deferred';
import { redirect } from '../utils/http-utils';
import { SessionData } from './session-data';
Expand Down
4 changes: 2 additions & 2 deletions src/shield/oauth2-shield.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { IncomingMessage, ServerResponse } from 'http';
import { ShieldEvaluationError } from '..';
import { PolicyAgent } from '../policy-agent';
import { PolicyAgent } from '../policyagent/policy-agent';
import { SessionData } from './session-data';
import { Shield } from './shield';

Expand Down Expand Up @@ -42,7 +42,7 @@ export class Oauth2Shield implements Shield {

try {
message = JSON.parse(err.response.body).error_description;
} catch (e) {
} catch {
// body is not json
}

Expand Down
2 changes: 1 addition & 1 deletion src/shield/policy-shield.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { IncomingMessage, ServerResponse } from 'http';
import * as url from 'url';
import { AmPolicyDecision, AmPolicyDecisionRequest, ShieldEvaluationError } from '..';

import { PolicyAgent } from '../policy-agent';
import { PolicyAgent } from '../policyagent/policy-agent';
import { SessionData } from './session-data';
import { Shield } from './shield';

Expand Down
2 changes: 1 addition & 1 deletion src/shield/shield.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { IncomingMessage, ServerResponse } from 'http';

import { PolicyAgent } from '../policy-agent';
import { PolicyAgent } from '../policyagent/policy-agent';
import { SessionData } from './session-data';

export interface Shield {
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"compilerOptions": {
"declaration": true,
"noImplicitAny": false,
"removeComments": true,
"removeComments": false,
"noLib": false,
"module": "commonjs",
"moduleResolution": "node",
Expand Down

0 comments on commit c5b4c51

Please sign in to comment.