Skip to content

Commit

Permalink
fix: custom endpoint validation [IDE-126] (#454)
Browse files Browse the repository at this point in the history
* fix: custom endpoint validation and defaultg

* refactor: remove unused code

* fix: support empty
  • Loading branch information
teodora-sandu authored May 2, 2024
1 parent b866d3c commit 58bd8ae
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 59 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# Snyk Security Changelog
## [2.6.1]
- Improve the validation of the custom endpoint and change the default to https://api.snyk.io.

## [2.6.0]
- Improve UX of AI fixes by adding previews and options

Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,9 @@
},
"snyk.advanced.customEndpoint": {
"type": "string",
"markdownDescription": "Sets API endpoint to use for Snyk requests. Useful for custom Snyk setups. E.g. `https://app.eu.snyk.io/api`.",
"scope": "window"
"markdownDescription": "Sets API endpoint to use for Snyk requests. Useful for custom Snyk setups. E.g. `https://api.eu.snyk.io`.",
"scope": "window",
"pattern": "^(|(https?://)api.?[a-zA-Z0-9]{0,19}.(snyk|snykgov).io)$"
},
"snyk.advanced.organization": {
"type": "string",
Expand Down
16 changes: 0 additions & 16 deletions src/snyk/common/configuration/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ export interface IConfiguration {
source: string;

authHost: string;
baseApiUrl: string;

getToken(): Promise<string | undefined>;

Expand Down Expand Up @@ -97,8 +96,6 @@ export interface IConfiguration {

isFedramp: boolean;

analyticsPermitted: boolean;

severityFilter: SeverityFilter;

scanningMode: string | undefined;
Expand All @@ -117,8 +114,6 @@ export class Configuration implements IConfiguration {
private readonly defaultSnykCodeBaseURL = 'https://deeproxy.snyk.io';
private readonly defaultAuthHost = 'https://snyk.io';
private readonly defaultOssApiEndpoint = `${this.defaultAuthHost}/api/v1`;
private readonly defaultBaseApiHost = 'https://api.snyk.io';
private readonly analyticsPermittedEnvironments = { 'app.snyk.io': true, 'app.us.snyk.io': true };

constructor(private processEnv: NodeJS.ProcessEnv = process.env, private workspace: IVSCodeWorkspace) {}

Expand Down Expand Up @@ -204,13 +199,6 @@ export class Configuration implements IConfiguration {
return `${hostnameParts[2]}.${hostnameParts[3]}`.includes('snykgov.io');
}

get analyticsPermitted(): boolean {
if (!this.customEndpoint) return true;

const hostname = new URL(this.customEndpoint).hostname;
return hostname in this.analyticsPermittedEnvironments;
}

get snykOssApiEndpoint(): string {
if (this.customEndpoint) {
return this.customEndpoint; // E.g. https://app.eu.snyk.io/api
Expand Down Expand Up @@ -292,10 +280,6 @@ export class Configuration implements IConfiguration {
return Configuration.source;
}

get baseApiUrl(): string {
return this.defaultBaseApiHost;
}

getFeaturesConfiguration(): FeaturesConfiguration {
const ossEnabled = this.workspace.getConfiguration<boolean>(
CONFIGURATION_IDENTIFIER,
Expand Down
41 changes: 0 additions & 41 deletions src/test/unit/common/configuration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -229,45 +229,4 @@ suite('Configuration', () => {
strictEqual(configuration.isFedramp, false);
});
});

suite('.analyticsPermitted()', () => {
test('returns true when no custom endpoint configured', () => {
const workspace = stubWorkspaceConfiguration(ADVANCED_CUSTOM_ENDPOINT, undefined);

const configuration = new Configuration({}, workspace);
strictEqual(configuration.analyticsPermitted, true);
});

test('returns true for app.snyk.io', () => {
const customEndpoint = 'https://app.snyk.io';
const workspace = stubWorkspaceConfiguration(ADVANCED_CUSTOM_ENDPOINT, customEndpoint);

const configuration = new Configuration({}, workspace);
strictEqual(configuration.analyticsPermitted, true);
});

test('returns true for app.us.snyk.io', () => {
const customEndpoint = 'https://app.us.snyk.io';
const workspace = stubWorkspaceConfiguration(ADVANCED_CUSTOM_ENDPOINT, customEndpoint);

const configuration = new Configuration({}, workspace);
strictEqual(configuration.analyticsPermitted, true);
});

test('returns false for app.snykgov.io', () => {
const customEndpoint = 'https://app.snykgov.io';
const workspace = stubWorkspaceConfiguration(ADVANCED_CUSTOM_ENDPOINT, customEndpoint);

const configuration = new Configuration({}, workspace);
strictEqual(configuration.analyticsPermitted, false);
});

test('returns false for app.eu.snyk.io', () => {
const customEndpoint = 'https://app.eu.snyk.io';
const workspace = stubWorkspaceConfiguration(ADVANCED_CUSTOM_ENDPOINT, customEndpoint);

const configuration = new Configuration({}, workspace);
strictEqual(configuration.analyticsPermitted, false);
});
});
});

0 comments on commit 58bd8ae

Please sign in to comment.