|
| 1 | +import {afterEach} from 'mocha' |
1 | 2 | import analysis from '../src/analysis.js'
|
2 |
| -import { expect} from 'chai' |
| 3 | +import { expect } from 'chai' |
3 | 4 | import { rest } from 'msw'
|
4 | 5 | import { setupServer } from 'msw/node'
|
5 |
| -import sinon from "sinon"; |
| 6 | +import sinon from 'sinon' |
6 | 7 |
|
7 | 8 | // utility function creating a dummy server, intercepting a handler,
|
8 | 9 | // running a test, and shutting the server down
|
@@ -96,4 +97,48 @@ suite('testing the analysis module for sending api requests', () => {
|
96 | 97 | }
|
97 | 98 | ))
|
98 | 99 | })
|
| 100 | + |
| 101 | + suite('verify environment variables to token headers mechanism', () => { |
| 102 | + let fakeManifest = 'fake-file.typ' |
| 103 | + // stub the provideStack function to return the fake provided data for our fake manifest |
| 104 | + let stackProviderStub = sinon.stub() |
| 105 | + stackProviderStub.withArgs(fakeManifest).returns(fakeProvided) |
| 106 | + // fake providers hosts our stubbed provideStack function |
| 107 | + let fakeProvider = { |
| 108 | + provideComponent: () => {}, // not required for this test |
| 109 | + provideStack: stackProviderStub, |
| 110 | + isSupported: () => {} // not required for this test |
| 111 | + }; |
| 112 | + |
| 113 | + afterEach(() => delete process.env['CRDA_SNYK_TOKEN']) |
| 114 | + |
| 115 | + test('when the relevant token environment variables are set, verify corresponding headers are included', interceptAndRun( |
| 116 | + // interception route, will return ok response if found the expected token |
| 117 | + rest.post(`${backendUrl}/dependency-analysis/${fakeProvided.ecosystem}`, (req, res, ctx) => { |
| 118 | + if ('dummy-snyk-token' === req.headers.get('crda-snyk-token')) { |
| 119 | + return res(ctx.json({ok: 'ok'})) |
| 120 | + } |
| 121 | + return res(ctx.status(400)) |
| 122 | + }), |
| 123 | + async () => { |
| 124 | + process.env['CRDA_SNYK_TOKEN'] = 'dummy-snyk-token' |
| 125 | + let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) |
| 126 | + expect(res).to.deep.equal({ok: 'ok'}) |
| 127 | + } |
| 128 | + )) |
| 129 | + |
| 130 | + test('when the relevant token environment variables are not set, verify no corresponding headers are included', interceptAndRun( |
| 131 | + // interception route, will return ok response if found the expected token |
| 132 | + rest.post(`${backendUrl}/dependency-analysis/${fakeProvided.ecosystem}`, (req, res, ctx) => { |
| 133 | + if (!req.headers.get('crda-snyk-token')) { |
| 134 | + return res(ctx.json({ok: 'ok'})) |
| 135 | + } |
| 136 | + return res(ctx.status(400)) |
| 137 | + }), |
| 138 | + async () => { |
| 139 | + let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) |
| 140 | + expect(res).to.deep.equal({ok: 'ok'}) |
| 141 | + } |
| 142 | + )) |
| 143 | + }) |
99 | 144 | })
|
0 commit comments