Skip to content

Commit

Permalink
feat: releasing Snyk Code is not supported for org. functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
ArturSnyk authored and neonnoon committed Sep 16, 2021
1 parent eb09d57 commit 0c26f10
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 70 deletions.
33 changes: 10 additions & 23 deletions src/lib/plugins/sast/validate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,17 @@ export async function validateCodeTest(options: Options) {

// TODO: We would need to remove this once we fix circular import issue
const { getSastSettingsForOrg, trackUsage } = require('./checks');
const { isFeatureFlagSupportedForOrg } = require('../../feature-flags');

const [
sastSettingsResponse,
snykCodeEnabledResponse,
snykCodeCliEnabledResponse,
] = await Promise.all([
getSastSettingsForOrg(org),
isFeatureFlagSupportedForOrg('snykCode', org),
isFeatureFlagSupportedForOrg('snykCodeCli', org),
]);

const authError = [
sastSettingsResponse,
snykCodeEnabledResponse,
snykCodeCliEnabledResponse,
].find((response) => response.code === 401 || response.code === 403);

if (authError) {
throw AuthFailedError(authError.error, authError.code);
}

if (!snykCodeEnabledResponse.ok || !snykCodeCliEnabledResponse.ok) {
throw new FeatureNotSupportedForOrgError(org, 'Snyk Code');
const sastSettingsResponse = await getSastSettingsForOrg(org);

if (
sastSettingsResponse?.code === 401 ||
sastSettingsResponse?.code === 403
) {
throw AuthFailedError(
sastSettingsResponse.error,
sastSettingsResponse.code,
);
}

if (!sastSettingsResponse.sastEnabled) {
Expand Down
47 changes: 0 additions & 47 deletions test/jest/unit/snyk-code/snyk-code-test.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ jest.mock('@snyk/code-client');
const analyzeFoldersMock = analyzeFolders as jest.Mock;

import { loadJson } from '../../../utils';
import * as featureFlags from '../../../../src/lib/feature-flags';
import * as checks from '../../../../src/lib/plugins/sast/checks';
import { config as userConfig } from '../../../../src/lib/user-config';
import * as analysis from '../../../../src/lib/plugins/sast/analysis';
Expand All @@ -22,7 +21,6 @@ const osName = require('os-name');

describe('Test snyk code', () => {
let apiUserConfig;
let isFeatureFlagSupportedForOrgSpy;
let isSastEnabledForOrgSpy;
let trackUsageSpy;
const failedCodeTestMessage = "Failed to run 'code test'";
Expand Down Expand Up @@ -57,10 +55,6 @@ describe('Test snyk code', () => {
process.chdir(fixturePath);
apiUserConfig = userConfig.get('api');
userConfig.set('api', fakeApiKey);
isFeatureFlagSupportedForOrgSpy = jest.spyOn(
featureFlags,
'isFeatureFlagSupportedForOrg',
);
isSastEnabledForOrgSpy = jest.spyOn(checks, 'getSastSettingsForOrg');
trackUsageSpy = jest.spyOn(checks, 'trackUsage');
});
Expand Down Expand Up @@ -102,9 +96,6 @@ describe('Test snyk code', () => {
};

analyzeFoldersMock.mockResolvedValue(null);
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
Expand All @@ -130,9 +121,6 @@ describe('Test snyk code', () => {
};

analyzeFoldersMock.mockResolvedValue(sampleAnalyzeFoldersResponse);
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
Expand Down Expand Up @@ -162,9 +150,6 @@ describe('Test snyk code', () => {
};

analyzeFoldersMock.mockResolvedValue(sampleAnalyzeFoldersResponse);
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
Expand Down Expand Up @@ -219,9 +204,6 @@ describe('Test snyk code', () => {

it('should show error if sast is not enabled', async () => {
isSastEnabledForOrgSpy.mockResolvedValueOnce({ sastEnabled: false });
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});

await expect(
snykTest('some/path', { code: true, _: [], _doubleDashArgs: [] }),
Expand All @@ -231,25 +213,8 @@ describe('Test snyk code', () => {
);
});

it('should show error if ff is not enabled', async () => {
isSastEnabledForOrgSpy.mockResolvedValueOnce({ sastEnabled: true });
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
userError: 'Not enabled',
});

await expect(
snykTest('some/path', { code: true, _: [], _doubleDashArgs: [] }),
).rejects.toHaveProperty(
'userMessage',
'Snyk Code is not supported for org.',
);
});

it('should show error if limit is reached', async () => {
isSastEnabledForOrgSpy.mockResolvedValueOnce({ sastEnabled: true });
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
trackUsageSpy.mockResolvedValueOnce({
code: 429,
userMessage: 'Test limit reached!',
Expand Down Expand Up @@ -278,9 +243,6 @@ describe('Test snyk code', () => {
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
trackUsageSpy.mockResolvedValue({});

expect.hasAssertions();
Expand Down Expand Up @@ -311,9 +273,6 @@ describe('Test snyk code', () => {
};

analyzeFoldersMock.mockResolvedValue(sampleAnalyzeFoldersResponse);
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
Expand Down Expand Up @@ -344,9 +303,6 @@ describe('Test snyk code', () => {
};

analyzeFoldersMock.mockResolvedValue(sampleAnalyzeFoldersResponse);
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
Expand Down Expand Up @@ -382,9 +338,6 @@ describe('Test snyk code', () => {
isSastEnabledForOrgSpy.mockResolvedValueOnce({
sastEnabled: true,
});
isFeatureFlagSupportedForOrgSpy.mockResolvedValue({
ok: true,
});
trackUsageSpy.mockResolvedValue({});

await expect(
Expand Down

0 comments on commit 0c26f10

Please sign in to comment.