@@ -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
1245func 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