Skip to content

Commit

Permalink
Fix: Refactor teests to use cupaloy
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielHougaard committed Apr 22, 2024
1 parent 1dd0167 commit a0aa06e
Showing 1 changed file with 60 additions and 61 deletions.
121 changes: 60 additions & 61 deletions cli/test/secrets_test.go
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)
}

}

0 comments on commit a0aa06e

Please sign in to comment.