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  }