Skip to content

Commit 52c8b79

Browse files
committed
wip
1 parent 5f7683f commit 52c8b79

File tree

1 file changed

+37
-29
lines changed

1 file changed

+37
-29
lines changed

internal/acctest/compare.go

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,45 @@ import (
77
"strings"
88
)
99

10+
// compareJSONBodies compare two given maps that represent json bodies
11+
// returns true if both json are equivalent
12+
func compareJSONBodies(request, cassette map[string]interface{}) bool {
13+
for key, requestValue := range request {
14+
cassetteValue, ok := cassette[key]
15+
if !ok {
16+
// Actual request may contain a field that does not exist in cassette
17+
// New fields can appear in requests with new api features
18+
// We do not want to generate new cassettes for each new features
19+
continue
20+
}
21+
22+
if reflect.TypeOf(cassetteValue) != reflect.TypeOf(requestValue) {
23+
return false
24+
}
25+
26+
if !compareJSONFields(requestValue, cassetteValue) {
27+
return false
28+
}
29+
}
30+
// TODO: record back ipam/TestAccIPAMIPReverseDNS_Basic
31+
//for key, cassetteValue := range cassette {
32+
// if _, ok := request[key]; !ok && cassetteValue != nil {
33+
// // Fails match if cassettes contains a field not in actual requests
34+
// // Fields should not disappear from requests unless a sdk breaking change
35+
// // We ignore if field is nil in cassette as it could be an old deprecated and unused field
36+
// return false
37+
// }
38+
//}
39+
40+
return true
41+
}
42+
1043
// compareFormBodies compare two given url.Values
1144
// returns true if both url.Values are equivalent
1245
func compareFormBodies(request, cassette url.Values) bool {
1346
// Check for each key in actual requests
1447
// Compare its value to cassette content if marshal-able to string
15-
for key := range cassette {
48+
for key := range request {
1649
requestValue, exists := request[key]
1750
if !exists {
1851
// Actual request may contain a field that does not exist in cassette
@@ -26,9 +59,8 @@ func compareFormBodies(request, cassette url.Values) bool {
2659
}
2760
}
2861

29-
for key := range request {
30-
_, exists := cassette[key]
31-
if !exists && request[key] != nil {
62+
for key, cassetteValue := range cassette {
63+
if _, exists := request[key]; !exists && cassetteValue != nil {
3264
// Fails match if cassettes contains a field not in actual requests
3365
// Fields should not disappear from requests unless a sdk breaking change
3466
// We ignore if field is nil in cassette as it could be an old deprecated and unused field
@@ -46,8 +78,8 @@ func compareJSONFieldsStrings(expected, actual string) bool {
4678
return true
4779
}
4880

49-
snsPrefix := "test-mnq-sns-topic-basic"
5081
// Action=DeleteTopic&TopicArn=arn%3Ascw%3Asns%3Afr-par%3Aproject-1a080a81-67b6-476d-80b4-f3bb9184e318%3Atest-mnq-sns-topic-basic20250603151943185500000004&Version=2010-03-31
82+
snsPrefix := "test-mnq-sns-topic-basic"
5183
if strings.HasPrefix(actual, snsPrefix) && strings.HasPrefix(expected, snsPrefix) {
5284
return true
5385
}
@@ -164,27 +196,3 @@ func compareJSONFields(requestValue, cassetteValue interface{}) bool {
164196
return reflect.DeepEqual(requestValue, cassetteValue)
165197
}
166198
}
167-
168-
// compareJSONBodies compare two given maps that represent json bodies
169-
// returns true if both json are equivalent
170-
func compareJSONBodies(request, cassette map[string]interface{}) bool {
171-
for key, requestValue := range request {
172-
cassetteValue, ok := cassette[key]
173-
if !ok {
174-
// Actual request may contain a field that does not exist in cassette
175-
// New fields can appear in requests with new api features
176-
// We do not want to generate new cassettes for each new features
177-
continue
178-
}
179-
180-
if reflect.TypeOf(cassetteValue) != reflect.TypeOf(requestValue) {
181-
return false
182-
}
183-
184-
if !compareJSONFields(requestValue, cassetteValue) {
185-
return false
186-
}
187-
}
188-
189-
return true
190-
}

0 commit comments

Comments
 (0)