Skip to content

Commit f98cfb8

Browse files
authored
Upgrade axios version (#33)
* upgrade axios to latest v1 version and major bump all packages since we're going up a version of axios * replace moxios with nock * lint fixes * fix test * fix typing around headers * fix hapi test * fix hapi * fix express tests * remove the package bumps because changeset will do that for us * add changeset file * remove vscode file
1 parent 2e1c029 commit f98cfb8

File tree

14 files changed

+102
-72
lines changed

14 files changed

+102
-72
lines changed

.changeset/clean-lobsters-begin.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"@ordermentum/express-asap": major
3+
"@ordermentum/axios-asap": major
4+
"@ordermentum/asap-core": major
5+
"@ordermentum/hapi-asap": major
6+
---
7+
8+
Upgrade axios version to 1.0

packages/asap-core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"typecheck": "yarn tsc --noEmit"
3434
},
3535
"dependencies": {
36-
"axios": "^0.26.1",
36+
"axios": "^1.7.7",
3737
"express": "^4.17.3",
3838
"jsonwebtoken": "^8.5.1",
3939
"node-cache": "^5.1.2"

packages/asap-core/src/authenticator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export function createAsapAuthenticator({
127127
});
128128
}
129129

130-
const verifyOptions = {
130+
const verifyOptions: jsonWebToken.VerifyOptions = {
131131
algorithms: ALLOWED_ALGORITHMS,
132132
clockTolerance: CLOCK_TOLERANCE_SECONDS,
133133
audience: resourceServerAudience,

packages/asap-core/test/file_test.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { describe, afterEach, beforeEach } from 'mocha';
22
import { expect } from 'chai';
33
import sinon from 'sinon';
4-
import { createPublicKeyFetcher, createTestPublicKeyFetcher } from '../src/fetchers/file';
4+
import {
5+
createPublicKeyFetcher,
6+
createTestPublicKeyFetcher,
7+
} from '../src/fetchers/file';
58

69
describe('file', () => {
710
let time;
@@ -39,6 +42,6 @@ describe('file', () => {
3942
const key2 = await fetcher('test/service_2');
4043
expect(key1).to.eqls(key2);
4144
});
42-
})
45+
});
4346
});
4447
});

packages/asap-core/test/generate_test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ describe('createAuthHeaderGenerator', () => {
137137
jwtConfig.privateKey = 'this is not a valid key';
138138

139139
expect(() => createAuthHeaderGenerator(jwtConfig)()).to.throw(
140-
/PEM.*no start line/
140+
/DECODER routines::unsupported/
141141
);
142142
});
143143

packages/axios-asap/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"@types/express": "4.17.13",
1313
"@types/jsonwebtoken": "8.5.8",
1414
"@types/mocha": "9.1.0",
15-
"@types/moxios": "0.4.15",
1615
"@types/node": "17.0.21",
1716
"@types/sinon": "10.0.11",
1817
"chai": "4.3.6",
@@ -21,7 +20,7 @@
2120
"lint-staged": "12.3.5",
2221
"mocha": "9.2.2",
2322
"mocha-sinon": "2.1.2",
24-
"moxios": "0.4.0",
23+
"nock": "13.5.5",
2524
"sinon": "13.0.1",
2625
"ts-node": "10.7.0",
2726
"ts-node-dev": "1.1.8",
@@ -35,6 +34,6 @@
3534
},
3635
"dependencies": {
3736
"@ordermentum/asap-core": "*",
38-
"axios": "^0.26.1"
37+
"axios": "^1.7.7"
3938
}
4039
}

packages/axios-asap/src/index.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
createAuthHeaderGenerator,
33
AuthHeaderConfig,
44
} from '@ordermentum/asap-core';
5-
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';
5+
import axios, { AxiosInstance, AxiosRequestConfig, AxiosHeaders } from 'axios';
66
import http from 'http';
77
import https from 'https';
88

@@ -12,9 +12,13 @@ export const createAsapInterceptor = (authConfig: AuthHeaderConfig) => {
1212
});
1313
return (config: AxiosRequestConfig) => {
1414
const header = headerGenerator();
15-
const headers = config.headers ?? {};
16-
headers.Authorization = header;
17-
return { ...config, headers };
15+
// @ts-expect-error RawAxiosHeaders is not accessible for type defs
16+
const headers: AxiosHeaders = new AxiosHeaders(config.headers ?? {});
17+
headers.set('Authorization', header);
18+
return {
19+
...config,
20+
headers,
21+
};
1822
};
1923
};
2024

@@ -30,7 +34,7 @@ const getDefaultAxiosConfig = (): AxiosRequestConfig => {
3034
if (!httpsAgent) {
3135
httpsAgent = new https.Agent({ keepAlive: true });
3236
}
33-
return { httpAgent, httpsAgent }
37+
return { httpAgent, httpsAgent };
3438
};
3539

3640
export type Options = {

packages/axios-asap/test/index_test.ts

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { describe, beforeEach } from 'mocha';
22
import axios from 'axios';
3-
import moxios from 'moxios';
3+
import nock from 'nock';
44
import { expect } from 'chai';
55
import { privateKeyPem } from '@ordermentum/asap-test-helpers';
66
import { createAsapInterceptor, createClient } from '../src';
@@ -19,14 +19,10 @@ describe('createAuthHeaderGenerator', () => {
1919

2020
it('sets the header', async () => {
2121
const client = axios.create();
22-
moxios.install(client);
2322
client.interceptors.request.use(createAsapInterceptor(jwtConfig));
24-
moxios.stubRequest('/say/hello', {
25-
status: 200,
26-
responseText: 'hello',
27-
});
23+
nock('http://localhost').get('/say/hello').reply(200, 'hello');
2824

29-
const res = await client.get('/say/hello');
25+
const res = await client.get('http://localhost/say/hello');
3026
expect(res.status).to.equal(200);
3127
expect(Object.keys(res?.config?.headers ?? {})).to.include('Authorization');
3228
expect(res?.config?.headers?.Authorization).to.include('Bearer');
@@ -49,13 +45,9 @@ describe('createAuthHeaderGenerator', () => {
4945
}
5046
);
5147

52-
moxios.install(client);
53-
moxios.stubRequest('/say/hello', {
54-
status: 200,
55-
responseText: 'hello',
56-
});
48+
nock('http://localhost').get('/say/hello').reply(200, 'hello');
5749

58-
const res = await client.get('/say/hello');
50+
const res = await client.get('http://localhost/say/hello');
5951
expect(res.status).to.equal(200);
6052
expect(Object.keys(res?.config?.headers ?? {})).to.include('Authorization');
6153
expect(res?.config?.headers?.Authorization).to.include('Bearer');
@@ -151,5 +143,5 @@ describe('createAuthHeaderGenerator', () => {
151143
expect(client1).to.equal(client2);
152144
expect(client1.defaults.headers['x-custom-header']).to.equal('1');
153145
expect(client2.defaults.headers['x-custom-header']).to.equal('1');
154-
})
146+
});
155147
});

packages/express-asap/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
},
3636
"dependencies": {
3737
"@ordermentum/asap-core": "*",
38-
"axios": "^0.26.1",
3938
"express": "^4.17.3",
4039
"jsonwebtoken": "^8.5.1"
4140
}

packages/express-asap/test/index_test.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,22 @@ import createAsapAuthenticationMiddleware from '../src/middleware';
88
import createAsapIssuerWhitelistMiddleware from '../src/whitelist_middleware';
99

1010
const app = express();
11-
app.use(
12-
createAsapAuthenticationMiddleware({
13-
keyLoader: (_key: string) => Promise.resolve(publicKey),
14-
resourceServerAudience: 'test',
15-
maxLifeTimeSeconds: 60,
16-
})
17-
);
11+
app
12+
.use(
13+
createAsapAuthenticationMiddleware({
14+
keyLoader: (_key: string) => Promise.resolve(publicKey),
15+
resourceServerAudience: 'test',
16+
maxLifeTimeSeconds: 60,
17+
})
18+
)
19+
.use((req, res, next) => {
20+
// @ts-ignore
21+
if (req.headers.authorization && req.locals?.asapClaims === undefined) {
22+
res.status(401).send('Did not authenticate');
23+
} else {
24+
next();
25+
}
26+
});
1827

1928
app.get('/', (_req, res) => {
2029
res.status(200);
@@ -43,7 +52,7 @@ describe('middleware', () => {
4352
tokenExpiryMs: 60 * 1000,
4453
};
4554

46-
const authHeader = createAuthHeaderGenerator(jwtConfig)();
55+
const authHeader = createAuthHeaderGenerator(jwtConfig)({ admin: true });
4756
const res = await agent.get('/').set('Authorization', authHeader);
4857
expect(res.status).to.equal(200);
4958
expect(res.text).to.equal('OK');
@@ -58,7 +67,7 @@ describe('middleware', () => {
5867
tokenExpiryMs: 60 * 1000,
5968
};
6069

61-
const authHeader = createAuthHeaderGenerator(jwtConfig)();
70+
const authHeader = createAuthHeaderGenerator(jwtConfig)({ admin: true });
6271
const res = await agent.get('/').set('Authorization', authHeader);
6372
expect(res.status).to.equal(401);
6473
});
@@ -77,7 +86,7 @@ describe('middleware', () => {
7786
return res.send('OK');
7887
});
7988

80-
const authHeader = createAuthHeaderGenerator(jwtConfig)();
89+
const authHeader = createAuthHeaderGenerator(jwtConfig)({ admin: true });
8190
const res = await agent.get('/protected').set('Authorization', authHeader);
8291
expect(res.status).to.equal(401);
8392
});

0 commit comments

Comments
 (0)