github.com/dougneal/terraform@v0.6.15-0.20170330092735-b6a3840768a4/helper/resource/id_test.go (about)

     1  package resource
     2  
     3  import (
     4  	"regexp"
     5  	"strings"
     6  	"testing"
     7  )
     8  
     9  var allHex = regexp.MustCompile(`^[a-f0-9]+$`)
    10  
    11  func TestUniqueId(t *testing.T) {
    12  	iterations := 10000
    13  	ids := make(map[string]struct{})
    14  	var id, lastId string
    15  	for i := 0; i < iterations; i++ {
    16  		id = UniqueId()
    17  
    18  		if _, ok := ids[id]; ok {
    19  			t.Fatalf("Got duplicated id! %s", id)
    20  		}
    21  
    22  		if !strings.HasPrefix(id, "terraform-") {
    23  			t.Fatalf("Unique ID didn't have terraform- prefix! %s", id)
    24  		}
    25  
    26  		rest := strings.TrimPrefix(id, "terraform-")
    27  
    28  		if len(rest) != 26 {
    29  			t.Fatalf("Post-prefix part has wrong length! %s", rest)
    30  		}
    31  
    32  		if !allHex.MatchString(rest) {
    33  			t.Fatalf("Random part not all hex! %s", rest)
    34  		}
    35  
    36  		if lastId != "" && lastId >= id {
    37  			t.Fatalf("IDs not ordered! %s vs %s", lastId, id)
    38  		}
    39  
    40  		ids[id] = struct{}{}
    41  		lastId = id
    42  	}
    43  }