-
Notifications
You must be signed in to change notification settings - Fork 989
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1dd0167
commit a0aa06e
Showing
1 changed file
with
60 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,99 +1,98 @@ | ||
package tests | ||
|
||
import ( | ||
"bytes" | ||
"encoding/json" | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/Infisical/infisical-merge/packages/cmd" | ||
"github.com/Infisical/infisical-merge/packages/models" | ||
"github.com/stretchr/testify/assert" | ||
"github.com/bradleyjkemp/cupaloy/v2" | ||
) | ||
|
||
func ListSecretsWithImportsAndRecursive(t *testing.T, authToken string, projectId string, envSlug string) { | ||
func TestServiceToken_SecretsGetWithImportsAndRecursiveCmd(t *testing.T) { | ||
SetupCli(t) | ||
|
||
rootCommand := cmd.NewRootCmd() | ||
output, err := ExecuteCliCommand(FORMATTED_CLI_NAME, "secrets", "--token", creds.ServiceToken, "--projectId", creds.ProjectID, "--env", creds.EnvSlug, "--recursive", "--silent") | ||
|
||
commandOutput := new(bytes.Buffer) | ||
rootCommand.SetOut(commandOutput) | ||
rootCommand.SetErr(commandOutput) | ||
fmt.Printf("output: %v\n", output) | ||
|
||
args := []string{ | ||
"secrets", | ||
if err != nil { | ||
t.Fatalf("error running CLI command: %v", err) | ||
} | ||
args = append(args, fmt.Sprintf("--token=%s", authToken)) | ||
args = append(args, fmt.Sprintf("--projectId=%s", projectId)) | ||
args = append(args, fmt.Sprintf("--env=%s", envSlug)) | ||
args = append(args, "--include-imports=true") | ||
args = append(args, "--recursive=true") | ||
|
||
rootCommand.SetArgs(args) | ||
rootCommand.Execute() | ||
|
||
var secrets []models.SingleEnvironmentVariable | ||
|
||
err := json.Unmarshal(commandOutput.Bytes(), &secrets) | ||
// Use cupaloy to snapshot test the output | ||
err = cupaloy.Snapshot(output) | ||
if err != nil { | ||
t.Errorf("Error: %v", err) | ||
t.Fatalf("snapshot failed: %v", err) | ||
} | ||
} | ||
|
||
if len(secrets) == 0 { | ||
t.Errorf("No secrets found") | ||
} | ||
func TestServiceToken_SecretsGetWithoutImportsAndWithoutRecursiveCmd(t *testing.T) { | ||
SetupCli(t) | ||
|
||
secretKeys := []string{} | ||
secretValues := []string{} | ||
output, err := ExecuteCliCommand(FORMATTED_CLI_NAME, "secrets", "--token", creds.ServiceToken, "--projectId", creds.ProjectID, "--env", creds.EnvSlug, "--include-imports=false", "--silent") | ||
|
||
for _, secret := range secrets { | ||
secretKeys = append(secretKeys, secret.Key) | ||
secretValues = append(secretValues, secret.Value) | ||
} | ||
fmt.Printf("output: %v\n", output) | ||
|
||
// Secrets can have different order and potentially more secrets. but the secrets should at least contain the above secrets. | ||
for _, key := range ALL_SECRET_KEYS { | ||
assert.Contains(t, secretKeys, key) | ||
if err != nil { | ||
t.Fatalf("error running CLI command: %v", err) | ||
} | ||
for _, value := range ALL_SECRET_VALUES { | ||
assert.Contains(t, secretValues, value) | ||
|
||
// Use cupaloy to snapshot test the output | ||
err = cupaloy.Snapshot(output) | ||
if err != nil { | ||
t.Fatalf("snapshot failed: %v", err) | ||
} | ||
} | ||
|
||
func GetSecretsByNames(t *testing.T, authToken string, projectId string, envSlug string) { | ||
func TestUniversalAuth_SecretsGetWithImportsAndRecursiveCmd(t *testing.T) { | ||
SetupCli(t) | ||
MachineIdentityLoginCmd(t) | ||
|
||
rootCommand := cmd.NewRootCmd() | ||
output, err := ExecuteCliCommand(FORMATTED_CLI_NAME, "secrets", "--token", creds.UAAccessToken, "--projectId", creds.ProjectID, "--env", creds.EnvSlug, "--recursive", "--silent") | ||
|
||
commandOutput := new(bytes.Buffer) | ||
rootCommand.SetOut(commandOutput) | ||
rootCommand.SetErr(commandOutput) | ||
fmt.Printf("output: %v\n", output) | ||
|
||
args := []string{ | ||
"secrets", | ||
"get", | ||
if err != nil { | ||
t.Fatalf("error running CLI command: %v", err) | ||
} | ||
|
||
args = append(args, ALL_SECRET_KEYS...) | ||
args = append(args, fmt.Sprintf("--token=%s", authToken)) | ||
args = append(args, fmt.Sprintf("--projectId=%s", projectId)) | ||
args = append(args, fmt.Sprintf("--env=%s", envSlug)) | ||
// Use cupaloy to snapshot test the output | ||
err = cupaloy.Snapshot(output) | ||
if err != nil { | ||
t.Fatalf("snapshot failed: %v", err) | ||
} | ||
} | ||
|
||
func TestUniversalAuth_SecretsGetWithoutImportsAndWithoutRecursiveCmd(t *testing.T) { | ||
SetupCli(t) | ||
MachineIdentityLoginCmd(t) | ||
|
||
rootCommand.SetArgs(args) | ||
rootCommand.Execute() | ||
output, err := ExecuteCliCommand(FORMATTED_CLI_NAME, "secrets", "--token", creds.UAAccessToken, "--projectId", creds.ProjectID, "--env", creds.EnvSlug, "--include-imports=false", "--silent") | ||
|
||
var secrets []models.SingleEnvironmentVariable | ||
fmt.Printf("output: %v\n", output) | ||
|
||
if err != nil { | ||
t.Fatalf("error running CLI command: %v", err) | ||
} | ||
|
||
err := json.Unmarshal(commandOutput.Bytes(), &secrets) | ||
// Use cupaloy to snapshot test the output | ||
err = cupaloy.Snapshot(output) | ||
if err != nil { | ||
t.Errorf("Error: %v", err) | ||
t.Fatalf("snapshot failed: %v", err) | ||
} | ||
} | ||
|
||
func TestUniversalAuth_SecretsGetWrongEnvironment(t *testing.T) { | ||
SetupCli(t) | ||
MachineIdentityLoginCmd(t) | ||
|
||
assert.Len(t, secrets, len(ALL_SECRETS)) | ||
output, _ := ExecuteCliCommand(FORMATTED_CLI_NAME, "secrets", "--token", creds.UAAccessToken, "--projectId", creds.ProjectID, "--env", "invalid-env", "--recursive", "--silent") | ||
|
||
for _, secret := range secrets { | ||
assert.Contains(t, ALL_SECRET_KEYS, secret.Key) | ||
fmt.Printf("output: %v\n", output) | ||
|
||
if secret.Key == "FOLDER-SECRET-1" { | ||
assert.Equal(t, secret.Value, "*not found*") // Should not be found because recursive isn't enabled in this test, and the default path is "/" | ||
} | ||
// Use cupaloy to snapshot test the output | ||
err := cupaloy.Snapshot(output) | ||
if err != nil { | ||
t.Fatalf("snapshot failed: %v", err) | ||
} | ||
|
||
} |