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  }