github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/test/integration/secrets_int_test.go (about) 1 package integration 2 3 import ( 4 "encoding/json" 5 "strings" 6 "testing" 7 8 "github.com/ActiveState/cli/internal/testhelpers/suite" 9 10 "github.com/ActiveState/cli/internal/runners/secrets" 11 "github.com/ActiveState/cli/internal/testhelpers/e2e" 12 "github.com/ActiveState/cli/internal/testhelpers/tagsuite" 13 ) 14 15 type SecretsIntegrationTestSuite struct { 16 tagsuite.Suite 17 } 18 19 func (suite *SecretsIntegrationTestSuite) TestSecrets_JSON() { 20 suite.OnlyRunForTags(tagsuite.Secrets, tagsuite.JSON) 21 ts := e2e.New(suite.T(), false) 22 defer ts.Close() 23 24 ts.PrepareProject("cli-integration-tests/Python3", "00000000-0000-0000-0000-000000000000") 25 26 secret := secrets.SecretExport{ 27 Name: "test-secret", 28 Scope: "project", 29 Description: "", 30 HasValue: true, 31 Value: "test-value", 32 } 33 34 expected, err := json.Marshal(secret) 35 suite.Require().NoError(err) 36 37 ts.LoginAsPersistentUser() 38 cp := ts.Spawn("secrets", "set", "project.test-secret", "test-value") 39 cp.Expect("Operating on project") 40 cp.Expect("cli-integration-tests/Python3") 41 cp.ExpectExitCode(0) 42 43 cp = ts.Spawn("secrets", "get", "project.test-secret", "--output", "json") 44 cp.ExpectExitCode(0) 45 suite.Equal(string(expected), cp.StrippedSnapshot()) 46 47 cp = ts.Spawn("secrets", "sync") 48 cp.Expect("Operating on project") 49 cp.Expect("cli-integration-tests/Python3") 50 cp.Expect("Successfully synchronized") 51 cp.ExpectExitCode(0) 52 53 cp = ts.Spawn("secrets") 54 cp.Expect("Operating on project") 55 cp.Expect("cli-integration-tests/Python3") 56 cp.Expect("Name") 57 cp.Expect("project") 58 cp.Expect("Description") 59 cp.Expect("Defined") 60 cp.Expect("test-secret") 61 cp.ExpectExitCode(0) 62 } 63 64 func (suite *SecretsIntegrationTestSuite) TestSecret_Expand() { 65 suite.OnlyRunForTags(tagsuite.Secrets, tagsuite.JSON) 66 ts := e2e.New(suite.T(), false) 67 defer ts.Close() 68 69 ts.LoginAsPersistentUser() 70 defer clearSecrets(ts, "project.test-secret", "user.test-secret") 71 72 asyData := strings.TrimSpace(` 73 project: https://platform.activestate.com/ActiveState-CLI/secrets-test 74 scripts: 75 - name: project-secret 76 language: bash 77 standalone: true 78 value: echo $secrets.project.project-secret 79 - name: user-secret 80 language: bash 81 standalone: true 82 value: echo $secrets.user.user-secret 83 `) 84 85 ts.PrepareActiveStateYAML(asyData) 86 ts.PrepareCommitIdFile("c7f8f45d-39e2-4f22-bd2e-4182b914880f") 87 88 cp := ts.Spawn("secrets", "set", "project.project-secret", "project-value") 89 cp.Expect("Operating on project") 90 cp.Expect("ActiveState-CLI/secrets-test") 91 cp.ExpectExitCode(0) 92 93 cp = ts.Spawn("secrets", "set", "user.user-secret", "user-value") 94 cp.Expect("Operating on project") 95 cp.Expect("ActiveState-CLI/secrets-test") 96 cp.ExpectExitCode(0) 97 98 cp = ts.Spawn("run", "project-secret") 99 cp.Expect("project-value") 100 cp.ExpectExitCode(0) 101 102 cp = ts.Spawn("run", "user-secret") 103 cp.Expect("user-value") 104 cp.ExpectExitCode(0) 105 } 106 107 func clearSecrets(ts *e2e.Session, unset ...string) { 108 for _, secret := range unset { 109 cp := ts.Spawn("secrets", "set", secret, "") 110 cp.ExpectExitCode(0) 111 } 112 } 113 114 func TestSecretsIntegrationTestSuite(t *testing.T) { 115 suite.Run(t, new(SecretsIntegrationTestSuite)) 116 }