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 }