mirror of
				https://github.com/traefik/traefik.git
				synced 2025-10-31 08:21:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			247 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package gateway
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | |
| 	"sigs.k8s.io/gateway-api/apis/v1alpha1"
 | |
| )
 | |
| 
 | |
| func TestStatusEquals(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		statusA  v1alpha1.GatewayStatus
 | |
| 		statusB  v1alpha1.GatewayStatus
 | |
| 		expected bool
 | |
| 	}{
 | |
| 		{
 | |
| 			desc:     "Empty",
 | |
| 			statusA:  v1alpha1.GatewayStatus{},
 | |
| 			statusB:  v1alpha1.GatewayStatus{},
 | |
| 			expected: true,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Same status",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{
 | |
| 						Type:   "foobar",
 | |
| 						Reason: "foobar",
 | |
| 					},
 | |
| 				},
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Port: 80,
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type:   "foobar",
 | |
| 								Reason: "foobar",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{
 | |
| 						Type:   "foobar",
 | |
| 						Reason: "foobar",
 | |
| 					},
 | |
| 				},
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Port: 80,
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type:   "foobar",
 | |
| 								Reason: "foobar",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: true,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Listeners length not equal",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway conditions length not equal",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway conditions different types",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{
 | |
| 						Type: "foobar",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{
 | |
| 						Type: "foobir",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway conditions same types but different reason",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{
 | |
| 						Type: "foobar",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Conditions: []metav1.Condition{
 | |
| 					{
 | |
| 						Type:   "foobar",
 | |
| 						Reason: "Another reason",
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway listeners conditions length",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Port:       80,
 | |
| 						Conditions: []metav1.Condition{},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Port: 80,
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway listeners conditions same types but different status",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type: "foobar",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type:   "foobar",
 | |
| 								Status: "Another status",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway listeners conditions same types but different message",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type: "foobar",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type:    "foobar",
 | |
| 								Message: "Another status",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 		{
 | |
| 			desc: "Gateway listeners conditions same types/reason but different ports",
 | |
| 			statusA: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Port: 80,
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type:   "foobar",
 | |
| 								Reason: "foobar",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			statusB: v1alpha1.GatewayStatus{
 | |
| 				Listeners: []v1alpha1.ListenerStatus{
 | |
| 					{
 | |
| 						Port: 443,
 | |
| 						Conditions: []metav1.Condition{
 | |
| 							{
 | |
| 								Type:   "foobar",
 | |
| 								Reason: "foobar",
 | |
| 							},
 | |
| 						},
 | |
| 					},
 | |
| 				},
 | |
| 			},
 | |
| 			expected: false,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		test := test
 | |
| 
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			result := statusEquals(test.statusA, test.statusB)
 | |
| 
 | |
| 			assert.Equal(t, test.expected, result)
 | |
| 		})
 | |
| 	}
 | |
| }
 |