From cd8cc00d9ed207c885400647084743df99e614b1 Mon Sep 17 00:00:00 2001 From: Vinh Nguyen Date: Tue, 19 Nov 2024 22:12:27 +0800 Subject: [PATCH] test: add soft error spec --- provider/aws/aws_test.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/provider/aws/aws_test.go b/provider/aws/aws_test.go index 806ed1d5c..30bbe2ca0 100644 --- a/provider/aws/aws_test.go +++ b/provider/aws/aws_test.go @@ -81,6 +81,10 @@ func NewRoute53APIStub(t *testing.T) *Route53APIStub { } func (r *Route53APIStub) ListResourceRecordSets(ctx context.Context, input *route53.ListResourceRecordSetsInput, optFns ...func(options *route53.Options)) (*route53.ListResourceRecordSetsOutput, error) { + if r.m.isMocked("ListResourceRecordSets", input) { + return r.m.ListResourceRecordSets(ctx, input, optFns...) + } + output := &route53.ListResourceRecordSetsOutput{} // TODO: Support optional input args. require.NotNil(r.t, input.MaxItems) assert.EqualValues(r.t, route53PageSize, *input.MaxItems) @@ -240,6 +244,14 @@ type dynamicMock struct { mock.Mock } +func (m *dynamicMock) ListResourceRecordSets(ctx context.Context, input *route53.ListResourceRecordSetsInput, optFns ...func(options *route53.Options)) (*route53.ListResourceRecordSetsOutput, error) { + args := m.Called(input) + if args.Get(0) != nil { + return args.Get(0).(*route53.ListResourceRecordSetsOutput), args.Error(1) + } + return nil, args.Error(1) +} + func (m *dynamicMock) ChangeResourceRecordSets(input *route53.ChangeResourceRecordSetsInput) (*route53.ChangeResourceRecordSetsOutput, error) { args := m.Called(input) if args.Get(0) != nil { @@ -518,6 +530,22 @@ func TestAWSRecords(t *testing.T) { }) } +func TestAWSRecordsSoftError(t *testing.T) { + pvd, subClient := newAWSProvider(t, endpoint.NewDomainFilter([]string{"ext-dns-test-2.teapot.zalan.do."}), provider.NewZoneIDFilter([]string{}), provider.NewZoneTypeFilter(""), false, false, []route53types.ResourceRecordSet{ + { + Name: aws.String("list-test.zone-1.ext-dns-test-2.teapot.zalan.do."), + Type: route53types.RRTypeA, + TTL: aws.Int64(recordTTL), + ResourceRecords: []route53types.ResourceRecord{{Value: aws.String("1.2.3.4")}}, + }, + }) + + subClient.MockMethod("ListResourceRecordSets", mock.Anything).Return(nil, fmt.Errorf("Mock route53 failure")) + _, err := pvd.Records(context.Background()) + require.Error(t, err) + require.ErrorIs(t, err, provider.SoftError) +} + func TestAWSAdjustEndpoints(t *testing.T) { provider, _ := newAWSProvider(t, endpoint.NewDomainFilter([]string{"ext-dns-test-2.teapot.zalan.do."}), provider.NewZoneIDFilter([]string{}), provider.NewZoneTypeFilter(""), defaultEvaluateTargetHealth, false, nil)