Skip to content

Commit 059d060

Browse files
committed
fix(mnq): fix test
1 parent 47161f8 commit 059d060

23 files changed

+21574
-292
lines changed

internal/services/mnq/helpers_mnq.go

+9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strconv"
77
"strings"
88

9+
"github.com/aws/smithy-go"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1011
mnq "github.com/scaleway/scaleway-sdk-go/api/mnq/v1beta1"
1112
"github.com/scaleway/scaleway-sdk-go/scw"
@@ -273,3 +274,11 @@ func awsAttributesToResourceData(attributes map[string]string, resourceSchemas m
273274

274275
return values, nil
275276
}
277+
278+
func IsAWSErrorCode(err error, code string) bool {
279+
var apiErr *smithy.GenericAPIError
280+
if errors.As(err, &apiErr) && apiErr.Code == code {
281+
return true
282+
}
283+
return false
284+
}

internal/services/mnq/helpers_mnq_queue.go

+16-16
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"log"
78
"net/http"
89
"regexp"
910
"strings"
1011
"time"
1112

1213
"github.com/aws/aws-sdk-go-v2/config"
13-
awsType "github.com/aws/aws-sdk-go-v2/service/sqs/types"
14-
1514
"github.com/aws/aws-sdk-go-v2/credentials"
1615
"github.com/aws/aws-sdk-go-v2/service/sqs"
16+
awstype "github.com/aws/aws-sdk-go-v2/service/sqs/types"
1717
smithylogging "github.com/aws/smithy-go/logging"
1818
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
1919
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
@@ -39,11 +39,11 @@ type httpDebugLogger struct{}
3939

4040
func (h *httpDebugLogger) Logf(classification smithylogging.Classification, format string, v ...interface{}) {
4141
if classification == smithylogging.Debug {
42-
fmt.Printf("[HTTP DEBUG] %s\n", fmt.Sprintf(format, v...))
42+
log.Printf("[HTTP DEBUG] %s", fmt.Sprintf(format, v...))
4343
}
4444
}
4545

46-
func SQSClientWithRegion(d *schema.ResourceData, m interface{}) (*sqs.Client, scw.Region, error) {
46+
func SQSClientWithRegion(ctx context.Context, d *schema.ResourceData, m interface{}) (*sqs.Client, scw.Region, error) {
4747
region, err := meta.ExtractRegion(d, m)
4848
if err != nil {
4949
return nil, "", err
@@ -53,18 +53,18 @@ func SQSClientWithRegion(d *schema.ResourceData, m interface{}) (*sqs.Client, sc
5353
accessKey := d.Get("access_key").(string)
5454
secretKey := d.Get("secret_key").(string)
5555

56-
sqsClient, err := NewSQSClient(meta.ExtractHTTPClient(m), region.String(), endpoint, accessKey, secretKey)
56+
sqsClient, err := NewSQSClient(ctx, meta.ExtractHTTPClient(m), region.String(), endpoint, accessKey, secretKey)
5757
if err != nil {
5858
return nil, "", err
5959
}
6060

6161
return sqsClient, region, err
6262
}
6363

64-
func NewSQSClient(httpClient *http.Client, region string, endpoint string, accessKey string, secretKey string) (*sqs.Client, error) {
64+
func NewSQSClient(ctx context.Context, httpClient *http.Client, region string, endpoint string, accessKey string, secretKey string) (*sqs.Client, error) {
6565
customEndpoint := strings.ReplaceAll(endpoint, "{region}", region)
6666
customConfig, err := config.LoadDefaultConfig(
67-
context.TODO(),
67+
ctx,
6868
config.WithRegion(region),
6969
config.WithBaseEndpoint(customEndpoint),
7070
config.WithHTTPClient(httpClient),
@@ -147,20 +147,20 @@ func splitNATSJWTAndSeed(credentials string) (string, string, error) {
147147
const SQSFIFOQueueNameSuffix = ".fifo"
148148

149149
var SQSAttributesToResourceMap = map[string]string{
150-
string(awsType.QueueAttributeNameMaximumMessageSize): "message_max_size",
151-
string(awsType.QueueAttributeNameMessageRetentionPeriod): "message_max_age",
152-
string(awsType.QueueAttributeNameFifoQueue): "fifo_queue",
153-
string(awsType.QueueAttributeNameContentBasedDeduplication): "content_based_deduplication",
154-
string(awsType.QueueAttributeNameReceiveMessageWaitTimeSeconds): "receive_wait_time_seconds",
155-
string(awsType.QueueAttributeNameVisibilityTimeout): "visibility_timeout_seconds",
150+
string(awstype.QueueAttributeNameMaximumMessageSize): "message_max_size",
151+
string(awstype.QueueAttributeNameMessageRetentionPeriod): "message_max_age",
152+
string(awstype.QueueAttributeNameFifoQueue): "fifo_queue",
153+
string(awstype.QueueAttributeNameContentBasedDeduplication): "content_based_deduplication",
154+
string(awstype.QueueAttributeNameReceiveMessageWaitTimeSeconds): "receive_wait_time_seconds",
155+
string(awstype.QueueAttributeNameVisibilityTimeout): "visibility_timeout_seconds",
156156
}
157157

158158
// Returns all managed SQS attribute names
159-
func getSQSAttributeNames() []awsType.QueueAttributeName {
160-
attributeNames := make([]awsType.QueueAttributeName, 0, len(SQSAttributesToResourceMap))
159+
func getSQSAttributeNames() []awstype.QueueAttributeName {
160+
attributeNames := make([]awstype.QueueAttributeName, 0, len(SQSAttributesToResourceMap))
161161

162162
for attribute := range SQSAttributesToResourceMap {
163-
attributeNames = append(attributeNames, awsType.QueueAttributeName(attribute))
163+
attributeNames = append(attributeNames, awstype.QueueAttributeName(attribute))
164164
}
165165

166166
return attributeNames

internal/services/mnq/helpers_mnq_sns.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"github.com/scaleway/terraform-provider-scaleway/v2/internal/types"
2020
)
2121

22-
func SNSClientWithRegion(d *schema.ResourceData, m interface{}) (*sns.Client, scw.Region, error) {
22+
func SNSClientWithRegion(ctx context.Context, m interface{}, d *schema.ResourceData) (*sns.Client, scw.Region, error) {
2323
region, err := meta.ExtractRegion(d, m)
2424
if err != nil {
2525
return nil, "", err
@@ -29,15 +29,15 @@ func SNSClientWithRegion(d *schema.ResourceData, m interface{}) (*sns.Client, sc
2929
accessKey := d.Get("access_key").(string)
3030
secretKey := d.Get("secret_key").(string)
3131

32-
snsClient, err := NewSNSClient(meta.ExtractHTTPClient(m), region.String(), endpoint, accessKey, secretKey)
32+
snsClient, err := NewSNSClient(ctx, meta.ExtractHTTPClient(m), region.String(), endpoint, accessKey, secretKey)
3333
if err != nil {
3434
return nil, "", err
3535
}
3636

3737
return snsClient, region, err
3838
}
3939

40-
func SNSClientWithRegionFromID(d *schema.ResourceData, m interface{}, regionalID string) (*sns.Client, scw.Region, error) {
40+
func SNSClientWithRegionFromID(ctx context.Context, d *schema.ResourceData, m interface{}, regionalID string) (*sns.Client, scw.Region, error) {
4141
tab := strings.SplitN(regionalID, "/", 2)
4242
if len(tab) != 2 {
4343
return nil, "", errors.New("invalid ID format, expected parts separated by slashes")
@@ -51,18 +51,19 @@ func SNSClientWithRegionFromID(d *schema.ResourceData, m interface{}, regionalID
5151
accessKey := d.Get("access_key").(string)
5252
secretKey := d.Get("secret_key").(string)
5353

54-
snsClient, err := NewSNSClient(meta.ExtractHTTPClient(m), region.String(), endpoint, accessKey, secretKey)
54+
snsClient, err := NewSNSClient(ctx, meta.ExtractHTTPClient(m), region.String(), endpoint, accessKey, secretKey)
5555
if err != nil {
5656
return nil, "", err
5757
}
5858

5959
return snsClient, region, err
6060
}
6161

62-
func NewSNSClient(httpClient *http.Client, region string, endpoint string, accessKey string, secretKey string) (*sns.Client, error) {
62+
func NewSNSClient(ctx context.Context, httpClient *http.Client, region string, endpoint string, accessKey string, secretKey string) (*sns.Client, error) {
6363
customEndpoint := strings.ReplaceAll(endpoint, "{region}", region)
6464
customConfig, err := config.LoadDefaultConfig(
65-
context.TODO(),
65+
66+
ctx,
6667
config.WithRegion(region),
6768
config.WithBaseEndpoint(customEndpoint),
6869
config.WithHTTPClient(httpClient),

internal/services/mnq/sns_topic.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func ResourceMNQSNSTopicCreate(ctx context.Context, d *schema.ResourceData, m in
107107
return diag.FromErr(fmt.Errorf("expected sns to be enabled for given project, go %q", snsInfo.Status))
108108
}
109109

110-
snsClient, _, err := SNSClientWithRegion(d, m)
110+
snsClient, _, err := SNSClientWithRegion(nil, m, d)
111111
if err != nil {
112112
return diag.FromErr(err)
113113
}
@@ -140,7 +140,7 @@ func ResourceMNQSNSTopicCreate(ctx context.Context, d *schema.ResourceData, m in
140140
}
141141

142142
func ResourceMNQSNSTopicRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
143-
snsClient, _, err := SNSClientWithRegion(d, m)
143+
snsClient, _, err := SNSClientWithRegion(nil, m, d)
144144
if err != nil {
145145
return diag.FromErr(err)
146146
}
@@ -173,7 +173,7 @@ func ResourceMNQSNSTopicRead(ctx context.Context, d *schema.ResourceData, m inte
173173
}
174174

175175
func ResourceMNQSNSTopicUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
176-
snsClient, _, err := SNSClientWithRegion(d, m)
176+
snsClient, _, err := SNSClientWithRegion(nil, m, d)
177177
if err != nil {
178178
return diag.FromErr(err)
179179
}
@@ -220,7 +220,7 @@ func ResourceMNQSNSTopicUpdate(ctx context.Context, d *schema.ResourceData, m in
220220
}
221221

222222
func ResourceMNQSNSTopicDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
223-
snsClient, _, err := SNSClientWithRegion(d, m)
223+
snsClient, _, err := SNSClientWithRegion(nil, m, d)
224224
if err != nil {
225225
return diag.FromErr(err)
226226
}

internal/services/mnq/sns_topic_subscription.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func ResourceMNQSNSTopicSubscriptionCreate(ctx context.Context, d *schema.Resour
108108
return diag.FromErr(fmt.Errorf("expected sns to be enabled for given project, go %q", snsInfo.Status))
109109
}
110110

111-
snsClient, _, err := SNSClientWithRegion(d, m)
111+
snsClient, _, err := SNSClientWithRegion(nil, m, d)
112112
if err != nil {
113113
return diag.FromErr(err)
114114
}
@@ -164,7 +164,7 @@ func ResourceMNQSNSTopicSubscriptionCreate(ctx context.Context, d *schema.Resour
164164
}
165165

166166
func ResourceMNQSNSTopicSubscriptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
167-
snsClient, region, err := SNSClientWithRegionFromID(d, m, d.Id())
167+
snsClient, region, err := SNSClientWithRegionFromID(ctx, d, m, d.Id())
168168
if err != nil {
169169
return diag.FromErr(err)
170170
}
@@ -197,7 +197,7 @@ func ResourceMNQSNSTopicSubscriptionRead(ctx context.Context, d *schema.Resource
197197
}
198198

199199
func ResourceMNQSNSTopicSubscriptionDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
200-
snsClient, _, err := SNSClientWithRegionFromID(d, m, d.Id())
200+
snsClient, _, err := SNSClientWithRegionFromID(ctx, d, m, d.Id())
201201
if err != nil {
202202
return diag.FromErr(err)
203203
}

internal/services/mnq/sns_topic_subscription_test.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package mnq_test
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"testing"
78

89
"github.com/aws/aws-sdk-go-v2/service/sns"
9-
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
10+
"github.com/aws/smithy-go"
1011
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1112
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1213
"github.com/scaleway/scaleway-sdk-go/scw"
@@ -95,7 +96,7 @@ func isSNSTopicSubscriptionPresent(ctx context.Context, tt *acctest.TestTools, n
9596
return fmt.Errorf("failed to parse id: %w", err)
9697
}
9798

98-
snsClient, err := mnq.NewSNSClient(tt.Meta.HTTPClient(), arn.Region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
99+
snsClient, err := mnq.NewSNSClient(ctx, tt.Meta.HTTPClient(), arn.Region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
99100
if err != nil {
100101
return err
101102
}
@@ -123,7 +124,7 @@ func isSNSTopicSubscriptionDestroyed(ctx context.Context, tt *acctest.TestTools)
123124
return fmt.Errorf("failed to parse id: %w", err)
124125
}
125126

126-
snsClient, err := mnq.NewSNSClient(tt.Meta.HTTPClient(), arn.Region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
127+
snsClient, err := mnq.NewSNSClient(ctx, tt.Meta.HTTPClient(), arn.Region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
127128
if err != nil {
128129
return err
129130
}
@@ -132,8 +133,11 @@ func isSNSTopicSubscriptionDestroyed(ctx context.Context, tt *acctest.TestTools)
132133
SubscriptionArn: scw.StringPtr(arn.String()),
133134
})
134135
if err != nil {
135-
if tfawserr.ErrCodeEquals(err, "AccessDeniedException") {
136-
return nil
136+
var apiErr *smithy.GenericAPIError
137+
if errors.As(err, &apiErr) {
138+
if apiErr.Code == "AccessDeniedException" {
139+
return nil
140+
}
137141
}
138142
return err
139143
}

internal/services/mnq/sns_topic_test.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"strings"
88
"testing"
99

10-
sns "github.com/aws/aws-sdk-go-v2/service/sns"
11-
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
10+
"github.com/aws/aws-sdk-go-v2/service/sns"
11+
"github.com/aws/smithy-go"
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1313
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1414
"github.com/scaleway/scaleway-sdk-go/scw"
@@ -154,7 +154,7 @@ func isSNSTopicPresent(ctx context.Context, tt *acctest.TestTools, n string) res
154154
return fmt.Errorf("failed to parse id: %w", err)
155155
}
156156

157-
snsClient, err := mnq.NewSNSClient(tt.Meta.HTTPClient(), region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
157+
snsClient, err := mnq.NewSNSClient(ctx, tt.Meta.HTTPClient(), region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
158158
if err != nil {
159159
return err
160160
}
@@ -182,7 +182,7 @@ func isSNSTopicDestroyed(ctx context.Context, tt *acctest.TestTools) resource.Te
182182
return fmt.Errorf("failed to parse id: %w", err)
183183
}
184184

185-
snsClient, err := mnq.NewSNSClient(tt.Meta.HTTPClient(), region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
185+
snsClient, err := mnq.NewSNSClient(ctx, tt.Meta.HTTPClient(), region.String(), rs.Primary.Attributes["sns_endpoint"], rs.Primary.Attributes["access_key"], rs.Primary.Attributes["secret_key"])
186186
if err != nil {
187187
return err
188188
}
@@ -191,7 +191,9 @@ func isSNSTopicDestroyed(ctx context.Context, tt *acctest.TestTools) resource.Te
191191
TopicArn: scw.StringPtr(mnq.ComposeSNSARN(region, projectID, topicName)),
192192
})
193193
if err != nil {
194-
if tfawserr.ErrCodeEquals(err, "AccessDeniedException") {
194+
var apiErr *smithy.GenericAPIError
195+
if errors.As(err, &apiErr) && apiErr.Code == "AccessDeniedException" {
196+
// L'erreur AccessDenied signifie que la ressource est supprimée ou inaccessible
195197
return nil
196198
}
197199
return err

internal/services/mnq/sqs_queue.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66

77
"github.com/aws/aws-sdk-go-v2/service/sqs"
8-
"github.com/hashicorp/aws-sdk-go-base/v2/tfawserr"
98
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1110
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -152,7 +151,7 @@ func ResourceMNQSQSQueueCreate(ctx context.Context, d *schema.ResourceData, m in
152151
return diag.FromErr(fmt.Errorf("expected sqs to be enabled for given project, got: %q", sqsInfo.Status))
153152
}
154153

155-
sqsClient, _, err := SQSClientWithRegion(d, m)
154+
sqsClient, _, err := SQSClientWithRegion(ctx, d, m)
156155
if err != nil {
157156
return diag.FromErr(err)
158157
}
@@ -187,7 +186,7 @@ func ResourceMNQSQSQueueCreate(ctx context.Context, d *schema.ResourceData, m in
187186
}
188187

189188
func ResourceMNQSQSQueueRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
190-
sqsClient, _, err := SQSClientWithRegion(d, m)
189+
sqsClient, _, err := SQSClientWithRegion(ctx, d, m)
191190
if err != nil {
192191
return diag.FromErr(err)
193192
}
@@ -236,7 +235,7 @@ func ResourceMNQSQSQueueRead(ctx context.Context, d *schema.ResourceData, m inte
236235
}
237236

238237
func ResourceMNQSQSQueueUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
239-
sqsClient, _, err := SQSClientWithRegion(d, m)
238+
sqsClient, _, err := SQSClientWithRegion(ctx, d, m)
240239
if err != nil {
241240
return diag.FromErr(err)
242241
}
@@ -276,7 +275,7 @@ func ResourceMNQSQSQueueUpdate(ctx context.Context, d *schema.ResourceData, m in
276275
}
277276

278277
func ResourceMNQSQSQueueDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
279-
sqsClient, _, err := SQSClientWithRegion(d, m)
278+
sqsClient, _, err := SQSClientWithRegion(ctx, d, m)
280279
if err != nil {
281280
return diag.FromErr(err)
282281
}
@@ -290,7 +289,7 @@ func ResourceMNQSQSQueueDelete(ctx context.Context, d *schema.ResourceData, m in
290289
QueueName: &queueName,
291290
})
292291
if err != nil {
293-
if tfawserr.ErrCodeEquals(err, "AWS.SimpleQueueService.NonExistentQueue") {
292+
if IsAWSErrorCode(err, "AWS.SimpleQueueService.NonExistentQueue") {
294293
return nil
295294
}
296295

@@ -301,10 +300,9 @@ func ResourceMNQSQSQueueDelete(ctx context.Context, d *schema.ResourceData, m in
301300
QueueUrl: queue.QueueUrl,
302301
})
303302
if err != nil {
304-
if tfawserr.ErrCodeEquals(err, "AWS.SimpleQueueService.NonExistentQueue") {
303+
if IsAWSErrorCode(err, "AWS.SimpleQueueService.NonExistentQueue") {
305304
return nil
306305
}
307-
308306
return diag.Errorf("failed to delete SQS Queue (%s): %s", d.Id(), err)
309307
}
310308

0 commit comments

Comments
 (0)