github.com/letsencrypt/boulder@v0.20251208.0/allowlist/main_test.go (about)

     1  package allowlist
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestNewFromYAML(t *testing.T) {
     8  	t.Parallel()
     9  
    10  	tests := []struct {
    11  		name          string
    12  		yamlData      string
    13  		check         []string
    14  		expectAnswers []bool
    15  		expectErr     bool
    16  	}{
    17  		{
    18  			name:          "valid YAML",
    19  			yamlData:      "- oak\n- maple\n- cherry",
    20  			check:         []string{"oak", "walnut", "maple", "cherry"},
    21  			expectAnswers: []bool{true, false, true, true},
    22  			expectErr:     false,
    23  		},
    24  		{
    25  			name:          "empty YAML",
    26  			yamlData:      "",
    27  			check:         []string{"oak", "walnut", "maple", "cherry"},
    28  			expectAnswers: []bool{false, false, false, false},
    29  			expectErr:     false,
    30  		},
    31  		{
    32  			name:          "invalid YAML",
    33  			yamlData:      "{ invalid_yaml",
    34  			check:         []string{},
    35  			expectAnswers: []bool{},
    36  			expectErr:     true,
    37  		},
    38  	}
    39  
    40  	for _, tt := range tests {
    41  		t.Run(tt.name, func(t *testing.T) {
    42  			t.Parallel()
    43  
    44  			list, err := NewFromYAML[string]([]byte(tt.yamlData))
    45  			if (err != nil) != tt.expectErr {
    46  				t.Fatalf("NewFromYAML() error = %v, expectErr = %v", err, tt.expectErr)
    47  			}
    48  
    49  			if err == nil {
    50  				for i, item := range tt.check {
    51  					got := list.Contains(item)
    52  					if got != tt.expectAnswers[i] {
    53  						t.Errorf("Contains(%q) got %v, want %v", item, got, tt.expectAnswers[i])
    54  					}
    55  				}
    56  			}
    57  		})
    58  	}
    59  }
    60  
    61  func TestNewList(t *testing.T) {
    62  	t.Parallel()
    63  
    64  	tests := []struct {
    65  		name          string
    66  		members       []string
    67  		check         []string
    68  		expectAnswers []bool
    69  	}{
    70  		{
    71  			name:          "unique members",
    72  			members:       []string{"oak", "maple", "cherry"},
    73  			check:         []string{"oak", "walnut", "maple", "cherry"},
    74  			expectAnswers: []bool{true, false, true, true},
    75  		},
    76  		{
    77  			name:          "duplicate members",
    78  			members:       []string{"oak", "maple", "cherry", "oak"},
    79  			check:         []string{"oak", "walnut", "maple", "cherry"},
    80  			expectAnswers: []bool{true, false, true, true},
    81  		},
    82  		{
    83  			name:          "nil list",
    84  			members:       nil,
    85  			check:         []string{"oak", "walnut", "maple", "cherry"},
    86  			expectAnswers: []bool{false, false, false, false},
    87  		},
    88  		{
    89  			name:          "empty list",
    90  			members:       []string{},
    91  			check:         []string{"oak", "walnut", "maple", "cherry"},
    92  			expectAnswers: []bool{false, false, false, false},
    93  		},
    94  	}
    95  
    96  	for _, tt := range tests {
    97  		t.Run(tt.name, func(t *testing.T) {
    98  			t.Parallel()
    99  
   100  			list := NewList[string](tt.members)
   101  			for i, item := range tt.check {
   102  				got := list.Contains(item)
   103  				if got != tt.expectAnswers[i] {
   104  					t.Errorf("Contains(%q) got %v, want %v", item, got, tt.expectAnswers[i])
   105  				}
   106  			}
   107  		})
   108  	}
   109  }