1818package elb
1919
2020import (
21- "context"
2221 "errors"
2322 "testing"
2423 "time"
@@ -34,16 +33,6 @@ import (
3433 "github.com/elastic/cloudbeat/internal/resources/utils/testhelper"
3534)
3635
37- // fakeResolver is a test double for hostResolver that never touches the network.
38- type fakeResolver struct {
39- ips []string
40- err error
41- }
42-
43- func (r * fakeResolver ) LookupHost (_ context.Context , _ string ) ([]string , error ) {
44- return r .ips , r .err
45- }
46-
4736var onlyDefaultRegion = []string {awslib .DefaultRegion }
4837
4938func TestProvider_DescribeLoadBalancers (t * testing.T ) {
@@ -182,7 +171,7 @@ func TestProvider_DescribeAllLoadBalancers(t *testing.T) {
182171 tests := []struct {
183172 name string
184173 client func () Client
185- resolver hostResolver
174+ resolver func ( t * testing. T ) hostResolver
186175 expectedResults int
187176 wantErr bool
188177 regions []string
@@ -195,14 +184,24 @@ func TestProvider_DescribeAllLoadBalancers(t *testing.T) {
195184 m .On ("DescribeLoadBalancers" , mock .Anything , mock .Anything ).Return (nil , errors .New ("failed" ))
196185 return m
197186 },
198- resolver : & fakeResolver {},
199- wantErr : true ,
200- regions : onlyDefaultRegion ,
187+ resolver : func (t * testing.T ) hostResolver {
188+ t .Helper ()
189+ // LookupHost is never reached: DescribeLoadBalancers fails first.
190+ return newMockHostResolver (t )
191+ },
192+ wantErr : true ,
193+ regions : onlyDefaultRegion ,
201194 },
202195 {
203- name : "with resources and DNS IPs" ,
204- client : elbV1ClientWithResources ,
205- resolver : & fakeResolver {ips : []string {"10.0.0.2" , "10.0.0.1" }}, // unsorted: expect sorted output
196+ name : "with resources and DNS IPs" ,
197+ client : elbV1ClientWithResources ,
198+ resolver : func (t * testing.T ) hostResolver {
199+ t .Helper ()
200+ m := newMockHostResolver (t )
201+ // unsorted on purpose: the provider is expected to sort the IPs
202+ m .EXPECT ().LookupHost (mock .Anything , mock .Anything ).Return ([]string {"10.0.0.2" , "10.0.0.1" }, nil )
203+ return m
204+ },
206205 regions : onlyDefaultRegion ,
207206 expectedResults : 1 ,
208207 checkResult : func (t * testing.T , got []awslib.AwsResource ) {
@@ -214,9 +213,14 @@ func TestProvider_DescribeAllLoadBalancers(t *testing.T) {
214213 },
215214 },
216215 {
217- name : "with resolver error (soft-fail)" ,
218- client : elbV1ClientWithResources ,
219- resolver : & fakeResolver {err : errors .New ("dns timeout" )},
216+ name : "with resolver error (soft-fail)" ,
217+ client : elbV1ClientWithResources ,
218+ resolver : func (t * testing.T ) hostResolver {
219+ t .Helper ()
220+ m := newMockHostResolver (t )
221+ m .EXPECT ().LookupHost (mock .Anything , mock .Anything ).Return (nil , errors .New ("dns timeout" ))
222+ return m
223+ },
220224 regions : onlyDefaultRegion ,
221225 expectedResults : 1 ,
222226 checkResult : func (t * testing.T , got []awslib.AwsResource ) {
@@ -240,7 +244,7 @@ func TestProvider_DescribeAllLoadBalancers(t *testing.T) {
240244 log : testhelper .NewLogger (t ),
241245 clients : clients ,
242246 client : client ,
243- resolver : tt .resolver ,
247+ resolver : tt .resolver ( t ) ,
244248 }
245249 got , err := p .DescribeAllLoadBalancers (t .Context ())
246250 if tt .wantErr {
0 commit comments