github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/pkg/auth/crypt/encryption_test.go (about)

     1  package crypt_test
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/treeverse/lakefs/pkg/auth/crypt"
     9  )
    10  
    11  func TestSecretStore_Encrypt(t *testing.T) {
    12  	cases := []struct {
    13  		Secret string
    14  		Data   []byte
    15  	}{
    16  		{"some secret", []byte("test string")},
    17  		{"some other secret with a different length", []byte("another test string")},
    18  		{"", []byte("something else, empty secret")},
    19  		{"1", []byte("short secret this time")},
    20  		{"some secret", []byte("")},
    21  	}
    22  
    23  	for i, cas := range cases {
    24  		t.Run(fmt.Sprintf("encrypt_%d", i), func(t *testing.T) {
    25  			aes := crypt.NewSecretStore([]byte(cas.Secret))
    26  			encrypted, err := aes.Encrypt(cas.Data)
    27  			if err != nil {
    28  				t.Fatal(err)
    29  			}
    30  
    31  			decrypted, err := aes.Decrypt(encrypted)
    32  			if err != nil {
    33  				t.Fatal(err)
    34  			}
    35  
    36  			if !bytes.Equal(cas.Data, decrypted) {
    37  				t.Fatalf("expected decrypted data to equal original data %s, instead got %s", cas.Data, decrypted)
    38  			}
    39  
    40  		})
    41  	}
    42  }
    43  
    44  func BenchmarkSecretStore_Encrypt(b *testing.B) {
    45  	secret := "foo bar"
    46  	data := []byte("some value, it doesn't really matter what")
    47  	aes := crypt.NewSecretStore([]byte(secret))
    48  	encrypted, err := aes.Encrypt(data)
    49  	if err != nil {
    50  		b.Fatal(err)
    51  	}
    52  	b.ResetTimer()
    53  	for i := 0; i < b.N; i++ {
    54  		_, _ = aes.Decrypt(encrypted)
    55  	}
    56  }