Skip to content

Commit 6bf166a

Browse files
authored
tests: fix body matcher fields comparison (#1783)
* tests: fix body matcher fields comparison * add custom fields comparison * fix container token expires at * add another format for string compare * fix old cassettes * update old lb cassettes * update old lbip cassettes * fix function token test hardcoded date * add organization to json ignored fields * fix linter * revert change in lbip cassette * add case in string comparison for s3 urls
1 parent ba54f4c commit 6bf166a

12 files changed

+137
-53
lines changed

scaleway/provider_test.go

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var QueryMatcherIgnore = []string{
3939

4040
// BodyMatcherIgnore contains the list of json body keys that should be ignored when matching requests with cassettes
4141
var BodyMatcherIgnore = []string{
42+
"organization", // like organization_id but deprecated
4243
"organization_id",
4344
"project_id",
4445
"project", // like project_id but should be deprecated
@@ -71,6 +72,19 @@ func getTestFilePath(t *testing.T, suffix string) string {
7172
return filepath.Join(".", "testdata", fileName)
7273
}
7374

75+
func compareJSONFields(expected, actualI interface{}) bool {
76+
switch actual := actualI.(type) {
77+
case string:
78+
if _, isString := expected.(string); !isString {
79+
return false
80+
}
81+
return compareJSONFieldsStrings(expected.(string), actual)
82+
default:
83+
// Consider equality when not handled
84+
return true
85+
}
86+
}
87+
7488
// compareJSONBodies compare two given maps that represent json bodies
7589
// returns true if both json are equivalent
7690
func compareJSONBodies(expected, actual map[string]interface{}) bool {
@@ -84,10 +98,8 @@ func compareJSONBodies(expected, actual map[string]interface{}) bool {
8498
// We do not want to generate new cassettes for each new features
8599
continue
86100
}
87-
if actualValue, isStringer := actual[key].(fmt.Stringer); isStringer {
88-
if actualValue.String() != expectedValue.(fmt.Stringer).String() {
89-
return false
90-
}
101+
if !compareJSONFields(expectedValue, actual[key]) {
102+
return false
91103
}
92104
}
93105

@@ -104,32 +116,32 @@ func compareJSONBodies(expected, actual map[string]interface{}) bool {
104116
}
105117

106118
// cassetteMatcher is a custom matcher that will juste check equivalence of request bodies
107-
func cassetteBodyMatcher(actual *http.Request, expected cassette.Request) bool {
108-
if actual.Body == nil || actual.ContentLength == 0 {
109-
if expected.Body == "" {
119+
func cassetteBodyMatcher(actualRequest *http.Request, cassetteRequest cassette.Request) bool {
120+
if actualRequest.Body == nil || actualRequest.ContentLength == 0 {
121+
if cassetteRequest.Body == "" {
110122
return true // Body match if both are empty
111-
} else if _, isFile := actual.Body.(*os.File); isFile {
123+
} else if _, isFile := actualRequest.Body.(*os.File); isFile {
112124
return true // Body match if request is sending a file, maybe do more check here
113125
}
114126
return false
115127
}
116128

117-
actualBody, err := actual.GetBody()
129+
actualBody, err := actualRequest.GetBody()
118130
if err != nil {
119-
panic(fmt.Errorf("cassette body matcher: failed to copy actual body: %w", err)) // lintignore: R009
131+
panic(fmt.Errorf("cassette body matcher: failed to copy actualRequest body: %w", err)) // lintignore: R009
120132
}
121133
actualRawBody, err := io.ReadAll(actualBody)
122134
if err != nil {
123-
panic(fmt.Errorf("cassette body matcher: failed to read actual body: %w", err)) // lintignore: R009
135+
panic(fmt.Errorf("cassette body matcher: failed to read actualRequest body: %w", err)) // lintignore: R009
124136
}
125137

126138
// Try to match raw bodies if they are not JSON (ex: cloud-init config)
127-
if string(actualRawBody) == expected.Body {
139+
if string(actualRawBody) == cassetteRequest.Body {
128140
return true
129141
}
130142

131143
actualJSON := make(map[string]interface{})
132-
expectedJSON := make(map[string]interface{})
144+
cassetteJSON := make(map[string]interface{})
133145

134146
err = xml.Unmarshal(actualRawBody, new(interface{}))
135147
if err == nil {
@@ -142,18 +154,18 @@ func cassetteBodyMatcher(actual *http.Request, expected cassette.Request) bool {
142154
panic(fmt.Errorf("cassette body matcher: failed to parse json body: %w", err)) // lintignore: R009
143155
}
144156

145-
err = json.Unmarshal([]byte(expected.Body), &expectedJSON)
157+
err = json.Unmarshal([]byte(cassetteRequest.Body), &cassetteJSON)
146158
if err != nil {
147159
panic(fmt.Errorf("cassette body matcher: failed to parse cassette json body: %w", err)) // lintignore: R009
148160
}
149161

150162
// Remove keys that should be ignored during compare
151163
for _, key := range BodyMatcherIgnore {
152164
delete(actualJSON, key)
153-
delete(expectedJSON, key)
165+
delete(cassetteJSON, key)
154166
}
155167

156-
return compareJSONBodies(expectedJSON, actualJSON)
168+
return compareJSONBodies(cassetteJSON, actualJSON)
157169
}
158170

159171
// cassetteMatcher is a custom matcher that check equivalence of a played request against a recorded one

scaleway/provider_test_helpers.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package scaleway
2+
3+
import (
4+
"strconv"
5+
"strings"
6+
)
7+
8+
// Test Generated name has format: "{prefix}-{generated_number}
9+
// example: test-acc-scaleway-project-3723338038624371236
10+
func extractTestGeneratedNamePrefix(name string) string {
11+
// {prefix}-{generated}
12+
// ^
13+
dashIndex := strings.LastIndex(name, "-")
14+
15+
generated := name[dashIndex+1:]
16+
_, generatedToIntErr := strconv.ParseInt(generated, 10, 64)
17+
18+
if dashIndex == -1 || generatedToIntErr != nil {
19+
// some are only {name}
20+
return name
21+
}
22+
23+
// {prefix}
24+
return name[:dashIndex]
25+
}
26+
27+
// Generated names have format: "tf-{prefix}-{generated1}-{generated2}"
28+
// example: tf-sg-gifted-yonath
29+
func extractGeneratedNamePrefix(name string) string {
30+
if strings.Count(name, "-") < 3 {
31+
return name
32+
}
33+
// tf-{prefix}-gifted-yonath
34+
name = strings.TrimPrefix(name, "tf-")
35+
36+
// {prefix}-gifted-yonath
37+
// ^
38+
dashIndex := strings.LastIndex(name, "-")
39+
name = name[:dashIndex]
40+
// {prefix}-gifted
41+
// ^
42+
dashIndex = strings.LastIndex(name, "-")
43+
name = name[:dashIndex]
44+
return name
45+
}
46+
47+
// compareJSONFieldsStrings compare two strings from request JSON bodies
48+
// has special case when string are terraform generated names
49+
func compareJSONFieldsStrings(expected, actual string) bool {
50+
expectedHandled := expected
51+
actualHandled := actual
52+
53+
// Remove s3 url suffix to allow comparison
54+
if strings.HasSuffix(actual, ".s3-website.fr-par.scw.cloud") {
55+
actual = strings.TrimSuffix(actual, ".s3-website.fr-par.scw.cloud")
56+
expected = strings.TrimSuffix(expected, ".s3-website.fr-par.scw.cloud")
57+
}
58+
59+
// Try to parse test generated name
60+
if strings.Contains(actual, "-") {
61+
expectedHandled = extractTestGeneratedNamePrefix(expected)
62+
actualHandled = extractTestGeneratedNamePrefix(actual)
63+
}
64+
65+
// Try provider generated name
66+
if actualHandled == actual && strings.HasPrefix(actual, "tf-") {
67+
expectedHandled = extractGeneratedNamePrefix(expected)
68+
actualHandled = extractGeneratedNamePrefix(actual)
69+
}
70+
71+
return expectedHandled == actualHandled
72+
}

scaleway/resource_container_token_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestAccScalewayContainerToken_Basic(t *testing.T) {
1515
defer tt.Cleanup()
1616
expiresAt := time.Now().Add(time.Hour * 24).Format(time.RFC3339)
1717
if !*UpdateCassettes {
18-
expiresAt = "2023-01-05T13:12:46Z"
18+
expiresAt = "2023-01-05T14:12:46+01:00"
1919
}
2020

2121
resource.ParallelTest(t, resource.TestCase{

scaleway/resource_function_token_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestAccScalewayFunctionToken_Basic(t *testing.T) {
1515
defer tt.Cleanup()
1616
expiresAt := time.Now().Add(time.Hour * 24).Format(time.RFC3339)
1717
if !*UpdateCassettes {
18-
expiresAt = "2023-01-05T12:53:11Z"
18+
expiresAt = "2023-01-05T13:53:11+01:00"
1919
}
2020

2121
resource.ParallelTest(t, resource.TestCase{

scaleway/testdata/data-source-lb-basic.cassette.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ interactions:
7070
code: 200
7171
duration: ""
7272
- request:
73-
body: '{"project_id":"951df375-e094-4d26-97c1-ba548eeb9c42","name":"data-test-lb","description":"","ip_id":"8232ffa9-9180-4d1f-9aed-fb95167b6063","tags":null,"type":"LB-S","ssl_compatibility_level":"ssl_compatibility_level_unknown"}'
73+
body: '{"project_id":"951df375-e094-4d26-97c1-ba548eeb9c42","name":"data-test-lb","description":"","ip_id":"8232ffa9-9180-4d1f-9aed-fb95167b6063","tags":null,"type":"LB-S","ssl_compatibility_level":"ssl_compatibility_level_intermediate"}'
7474
form: {}
7575
headers:
7676
Content-Type:

scaleway/testdata/data-source-lb-certificate-basic.cassette.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ interactions:
7070
code: 200
7171
duration: ""
7272
- request:
73-
body: '{"project_id":"951df375-e094-4d26-97c1-ba548eeb9c42","name":"data-test-lb-cert","description":"","ip_id":"8232ffa9-9180-4d1f-9aed-fb95167b6063","tags":null,"type":"LB-S","ssl_compatibility_level":"ssl_compatibility_level_unknown"}'
73+
body: '{"project_id":"951df375-e094-4d26-97c1-ba548eeb9c42","name":"data-test-lb-cert","description":"","ip_id":"8232ffa9-9180-4d1f-9aed-fb95167b6063","tags":null,"type":"LB-S","ssl_compatibility_level":"ssl_compatibility_level_intermediate"}'
7474
form: {}
7575
headers:
7676
Content-Type:

scaleway/testdata/function-namespace-no-name.cassette.yaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
version: 1
33
interactions:
44
- request:
5-
body: '{"name":"tf-func--magical-bose","environment_variables":{},"project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","description":null,"secret_environment_variables":null}'
5+
body: '{"name":"tf-func-magical-bose","environment_variables":{},"project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","description":null,"secret_environment_variables":null}'
66
form: {}
77
headers:
88
Content-Type:
@@ -13,7 +13,7 @@ interactions:
1313
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces
1414
method: POST
1515
response:
16-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"pending","registry_namespace_id":"","error_message":null,"registry_endpoint":"","description":"","secret_environment_variables":[],"region":"fr-par"}'
16+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"pending","registry_namespace_id":"","error_message":null,"registry_endpoint":"","description":"","secret_environment_variables":[],"region":"fr-par"}'
1717
headers:
1818
Content-Length:
1919
- "371"
@@ -46,7 +46,7 @@ interactions:
4646
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
4747
method: GET
4848
response:
49-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"pending","registry_namespace_id":"","error_message":null,"registry_endpoint":"","description":"","secret_environment_variables":[],"region":"fr-par"}'
49+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"pending","registry_namespace_id":"","error_message":null,"registry_endpoint":"","description":"","secret_environment_variables":[],"region":"fr-par"}'
5050
headers:
5151
Content-Length:
5252
- "371"
@@ -79,7 +79,7 @@ interactions:
7979
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
8080
method: GET
8181
response:
82-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"pending","registry_namespace_id":"","error_message":null,"registry_endpoint":"","description":"","secret_environment_variables":[],"region":"fr-par"}'
82+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"pending","registry_namespace_id":"","error_message":null,"registry_endpoint":"","description":"","secret_environment_variables":[],"region":"fr-par"}'
8383
headers:
8484
Content-Length:
8585
- "371"
@@ -112,7 +112,7 @@ interactions:
112112
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
113113
method: GET
114114
response:
115-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
115+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
116116
headers:
117117
Content-Length:
118118
- "457"
@@ -145,7 +145,7 @@ interactions:
145145
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
146146
method: GET
147147
response:
148-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
148+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
149149
headers:
150150
Content-Length:
151151
- "457"
@@ -178,7 +178,7 @@ interactions:
178178
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
179179
method: GET
180180
response:
181-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
181+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
182182
headers:
183183
Content-Length:
184184
- "457"
@@ -211,7 +211,7 @@ interactions:
211211
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
212212
method: GET
213213
response:
214-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
214+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
215215
headers:
216216
Content-Length:
217217
- "457"
@@ -244,7 +244,7 @@ interactions:
244244
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
245245
method: GET
246246
response:
247-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
247+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"ready","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
248248
headers:
249249
Content-Length:
250250
- "457"
@@ -277,7 +277,7 @@ interactions:
277277
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
278278
method: DELETE
279279
response:
280-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"deleting","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
280+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"deleting","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
281281
headers:
282282
Content-Length:
283283
- "460"
@@ -310,7 +310,7 @@ interactions:
310310
url: https://api.scaleway.com/functions/v1beta1/regions/fr-par/namespaces/586ce2e0-a5db-47d6-96e0-762fc6f997b8
311311
method: GET
312312
response:
313-
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func--magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"deleting","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
313+
body: '{"id":"586ce2e0-a5db-47d6-96e0-762fc6f997b8","name":"tf-func-magical-bose","environment_variables":{},"organization_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","project_id":"ee7bd9e1-9cbd-4724-b2f4-19e50f3cf38b","status":"deleting","registry_namespace_id":"ba6deee9-18f7-4e16-955d-e6b715f658d9","error_message":null,"registry_endpoint":"rg.fr-par.scw.cloud/funcscwtffuncmagicalboseorcajkb8","description":"","secret_environment_variables":[],"region":"fr-par"}'
314314
headers:
315315
Content-Length:
316316
- "460"

0 commit comments

Comments
 (0)