aboutsummaryrefslogtreecommitdiffstats
path: root/enc_test.go
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2025-11-11 11:27:17 -0800
committerRose Hogenson <rosehogenson@posteo.net>2025-11-11 11:27:17 -0800
commit128d5c513b7a5c50a65f03480fc61b06fb5ef8e8 (patch)
tree4128102ee2d5fd31f7a4760aefb9eddce478422f /enc_test.go
parentStore the last segment tag inside the nonce (diff)
downloadsym-128d5c513b7a5c50a65f03480fc61b06fb5ef8e8.tar.zst
Use subcommands package
This reduces a little bit of complexity. (does it?)
Diffstat (limited to 'enc_test.go')
-rw-r--r--enc_test.go65
1 files changed, 23 insertions, 42 deletions
diff --git a/enc_test.go b/enc_test.go
index f204283..c800652 100644
--- a/enc_test.go
+++ b/enc_test.go
@@ -3,7 +3,6 @@ package main
import (
"bytes"
"errors"
- "flag"
"path/filepath"
"strings"
"testing"
@@ -31,7 +30,7 @@ func TestEncryptFile_Force(t *testing.T) {
fileName := filepath.Join(t.TempDir(), "file")
mustWriteFile(t, fileName, []byte("test file content"))
mustWriteFile(t, fileName+".enc", []byte("file already exists"))
- err := (&encryptOptions{encryptFlags: encryptFlags{force: tc.force}}).encryptFile(fileName, "asdf")
+ err := (&encCmd{force: tc.force}).encryptFile(fileName, "asdf")
if gotErr := err != nil; gotErr != tc.wantErr {
t.Errorf("EncryptFile(force=%t) returned returned error %v when output file exists, want error? %t", tc.force, err, tc.wantErr)
}
@@ -42,7 +41,7 @@ func TestEncryptFile_Force(t *testing.T) {
func TestEncryptFile_NotFound(t *testing.T) {
t.Parallel()
- err := (&encryptOptions{}).encryptFile("my-nonexistent-file.txt", "asdf")
+ err := (&encCmd{}).encryptFile("my-nonexistent-file.txt", "asdf")
if err == nil {
t.Fatal("encryptFile succeeded for nonexistent file, want error")
}
@@ -55,42 +54,24 @@ func TestEncryptFile_NoPermission(t *testing.T) {
mustWriteFile(t, fileName, []byte("test file content"))
mustWriteFile(t, fileName+".enc", nil)
mustChmod(t, fileName+".enc", 0400)
- err := (&encryptOptions{encryptFlags: encryptFlags{force: true}}).encryptFile(fileName, "asdf")
+ err := (&encCmd{force: true}).encryptFile(fileName, "asdf")
if err == nil {
t.Fatal("encryptFile succeeded for unwritable file, want error")
}
}
-func TestEncryptOptions_RegisterFlags(t *testing.T) {
- t.Parallel()
-
- var o encryptOptions
- fs := flag.NewFlagSet("test", flag.ContinueOnError)
- o.registerFlags(fs)
- const cmd = "-g -p asdf -f"
- fs.Parse(strings.Split(cmd, " "))
- want := encryptFlags{
- generatePassword: true,
- password: "asdf",
- force: true,
- }
- if o.encryptFlags != want {
- t.Errorf("Command line %q parsed incorrect encryptOptions, got %+v, want %+v", cmd, o, want)
- }
-}
-
-func TestEncryptOptions_Run(t *testing.T) {
+func TestEncCmd_Run(t *testing.T) {
t.Parallel()
const password = "asdf"
fileContent := []byte("test file content")
fileName := filepath.Join(t.TempDir(), "file")
mustWriteFile(t, fileName, fileContent)
- if err := (&encryptOptions{encryptFlags: encryptFlags{password: password}}).run(fileName); err != nil {
+ if err := (&encCmd{password: password}).run(fileName); err != nil {
t.Fatalf("enc failed: %s", err)
}
mustRemove(t, fileName)
- if err := (&decryptOptions{}).decryptFile(fileName+".enc", password); err != nil {
+ if err := (&decCmd{}).decryptFile(fileName+".enc", password); err != nil {
t.Fatalf("Failed to decrypt encrypted file: %s", err)
}
gotFileContents := mustReadFile(t, fileName)
@@ -99,7 +80,7 @@ func TestEncryptOptions_Run(t *testing.T) {
}
}
-func TestEncryptOptions_Run_UsageError(t *testing.T) {
+func TestEncCmd_Run_UsageError(t *testing.T) {
t.Parallel()
for _, tc := range []struct {
@@ -123,18 +104,18 @@ func TestEncryptOptions_Run_UsageError(t *testing.T) {
t.Run(tc.desc, func(t *testing.T) {
t.Parallel()
- opts := &encryptOptions{encryptFlags: encryptFlags{
+ opts := &encCmd{
generatePassword: tc.generatePassword,
password: tc.password,
- }}
+ }
if err := opts.run(tc.files...); err == nil {
- t.Errorf("encryptOptions.run(%+v) succeeded, want error", opts)
+ t.Errorf("encCmd.run(%+v) succeeded, want error", opts)
}
})
}
}
-func TestEncryptOptions_Run_GeneratePassword(t *testing.T) {
+func TestEncCmd_Run_GeneratePassword(t *testing.T) {
t.Parallel()
fileContent := []byte("test file content")
@@ -142,16 +123,16 @@ func TestEncryptOptions_Run_GeneratePassword(t *testing.T) {
mustWriteFile(t, fileName, fileContent)
password := new(strings.Builder)
- opts := &encryptOptions{
- encryptFlags: encryptFlags{generatePassword: true},
+ opts := &encCmd{
+ generatePassword: true,
passwordOut: password,
}
if err := opts.run(fileName); err != nil {
- t.Fatalf("encryptOptions.run(%+v) failed: %s", opts, err)
+ t.Fatalf("encCmd.run(%+v) failed: %s", opts, err)
}
pw := password.String()
mustRemove(t, fileName)
- if err := (&decryptOptions{}).decryptFile(fileName+".enc", pw); err != nil {
+ if err := (&decCmd{}).decryptFile(fileName+".enc", pw); err != nil {
t.Fatalf("Failed to decrypt encrypted file with generated password %q: %s", pw, err)
}
gotFileContents := mustReadFile(t, fileName)
@@ -160,7 +141,7 @@ func TestEncryptOptions_Run_GeneratePassword(t *testing.T) {
}
}
-func TestEncryptOptions_Run_Stdin(t *testing.T) {
+func TestEncCmd_Run_Stdin(t *testing.T) {
t.Parallel()
const (
@@ -168,15 +149,15 @@ func TestEncryptOptions_Run_Stdin(t *testing.T) {
password = "asdf"
)
stdout := new(strings.Builder)
- if err := (&encryptOptions{
- encryptFlags: encryptFlags{password: password},
+ if err := (&encCmd{
+ password: password,
stdin: strings.NewReader(input),
stdout: stdout,
}).run(); err != nil {
- t.Errorf("encryptOptions.run failed: %s", err)
+ t.Errorf("encCmd.run failed: %s", err)
}
got := new(strings.Builder)
- if err := (&decryptOptions{}).decrypt(got, strings.NewReader(stdout.String()), password); err != nil {
+ if err := (&decCmd{}).decrypt(got, strings.NewReader(stdout.String()), password); err != nil {
t.Errorf("Failed to decrypt stdout content %q: %s", stdout, err)
}
if got, want := got.String(), input; got != want {
@@ -184,7 +165,7 @@ func TestEncryptOptions_Run_Stdin(t *testing.T) {
}
}
-func TestEncryptOptions_Run_ReadPassword(t *testing.T) {
+func TestEncCmd_Run_ReadPassword(t *testing.T) {
t.Parallel()
for _, tc := range []struct {
@@ -220,7 +201,7 @@ func TestEncryptOptions_Run_ReadPassword(t *testing.T) {
mustWriteFile(t, fileName, []byte("test file content"))
passwordI := 0
- err := (&encryptOptions{
+ err := (&encCmd{
passwordIn: func() (string, error) {
if passwordI == len(tc.passwords) && tc.err != nil {
return "", tc.err
@@ -231,7 +212,7 @@ func TestEncryptOptions_Run_ReadPassword(t *testing.T) {
},
}).run(fileName)
if gotErr := err != nil; gotErr != tc.wantErr {
- t.Errorf("encryptOptions.run returned error %v, want error? %t", err, tc.wantErr)
+ t.Errorf("encCmd.run returned error %v, want error? %t", err, tc.wantErr)
}
})
}