github.com/cilium/cilium@v1.16.2/operator/pkg/model/model_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package model 5 6 import ( 7 "reflect" 8 "testing" 9 ) 10 11 var testTLSListener = TLSPassthroughListener{ 12 Name: "test-tls-listener", 13 Port: 443, 14 } 15 16 var testTLSListener2 = TLSPassthroughListener{ 17 Name: "test-tls-listener2", 18 Port: 443, 19 } 20 21 var testHTTPListener = HTTPListener{ 22 Name: "test-http-listener", 23 Port: 80, 24 } 25 26 var testHTTPListener2 = HTTPListener{ 27 Name: "test-http-listener2", 28 Port: 80, 29 } 30 31 func TestModel_GetListeners(t *testing.T) { 32 type fields struct { 33 HTTP []HTTPListener 34 TLS []TLSPassthroughListener 35 } 36 tests := []struct { 37 name string 38 fields fields 39 want []Listener 40 }{ 41 { 42 name: "Combine HTTP and TLS listeners", 43 fields: fields{ 44 HTTP: []HTTPListener{testHTTPListener, testHTTPListener2}, 45 TLS: []TLSPassthroughListener{testTLSListener, testTLSListener2}, 46 }, 47 want: []Listener{&testHTTPListener, &testHTTPListener2, &testTLSListener, &testTLSListener2}, 48 }, 49 { 50 name: "Only HTTP listeners", 51 fields: fields{ 52 HTTP: []HTTPListener{testHTTPListener, testHTTPListener2}, 53 }, 54 want: []Listener{&testHTTPListener, &testHTTPListener2}, 55 }, 56 { 57 name: "Only TLS listeners", 58 fields: fields{ 59 TLS: []TLSPassthroughListener{testTLSListener, testTLSListener2}, 60 }, 61 want: []Listener{&testTLSListener, &testTLSListener2}, 62 }, 63 { 64 name: "No listeners", 65 fields: fields{}, 66 want: nil, 67 }, 68 } 69 for _, tt := range tests { 70 t.Run(tt.name, func(t *testing.T) { 71 m := &Model{ 72 HTTP: tt.fields.HTTP, 73 TLSPassthrough: tt.fields.TLS, 74 } 75 if got := m.GetListeners(); !reflect.DeepEqual(got, tt.want) { 76 t.Errorf("Model.GetListeners() = %v, want %v", got, tt.want) 77 } 78 }) 79 } 80 }