Skip to content

Commit 19c24f9

Browse files
committed
chore: added some basic oauth client cred tests
1 parent 49bea3d commit 19c24f9

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

test/acceptance/fake-server.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,17 @@ export const fakeServer = (basePath: string, snykToken: string): FakeServer => {
577577
},
578578
);
579579

580+
app.post(basePath.replace('/v1', '') + '/oauth2/token', (req, res) => {
581+
const fake_oauth_token = "{\"access_token\":\"access_token_value\",\"token_type\":\"b\",\"expiry\":\"3023-12-20T08:49:15.504539Z\"}";
582+
583+
// client credentials grant: expecting client id = a and client secret = b
584+
if ( req.headers.authorization?.includes("Basic YTpi") ) {
585+
res.status(200).send(fake_oauth_token);
586+
}
587+
588+
res.status(401).send({});
589+
});
590+
580591
const listenPromise = (port: string | number) => {
581592
return new Promise<void>((resolve) => {
582593
server = http.createServer(app).listen(Number(port), resolve);

test/jest/acceptance/auth.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { fakeServer } from '../../acceptance/fake-server';
2+
import { createProjectFromWorkspace } from '../util/createProject';
3+
import { runSnykCLI } from '../util/runSnykCLI';
4+
5+
jest.setTimeout(1000 * 60);
6+
7+
describe('Auth', () => {
8+
let server: ReturnType<typeof fakeServer>;
9+
let env: Record<string, string>;
10+
11+
beforeAll((done) => {
12+
const apiPath = '/api/v1';
13+
const apiPort = process.env.PORT || process.env.SNYK_PORT || '12345';
14+
env = {
15+
...process.env,
16+
SNYK_API: 'http://localhost:' + apiPort + apiPath,
17+
SNYK_DISABLE_ANALYTICS: '1',
18+
};
19+
20+
server = fakeServer(apiPath, env.SNYK_TOKEN);
21+
server.listen(apiPort, () => done());
22+
});
23+
24+
afterEach(() => {
25+
server.restore();
26+
});
27+
28+
afterAll((done) => {
29+
server.close(() => done());
30+
});
31+
32+
it('successfully uses oauth client credentials grant to authenticate', async () => {
33+
const {code} = await runSnykCLI(`auth --auth-type=oauth --client-id a --client-secret b`, {
34+
env,
35+
});
36+
expect(code).toEqual(0);
37+
});
38+
39+
it('fails to us oauth client credentials grant to authenticate', async () => {
40+
const {code} = await runSnykCLI(`auth --auth-type=oauth --client-id wrong --client-secret b`, {
41+
env,
42+
});
43+
expect(code).toEqual(2);
44+
});
45+
});

0 commit comments

Comments
 (0)