github.com/annwntech/go-micro/v2@v2.9.5/config/secrets/secretbox/secretbox_test.go (about) 1 package secretbox 2 3 import ( 4 "encoding/base64" 5 "reflect" 6 "testing" 7 8 "github.com/annwntech/go-micro/v2/config/secrets" 9 ) 10 11 func TestSecretBox(t *testing.T) { 12 secretKey, err := base64.StdEncoding.DecodeString("4jbVgq8FsAV7vy+n8WqEZrl7BUtNqh3fYT5RXzXOPFY=") 13 if err != nil { 14 t.Fatal(err) 15 } 16 17 s := NewSecrets() 18 19 if err := s.Init(); err == nil { 20 t.Error("Secretbox accepted an empty secret key") 21 } 22 if err := s.Init(secrets.Key([]byte("invalid"))); err == nil { 23 t.Error("Secretbox accepted a secret key that is invalid") 24 } 25 26 if err := s.Init(secrets.Key(secretKey)); err != nil { 27 t.Fatal(err) 28 } 29 30 o := s.Options() 31 if !reflect.DeepEqual(o.Key, secretKey) { 32 t.Error("Init() didn't set secret key correctly") 33 } 34 if s.String() != "nacl-secretbox" { 35 t.Error(s.String() + " should be nacl-secretbox") 36 } 37 38 // Try 10 times to get different nonces 39 for i := 0; i < 10; i++ { 40 message := []byte(`Can you hear me, Major Tom?`) 41 42 encrypted, err := s.Encrypt(message) 43 if err != nil { 44 t.Errorf("Failed to encrypt message (%s)", err) 45 } 46 47 decrypted, err := s.Decrypt(encrypted) 48 if err != nil { 49 t.Errorf("Failed to decrypt encrypted message (%s)", err) 50 } 51 52 if !reflect.DeepEqual(message, decrypted) { 53 t.Errorf("Decrypted Message dod not match encrypted message") 54 } 55 } 56 }