github.com/opentofu/opentofu@v1.7.1/internal/encryption/method/aesgcm/aesgcm_test.go (about)

     1  package aesgcm_test
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/opentofu/opentofu/internal/encryption/keyprovider"
     8  
     9  	"github.com/opentofu/opentofu/internal/encryption/method"
    10  	"github.com/opentofu/opentofu/internal/encryption/method/aesgcm"
    11  )
    12  
    13  var config = &aesgcm.Config{
    14  	Keys: keyprovider.Output{
    15  		EncryptionKey: []byte("aeshi1quahb2Rua0ooquaiwahbonedoh"),
    16  		DecryptionKey: []byte("aeshi1quahb2Rua0ooquaiwahbonedoh"),
    17  	},
    18  }
    19  
    20  func TestDecryptEmptyData(t *testing.T) {
    21  	m, err := config.Build()
    22  	if err != nil {
    23  		t.Fatalf("unexpected error (%v)", err)
    24  	}
    25  
    26  	_, err = m.Decrypt(nil)
    27  	if err == nil {
    28  		t.Fatalf("Expected error, none returned.")
    29  	}
    30  
    31  	var e *method.ErrDecryptionFailed
    32  	if !errors.As(err, &e) {
    33  		t.Fatalf("Incorrect error type returned: %T (%v)", err, err)
    34  	}
    35  }
    36  
    37  func TestDecryptShortData(t *testing.T) {
    38  	m, err := config.Build()
    39  	if err != nil {
    40  		t.Fatalf("unexpected error (%v)", err)
    41  	}
    42  
    43  	// Passing a non-empty, but shorter-than-nonce data
    44  	_, err = m.Decrypt([]byte("1"))
    45  	if err == nil {
    46  		t.Fatalf("Expected error, none returned.")
    47  	}
    48  
    49  	var e *method.ErrDecryptionFailed
    50  	if !errors.As(err, &e) {
    51  		t.Fatalf("Incorrect error type returned: %T (%v)", err, err)
    52  	}
    53  }
    54  
    55  func TestDecryptInvalidData(t *testing.T) {
    56  	m, err := config.Build()
    57  	if err != nil {
    58  		t.Fatalf("unexpected error (%v)", err)
    59  	}
    60  
    61  	// Passing a non-empty, but shorter-than-nonce data
    62  	_, err = m.Decrypt([]byte("abcdefghijklmnopqrstuvwxyz"))
    63  	if err == nil {
    64  		t.Fatalf("Expected error, none returned.")
    65  	}
    66  
    67  	var e *method.ErrDecryptionFailed
    68  	if !errors.As(err, &e) {
    69  		t.Fatalf("Incorrect error type returned: %T (%v)", err, err)
    70  	}
    71  }
    72  
    73  func TestDecryptCorruptData(t *testing.T) {
    74  	m, err := config.Build()
    75  	if err != nil {
    76  		t.Fatalf("unexpected error (%v)", err)
    77  	}
    78  
    79  	encrypted, err := m.Encrypt([]byte("Hello world!"))
    80  	if err != nil {
    81  		t.Fatalf("unexpected error (%v)", err)
    82  	}
    83  
    84  	encrypted = encrypted[:len(encrypted)-1]
    85  	decrypted, err := m.Decrypt(encrypted)
    86  	if err == nil {
    87  		t.Fatalf("Expected error, got: %v", decrypted)
    88  	}
    89  	var e *method.ErrDecryptionFailed
    90  	if !errors.As(err, &e) {
    91  		t.Fatalf("Incorrect error type returned: %T (%v)", err, err)
    92  	}
    93  }