Skip to content

Commit

Permalink
fix: support —DISABLE_ANALYTICS
Browse files Browse the repository at this point in the history
  • Loading branch information
PeterSchafer committed May 24, 2023
1 parent 5c73563 commit 6854f62
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 12 deletions.
14 changes: 12 additions & 2 deletions cliv2/cmd/cliv2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ var debugLogger = zerolog.New(zerolog.ConsoleWriter{
},
}).With().Str("ext", "main").Str("separator", "-").Timestamp().Logger()

const unknownCommandMessage string = "unknown command"
const (
unknownCommandMessage string = "unknown command"
disable_analytics_flag string = "DISABLE_ANALYTICS"
)

type JsonErrorStruct struct {
Ok bool `json:"ok"`
Expand Down Expand Up @@ -89,7 +92,7 @@ func initApplicationConfiguration(config configuration.Configuration) {
config.AddAlternativeKeys(configuration.AUTHENTICATION_BEARER_TOKEN, []string{"snyk_oauth_token", "snyk_docker_token"})
config.AddAlternativeKeys(configuration.API_URL, []string{"endpoint"})
config.AddAlternativeKeys(configuration.ADD_TRUSTED_CA_FILE, []string{"NODE_EXTRA_CA_CERTS"})
config.AddAlternativeKeys(configuration.ANALYTICS_DISABLED, []string{"snyk_analytics_disabled", "disable-analytics", "disable_analytics", "snyk_cfg_disable_analytics"})
config.AddAlternativeKeys(configuration.ANALYTICS_DISABLED, []string{"snyk_analytics_disabled", "snyk_cfg_disable_analytics", "disable-analytics", "disable_analytics"})

// if the CONFIG_KEY_OAUTH_TOKEN is specified as env var, we don't apply any additional logic
_, ok := os.LookupEnv(auth.CONFIG_KEY_OAUTH_TOKEN)
Expand Down Expand Up @@ -192,6 +195,7 @@ func getGlobalFLags() *pflag.FlagSet {
globalConfiguration := workflow.GetGlobalConfiguration()
globalFLags := workflow.FlagsetFromConfigurationOptions(globalConfiguration)
globalFLags.Bool(basic_workflows.PROXY_NOAUTH, false, "")
globalFLags.Bool(disable_analytics_flag, false, "")
return globalFLags
}

Expand Down Expand Up @@ -366,6 +370,11 @@ func writeLogHeader(config configuration.Configuration, networkAccess networking
insecureHTTPS = "true"
}

analytics := "enabled"
if config.GetBool(configuration.ANALYTICS_DISABLED) {
analytics = "disabled"
}

tablePrint := func(name string, value string) {
debugLogger.Printf("%-22s %s", name+":", value)
}
Expand All @@ -376,6 +385,7 @@ func writeLogHeader(config configuration.Configuration, networkAccess networking
tablePrint("Cache", config.GetString(configuration.CACHE_PATH))
tablePrint("Organization", org)
tablePrint("Insecure HTTPS", insecureHTTPS)
tablePrint("Analytics", analytics)
tablePrint("Authorization", authorization)
tablePrint("Features", "")
tablePrint(" --auth-type=oauth", oauthEnabled)
Expand Down
32 changes: 22 additions & 10 deletions test/jest/acceptance/analytics.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,8 @@ describe('analytics module', () => {
});
});

beforeEach(() => {
runSnykCLI(`config unset disable-analytics`);
runSnykCLI(`config unset SNYK_DISABLE_ANALYTICS`);
runSnykCLI(`config unset SNYK_CFG_DISABLE_ANALYTICS`);
});

afterEach(() => {
server.restore();
runSnykCLI(`config unset disable-analytics`);
runSnykCLI(`config unset SNYK_DISABLE_ANALYTICS`);
runSnykCLI(`config unset SNYK_CFG_DISABLE_ANALYTICS`);
});

afterAll((done) => {
Expand Down Expand Up @@ -507,6 +498,7 @@ describe('analytics module', () => {
const lastRequest = requests.pop();
expect(lastRequest).toBeUndefined();
});

it("won't send analytics if disable analytics is set via config and disable-analytics", async () => {
const envWithDisabledAnalytics = {
...env,
Expand All @@ -518,7 +510,14 @@ describe('analytics module', () => {
env: envWithDisabledAnalytics,
});

const { code } = await runSnykCLI(`version`);
const { code } = await runSnykCLI(`version`, {
env: env,
});

// unset config
await runSnykCLI(`config unset disable-analytics`, {
env: envWithDisabledAnalytics,
});

expect(code).toBe(0);

Expand All @@ -529,4 +528,17 @@ describe('analytics module', () => {
const lastRequest = requests.pop();
expect(lastRequest).toBeUndefined();
});

it("won't send analytics if disable analytics is set via --DISABLE_ANALYTICS", async () => {
const { code } = await runSnykCLI(`version -d --DISABLE_ANALYTICS`, {
env: env,
});
expect(code).toBe(0);

const requests = server.getRequests().filter((value) => {
return value.url == '/api/v1/analytics/cli';
});

expect(requests.length).toBe(0);
});
});

0 comments on commit 6854f62

Please sign in to comment.