diff options
| author | Shulhan <ms@kilabit.info> | 2023-09-27 00:21:18 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2023-09-27 00:54:10 +0700 |
| commit | c595d849701d35e81c02e4a834abb4cd2d0a5933 (patch) | |
| tree | 534e2dad5633945661101dc86e8c05e070c3cad2 | |
| parent | d1b393b0d4ca75c8d81d051a332597b7aa3f0ab0 (diff) | |
| download | awwan-c595d849701d35e81c02e4a834abb4cd2d0a5933.tar.xz | |
all: add tests for local with empty and invalid passphrase
While at it, rename the script for testing encrypted value to allow
other tests without encryption later.
| -rw-r--r-- | awwan_test.go | 47 | ||||
| -rw-r--r-- | testdata/local/local.data | 9 | ||||
| -rw-r--r-- | testdata/local/local_encrypted.aww | 5 | ||||
| -rw-r--r-- | testdata/local/local_encrypted.data | 15 | ||||
| -rw-r--r-- | testdata/local/sub/local.aww | 1 | ||||
| -rw-r--r-- | testdata/local/sub/local_encrypted.aww (renamed from testdata/local/local.aww) | 0 |
6 files changed, 56 insertions, 21 deletions
diff --git a/awwan_test.go b/awwan_test.go index acf54f6..30c6a0c 100644 --- a/awwan_test.go +++ b/awwan_test.go @@ -153,9 +153,13 @@ func TestAwwanEncrypt(t *testing.T) { func TestAwwanLocal_withEncryption(t *testing.T) { type testCase struct { + desc string script string lineRange string - tdataOut string + pass string + expError string + expStdout string + expStderr string } var ( @@ -163,7 +167,7 @@ func TestAwwanLocal_withEncryption(t *testing.T) { err error ) - tdata, err = test.LoadData(`testdata/local/local.data`) + tdata, err = test.LoadData(`testdata/local/local_encrypted.data`) if err != nil { t.Fatal(err) } @@ -181,23 +185,38 @@ func TestAwwanLocal_withEncryption(t *testing.T) { t.Fatal(err) } - // Mock terminal to read passphrase for private key. - mockrw.BufRead.WriteString("s3cret\r") aww.cryptoc.termrw = &mockrw var cases = []testCase{{ - script: filepath.Join(basedir, `local.aww`), - lineRange: `1`, - tdataOut: `local.aww:1`, + desc: `With encrypted value`, + script: filepath.Join(basedir, `local_encrypted.aww`), + lineRange: `3`, + pass: "s3cret\r", + expStdout: string(tdata.Output[`echo_encrypted`]), + }, { + desc: `With encrypted value, no passphrase`, + script: filepath.Join(basedir, `local_encrypted.aww`), + lineRange: `3`, + expError: string(tdata.Output[`echo_encrypted_no_pass`]), }, { - script: filepath.Join(basedir, `sub`, `local.aww`), + desc: `With encrypted value, invalid passphrase`, + script: filepath.Join(basedir, `local_encrypted.aww`), + lineRange: `3`, + pass: "invalid\r", + expError: string(tdata.Output[`echo_encrypted_invalid_pass`]), + }, { + desc: `With encrypted value in sub`, + script: filepath.Join(basedir, `sub`, `local_encrypted.aww`), lineRange: `1`, - tdataOut: `sub/local.aww:1`, + pass: "s3cret\r", + expStdout: string(tdata.Output[`sub_echo_encrypted`]), }} var c testCase for _, c = range cases { + t.Logf(c.desc) + var req = NewRequest(CommandModeLocal, c.script, c.lineRange) mockout.Reset() @@ -205,12 +224,18 @@ func TestAwwanLocal_withEncryption(t *testing.T) { req.stdout = &mockout req.stderr = &mockerr + // Mock terminal to read passphrase for private key. + mockrw.BufRead.Reset() + mockrw.BufRead.WriteString(c.pass) + aww.cryptoc.privateKey = nil + err = aww.Local(req) if err != nil { - t.Fatal(err) + test.Assert(t, `Local error`, c.expError, err.Error()) } - test.Assert(t, `stdout`, string(tdata.Output[c.tdataOut]), mockout.String()) + test.Assert(t, `stderr`, c.expStderr, mockerr.String()) + test.Assert(t, `stdout`, c.expStdout, mockout.String()) } } diff --git a/testdata/local/local.data b/testdata/local/local.data deleted file mode 100644 index 9ecdb9f..0000000 --- a/testdata/local/local.data +++ /dev/null @@ -1,9 +0,0 @@ -<<< local.aww:1 - ---> local: 1: echo this_is_a_secret -this_is_a_secret - -<<< sub/local.aww:1 - ---> local: 1: echo this_is_a_secret_in_sub -this_is_a_secret_in_sub diff --git a/testdata/local/local_encrypted.aww b/testdata/local/local_encrypted.aww new file mode 100644 index 0000000..7655b28 --- /dev/null +++ b/testdata/local/local_encrypted.aww @@ -0,0 +1,5 @@ +echp {{.Val "host::name"}} + +echo {{.Val "secret::pass"}} + +echo {{.Val "host::name"}} {{.Val "secret::pass"}} diff --git a/testdata/local/local_encrypted.data b/testdata/local/local_encrypted.data new file mode 100644 index 0000000..d4e27b0 --- /dev/null +++ b/testdata/local/local_encrypted.data @@ -0,0 +1,15 @@ +<<< echo_encrypted + +--> local: 3: echo this_is_a_secret +this_is_a_secret + +<<< echo_encrypted_no_pass +Local: NewScript: ParseScript: template: local_encrypted.aww:3:7: executing "local_encrypted.aww" at <.Val>: error calling Val: "secret::pass" is empty + +<<< echo_encrypted_invalid_pass +Local: NewSession: loadEnvFromPaths: LoadPrivateKeyInteractive: x509: decryption password incorrect + +<<< sub_echo_encrypted + +--> local: 1: echo this_is_a_secret_in_sub +this_is_a_secret_in_sub diff --git a/testdata/local/sub/local.aww b/testdata/local/sub/local.aww deleted file mode 100644 index d9127db..0000000 --- a/testdata/local/sub/local.aww +++ /dev/null @@ -1 +0,0 @@ -echo {{.Val "secret::pass"}} diff --git a/testdata/local/local.aww b/testdata/local/sub/local_encrypted.aww index d9127db..d9127db 100644 --- a/testdata/local/local.aww +++ b/testdata/local/sub/local_encrypted.aww |
