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