github.com/hashicorp/vault/sdk@v0.11.0/helper/salt/salt_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package salt 5 6 import ( 7 "context" 8 "crypto/sha1" 9 "crypto/sha256" 10 "testing" 11 12 uuid "github.com/hashicorp/go-uuid" 13 "github.com/hashicorp/vault/sdk/logical" 14 ) 15 16 func TestSalt(t *testing.T) { 17 inm := &logical.InmemStorage{} 18 conf := &Config{} 19 20 salt, err := NewSalt(context.Background(), inm, conf) 21 if err != nil { 22 t.Fatalf("err: %v", err) 23 } 24 25 if !salt.DidGenerate() { 26 t.Fatalf("expected generation") 27 } 28 29 // Verify the salt exists 30 out, err := inm.Get(context.Background(), DefaultLocation) 31 if err != nil { 32 t.Fatalf("err: %v", err) 33 } 34 if out == nil { 35 t.Fatalf("missing salt") 36 } 37 38 // Create a new salt, should restore 39 salt2, err := NewSalt(context.Background(), inm, conf) 40 if err != nil { 41 t.Fatalf("err: %v", err) 42 } 43 44 if salt2.DidGenerate() { 45 t.Fatalf("unexpected generation") 46 } 47 48 // Check for a match 49 if salt.salt != salt2.salt { 50 t.Fatalf("salt mismatch: %s %s", salt.salt, salt2.salt) 51 } 52 53 // Verify a match 54 id := "foobarbaz" 55 sid1 := salt.SaltID(id) 56 sid2 := salt2.SaltID(id) 57 58 if sid1 != sid2 { 59 t.Fatalf("mismatch") 60 } 61 } 62 63 func TestSaltID(t *testing.T) { 64 salt, err := uuid.GenerateUUID() 65 if err != nil { 66 t.Fatal(err) 67 } 68 id := "foobarbaz" 69 70 sid1 := SaltID(salt, id, SHA1Hash) 71 sid2 := SaltID(salt, id, SHA1Hash) 72 73 if len(sid1) != sha1.Size*2 { 74 t.Fatalf("Bad len: %d %s", len(sid1), sid1) 75 } 76 77 if sid1 != sid2 { 78 t.Fatalf("mismatch") 79 } 80 81 sid1 = SaltID(salt, id, SHA256Hash) 82 sid2 = SaltID(salt, id, SHA256Hash) 83 84 if len(sid1) != sha256.Size*2 { 85 t.Fatalf("Bad len: %d", len(sid1)) 86 } 87 88 if sid1 != sid2 { 89 t.Fatalf("mismatch") 90 } 91 }