aboutsummaryrefslogtreecommitdiff
path: root/cli_test.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2023-05-16 00:06:39 +0700
committerShulhan <ms@kilabit.info>2023-05-16 00:06:39 +0700
commit6a9e476354d23da316a94d0d5a7f8b14a273910e (patch)
tree2b3cd9df782fa41edde4b3282b7375825684be40 /cli_test.go
parent6fd1ef57498aad5b73808f2b2260ccfe76ae649c (diff)
downloadgotp-6a9e476354d23da316a94d0d5a7f8b14a273910e.tar.xz
all: add command to set private key
The set-private-key command encrypt the issuer's value (hash:secret...) in the file using private key. The supported private key is RSA.
Diffstat (limited to 'cli_test.go')
-rw-r--r--cli_test.go72
1 files changed, 72 insertions, 0 deletions
diff --git a/cli_test.go b/cli_test.go
index c91d11e..a900ede 100644
--- a/cli_test.go
+++ b/cli_test.go
@@ -4,6 +4,7 @@
package gotp
import (
+ "bytes"
"fmt"
"os"
"testing"
@@ -137,3 +138,74 @@ private_key =
test.Assert(t, cli.cfg.file, c.expConfig, string(got))
}
}
+
+func TestCli_SetPrivateKey(t *testing.T) {
+ var (
+ tdata *test.Data
+ err error
+ )
+
+ tdata, err = test.LoadData(`testdata/cli_SetPrivateKey_test.txt`)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var (
+ cli = &Cli{}
+ rawConfig []byte
+ cfg *config
+ )
+
+ rawConfig = tdata.Input[`config.ini.before`]
+
+ cfg, err = loadConfig(rawConfig)
+ if err != nil {
+ t.Fatal(err)
+ }
+ cli.cfg = cfg
+
+ // Set the private key.
+
+ err = cli.SetPrivateKey(tdata.Flag[`private_key_openssl`])
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ // Change the private key.
+
+ err = cli.SetPrivateKey(tdata.Flag[`private_key_openssl`])
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ rawConfig, err = cli.cfg.MarshalText()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ // Load the encrypted raw config and compare the issuer.
+
+ cfg, err = loadConfig(rawConfig)
+ if err != nil {
+ t.Fatal(err)
+ }
+ cli.cfg = cfg
+
+ var (
+ gotLabels []string = cli.List()
+ label string
+ issuer *Issuer
+ got bytes.Buffer
+ )
+
+ for _, label = range gotLabels {
+ issuer, err = cli.cfg.get(label)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ fmt.Fprintf(&got, "%s = %s\n", label, issuer.String())
+ }
+
+ test.Assert(t, `get all labels`, string(tdata.Output[`issuers`]), got.String())
+}