mirror of
https://github.com/anand34577/ferrum.git
synced 2026-09-22 10:33:27 +00:00
68 lines
1.5 KiB
Go
68 lines
1.5 KiB
Go
package secrets
|
|
|
|
import "testing"
|
|
|
|
func TestEncryptDecryptRoundTrip(t *testing.T) {
|
|
box, err := New("test-secret-key")
|
|
if err != nil {
|
|
t.Fatalf("New: %v", err)
|
|
}
|
|
|
|
plaintext := "root@pam!ferrum-token-secret-value"
|
|
ciphertext, err := box.Encrypt(plaintext)
|
|
if err != nil {
|
|
t.Fatalf("Encrypt: %v", err)
|
|
}
|
|
if ciphertext == plaintext {
|
|
t.Fatal("ciphertext must not equal plaintext")
|
|
}
|
|
|
|
decrypted, err := box.Decrypt(ciphertext)
|
|
if err != nil {
|
|
t.Fatalf("Decrypt: %v", err)
|
|
}
|
|
if decrypted != plaintext {
|
|
t.Fatalf("decrypted = %q, want %q", decrypted, plaintext)
|
|
}
|
|
}
|
|
|
|
func TestEncryptEmptyStringRoundTrips(t *testing.T) {
|
|
box, err := New("test-secret-key")
|
|
if err != nil {
|
|
t.Fatalf("New: %v", err)
|
|
}
|
|
ciphertext, err := box.Encrypt("")
|
|
if err != nil {
|
|
t.Fatalf("Encrypt: %v", err)
|
|
}
|
|
if ciphertext != "" {
|
|
t.Fatalf("Encrypt(\"\") = %q, want empty string", ciphertext)
|
|
}
|
|
decrypted, err := box.Decrypt(ciphertext)
|
|
if err != nil {
|
|
t.Fatalf("Decrypt: %v", err)
|
|
}
|
|
if decrypted != "" {
|
|
t.Fatalf("Decrypt(\"\") = %q, want empty string", decrypted)
|
|
}
|
|
}
|
|
|
|
func TestDecryptWithWrongKeyFails(t *testing.T) {
|
|
boxA, _ := New("key-a")
|
|
boxB, _ := New("key-b")
|
|
|
|
ciphertext, err := boxA.Encrypt("sensitive value")
|
|
if err != nil {
|
|
t.Fatalf("Encrypt: %v", err)
|
|
}
|
|
if _, err := boxB.Decrypt(ciphertext); err == nil {
|
|
t.Fatal("expected Decrypt with wrong key to fail, got nil error")
|
|
}
|
|
}
|
|
|
|
func TestNewRejectsEmptySecret(t *testing.T) {
|
|
if _, err := New(""); err == nil {
|
|
t.Fatal("expected New(\"\") to return an error")
|
|
}
|
|
}
|