diff --git a/.gitignore b/.gitignore index 6f4e44e86..9f3f95543 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,12 @@ package-lock.json .envrc *.code-workspace lerna-debug.log + # Ignore TCK-related files in all folders okta-oidc-tck* target packages/okta-vue/test/e2e/harness/config/dev.env.js + +# package info files are generated during build and included in final artifacts +packageInfo.js +packageInfo.ts diff --git a/packages/okta-angular/package.json b/packages/okta-angular/package.json index 76277b224..2bfd72d3f 100644 --- a/packages/okta-angular/package.json +++ b/packages/okta-angular/package.json @@ -8,9 +8,11 @@ "dist" ], "scripts": { + "build:package-info": "node ../../util/write-package-info.js . src/okta/packageInfo.ts", "pretest": "npm run build:dependencies", "prestart": "npm run build:dependencies", "prepublish": "npm run ngc", + "prengc": "npm run build:package-info", "ngc": "./node_modules/.bin/ngc -p tsconfig.json", "test": "npm run --prefix test/e2e/harness/ e2e", "start": "npm run --prefix test/e2e/harness/ start", diff --git a/packages/okta-angular/src/okta/okta.service.ts b/packages/okta-angular/src/okta/okta.service.ts index 8d4a02476..403720bdb 100644 --- a/packages/okta-angular/src/okta/okta.service.ts +++ b/packages/okta-angular/src/okta/okta.service.ts @@ -15,6 +15,8 @@ import { Router } from '@angular/router'; import { OKTA_CONFIG } from './okta.config'; +import packageInfo from './packageInfo'; + /** * Import the okta-auth-js library */ @@ -49,6 +51,8 @@ export class OktaAuthService { redirectUri: auth.redirectUri }); + this.oktaAuth.userAgent = `${packageInfo.name}/${packageInfo.version} ${this.oktaAuth.userAgent}`; + /** * Scrub scopes to ensure 'openid' is included */ @@ -109,7 +113,7 @@ export class OktaAuthService { /** * Stores the intended path to redirect after successful login. - * @param uri + * @param uri */ setFromUri(uri) { localStorage.setItem('referrerPath', uri); diff --git a/packages/okta-react/package.json b/packages/okta-react/package.json index a449ef101..2bf3e05cd 100644 --- a/packages/okta-react/package.json +++ b/packages/okta-react/package.json @@ -6,13 +6,15 @@ "scripts": { "build": "rimraf dist/ && babel src -d dist", "build:harness": "npm --prefix test/e2e/harness install", + "build:package-info": "node ../../util/write-package-info.js . src/packageInfo.js", + "jest": "jest test/jest/", "lint": "eslint src/**; exit 0", "lint:watch": "esw -w lib/**", - "prepublish": "npm run build", + "prepublish": "npm run build:package-info && npm run build", "prestart": "npm run build && npm run build:harness", "start": "npm run --prefix test/e2e/harness start", "pretest": "npm run build && npm run build:harness", - "test": "npm run --prefix test/e2e/harness test" + "test": "npm run jest && npm run --prefix test/e2e/harness test" }, "repository": { "type": "git", @@ -56,6 +58,7 @@ "eslint-watch": "^3.1.2", "jasmine-core": "~2.6.2", "jasmine-spec-reporter": "~4.1.0", + "jest": "^22.4.2", "polished": "^1.7.0", "protractor": "^5.1.2", "react-dom": "^15.6.1", diff --git a/packages/okta-react/src/Auth.js b/packages/okta-react/src/Auth.js index b82db7564..90ee10392 100644 --- a/packages/okta-react/src/Auth.js +++ b/packages/okta-react/src/Auth.js @@ -12,6 +12,8 @@ import OktaAuth from '@okta/okta-auth-js'; +import packageInfo from './packageInfo'; + const containsAuthTokens = /id_token|access_token|code/; export default class Auth { @@ -22,6 +24,7 @@ export default class Auth { issuer: config.issuer, redirectUri: config.redirect_uri }); + this._oktaAuth.userAgent = `${packageInfo.name}/${packageInfo.version} ${this._oktaAuth.userAgent}`; this._config = config; this._history = config.history; diff --git a/packages/okta-react/test/jest/auth.test.js b/packages/okta-react/test/jest/auth.test.js new file mode 100644 index 000000000..a9affde02 --- /dev/null +++ b/packages/okta-react/test/jest/auth.test.js @@ -0,0 +1,11 @@ +import Auth from '../../src/Auth'; + +const pkg = require('../../package.json'); + +test('Auth component sets the right user agent on AuthJS', () => { + const auth = new Auth({ + issuer: 'https://foo/oauth2/default' + }); + const expectedUserAgent = `${pkg.name}/${pkg.version} okta-auth-js-`; + expect(auth._oktaAuth.userAgent).toMatch(expectedUserAgent); +}); diff --git a/util/write-package-info.js b/util/write-package-info.js new file mode 100644 index 000000000..293c1a717 --- /dev/null +++ b/util/write-package-info.js @@ -0,0 +1,17 @@ +const fs = require('fs'); +const path = require('path'); + +const workingDirectory = process.argv[2]; +const destinationFile = process.argv[3]; +const packageJsonPath = path.join(process.cwd(), workingDirectory, 'package.json') +const configDest = path.join(process.cwd(), workingDirectory, destinationFile); +const packageJson = require(packageJsonPath); +const packageInfo = { + name: packageJson.name, + version: packageJson.version +}; +const output = 'export default ' + JSON.stringify(packageInfo, null, 2) + ';' + +console.log('Writing config to', configDest); + +fs.writeFileSync(configDest, output);