github.com/opentofu/opentofu@v1.7.1/internal/encryption/keyprovider/pbkdf2/metadata_test.go (about)

     1  // Copyright (c) The OpenTofu Authors
     2  // SPDX-License-Identifier: MPL-2.0
     3  // Copyright (c) 2023 HashiCorp, Inc.
     4  // SPDX-License-Identifier: MPL-2.0
     5  
     6  package pbkdf2
     7  
     8  import "testing"
     9  
    10  func TestMetadata_validate(t *testing.T) {
    11  	for name, tc := range map[string]struct {
    12  		meta    Metadata
    13  		present bool
    14  		valid   bool
    15  	}{
    16  		"empty": {
    17  			Metadata{},
    18  			false,
    19  			true,
    20  		},
    21  		"invalid-iterations": {
    22  			Metadata{
    23  				Iterations:   -1,
    24  				KeyLength:    1,
    25  				HashFunction: SHA256HashFunctionName,
    26  				Salt:         []byte("Hello world!"),
    27  			},
    28  			true,
    29  			false,
    30  		},
    31  		"invalid-keylength": {
    32  			Metadata{
    33  				Iterations:   1,
    34  				KeyLength:    -1,
    35  				HashFunction: SHA256HashFunctionName,
    36  				Salt:         []byte("Hello world!"),
    37  			},
    38  			true,
    39  			false,
    40  		},
    41  		"invalid-hashfunction": {
    42  			Metadata{
    43  				Iterations:   1,
    44  				KeyLength:    1,
    45  				HashFunction: "sha0",
    46  				Salt:         []byte("Hello world!"),
    47  			},
    48  			true,
    49  			false,
    50  		},
    51  		"no-salt": {
    52  			Metadata{
    53  				Iterations:   1,
    54  				KeyLength:    1,
    55  				HashFunction: SHA256HashFunctionName,
    56  				Salt:         []byte{},
    57  			},
    58  			false,
    59  			true,
    60  		},
    61  	} {
    62  		t.Run(name, func(t *testing.T) {
    63  			if present := tc.meta.isPresent(); present != tc.present {
    64  				t.Fatalf("incorrect value for 'present': %t", present)
    65  			}
    66  			if err := tc.meta.validate(); (err == nil) != tc.valid {
    67  				t.Fatalf("incorrect return value from 'validate': %v", err)
    68  			}
    69  		})
    70  	}
    71  }