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 }