summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-09-27 00:21:18 +0700
committerShulhan <ms@kilabit.info>2023-09-27 00:54:10 +0700
commitc595d849701d35e81c02e4a834abb4cd2d0a5933 (patch)
tree534e2dad5633945661101dc86e8c05e070c3cad2
parentd1b393b0d4ca75c8d81d051a332597b7aa3f0ab0 (diff)
downloadawwan-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.go47
-rw-r--r--testdata/local/local.data9
-rw-r--r--testdata/local/local_encrypted.aww5
-rw-r--r--testdata/local/local_encrypted.data15
-rw-r--r--testdata/local/sub/local.aww1
-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