Skip to content

Commit 4c014f5

Browse files
[aznamespaces] Test cleanup (Azure#23150)
* Reverting code that forced SAS key auth - it works again even if you're part of a lot of groups. * Updated recordings, use new test credential and remove code that was forcing SAS credentials. Fixes Azure#22961
1 parent cc4078d commit 4c014f5

File tree

5 files changed

+49
-93
lines changed

5 files changed

+49
-93
lines changed

sdk/messaging/eventgrid/aznamespaces/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "go",
44
"TagPrefix": "go/messaging/eventgrid/aznamespaces",
5-
"Tag": "go/messaging/eventgrid/aznamespaces_345f27fa59"
5+
"Tag": "go/messaging/eventgrid/aznamespaces_388e203c7a"
66
}

sdk/messaging/eventgrid/aznamespaces/client_test.go

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ import (
2121
)
2222

2323
func TestClients_UsingSASKey(t *testing.T) {
24-
if recording.GetRecordMode() == recording.PlaybackMode {
25-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
26-
}
27-
2824
sender, receiver := newClients(t, true)
2925

3026
ce, err := messaging.NewCloudEvent("source", "eventType", "hello world", nil)
@@ -51,10 +47,6 @@ func TestClients_UsingSASKey(t *testing.T) {
5147
}
5248

5349
func TestFailedAck(t *testing.T) {
54-
if recording.GetRecordMode() == recording.PlaybackMode {
55-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
56-
}
57-
5850
ce, err := messaging.NewCloudEvent("TestFailedAck", "world", []byte("ack this one"), &messaging.CloudEventOptions{
5951
DataContentType: to.Ptr("application/octet-stream"),
6052
})
@@ -101,10 +93,6 @@ func TestFailedAck(t *testing.T) {
10193
}
10294

10395
func TestPartialAckFailure(t *testing.T) {
104-
if recording.GetRecordMode() == recording.PlaybackMode {
105-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
106-
}
107-
10896
ce, err := messaging.NewCloudEvent("TestPartialAckFailure", "world", []byte("event one"), &messaging.CloudEventOptions{
10997
DataContentType: to.Ptr("application/octet-stream"),
11098
})
@@ -153,9 +141,6 @@ func TestPartialAckFailure(t *testing.T) {
153141
}
154142

155143
func TestRejectEvents(t *testing.T) {
156-
if recording.GetRecordMode() == recording.PlaybackMode {
157-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
158-
}
159144

160145
ce, err := messaging.NewCloudEvent("TestAbandon", "world", []byte("event one"), &messaging.CloudEventOptions{
161146
DataContentType: to.Ptr("application/octet-stream"),
@@ -197,10 +182,6 @@ func TestRejectEvents(t *testing.T) {
197182
}
198183

199184
func TestReleaseEvents(t *testing.T) {
200-
if recording.GetRecordMode() == recording.PlaybackMode {
201-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
202-
}
203-
204185
ce, err := messaging.NewCloudEvent("TestRelease", "world", []byte("event one"), &messaging.CloudEventOptions{
205186
DataContentType: to.Ptr("application/octet-stream"),
206187
})
@@ -240,10 +221,6 @@ func TestReleaseEvents(t *testing.T) {
240221
}
241222

242223
func TestPublishBytes(t *testing.T) {
243-
if recording.GetRecordMode() == recording.PlaybackMode {
244-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
245-
}
246-
247224
ce, err := messaging.NewCloudEvent("TestPublishBytes", "eventType", []byte("TestPublishBytes"), &messaging.CloudEventOptions{
248225
DataContentType: to.Ptr("application/octet-stream"),
249226
})
@@ -267,9 +244,6 @@ func TestPublishBytes(t *testing.T) {
267244
}
268245

269246
func TestSendEventWithStringPayload(t *testing.T) {
270-
if recording.GetRecordMode() == recording.PlaybackMode {
271-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
272-
}
273247
sender, receiver := newClients(t, false)
274248

275249
ce, err := messaging.NewCloudEvent("TestPublishString", "eventType", "TestPublishString", &messaging.CloudEventOptions{
@@ -293,9 +267,6 @@ func TestSendEventWithStringPayload(t *testing.T) {
293267
}
294268

295269
func TestSendEventsAndReceiveEvents(t *testing.T) {
296-
if recording.GetRecordMode() == recording.PlaybackMode {
297-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
298-
}
299270
sender, receiver := newClients(t, false)
300271

301272
testData := []struct {
@@ -366,10 +337,6 @@ func TestSendEventsAndReceiveEvents(t *testing.T) {
366337
}
367338

368339
func TestSimpleErrors(t *testing.T) {
369-
if recording.GetRecordMode() == recording.PlaybackMode {
370-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
371-
}
372-
373340
sender, _ := newClients(t, false)
374341

375342
sendResp, err := sender.SendEvents(context.Background(), []*messaging.CloudEvent{
@@ -391,9 +358,6 @@ func TestSimpleErrors(t *testing.T) {
391358
}
392359

393360
func TestRenewEventLocks(t *testing.T) {
394-
if recording.GetRecordMode() == recording.PlaybackMode {
395-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
396-
}
397361
sender, receiver := newClients(t, false)
398362

399363
ce := mustCreateEvent(t, "TestRenewCloudEventLocks", "eventType", "hello world", nil)
@@ -412,9 +376,6 @@ func TestRenewEventLocks(t *testing.T) {
412376
}
413377

414378
func TestReleaseWithDelay(t *testing.T) {
415-
if recording.GetRecordMode() == recording.PlaybackMode {
416-
t.Skip("https://github.com/Azure/azure-sdk-for-go/issues/22869")
417-
}
418379
sender, receiver := newClients(t, false)
419380

420381
ce := mustCreateEvent(t, "TestReleaseWithDelay", "eventType", "hello world", nil)

sdk/messaging/eventgrid/aznamespaces/example_publish_and_receive_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ func Example_publishAndReceiveCloudEvents() {
102102
fmt.Fprintf(os.Stderr, " Body: %#v\n", sampleData) // prints 'Body: &azeventgrid_test.SampleData{Name:"hello"}'
103103
fmt.Fprintf(os.Stderr, " Delivery count: %d\n", eventWithStruct.BrokerProperties.DeliveryCount)
104104

105-
// Disabled: WARNING: Forcing use of SASKey until https://github.com/Azure/azure-sdk-for-go/issues/22961 is resolved
106-
// TempDisabledOutput:
105+
// Output:
107106
}
108107

109108
func sendAndReceiveEvent(sender *aznamespaces.SenderClient, receiver *aznamespaces.ReceiverClient, dataContentType string, payload any) (aznamespaces.ReceiveDetails, error) {

sdk/messaging/eventgrid/aznamespaces/main_test.go

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import (
1212
"os"
1313
"testing"
1414

15-
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1615
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
1716
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
1817
"github.com/Azure/azure-sdk-for-go/sdk/internal/recording"
18+
"github.com/Azure/azure-sdk-for-go/sdk/internal/test/credential"
1919
"github.com/Azure/azure-sdk-for-go/sdk/messaging/eventgrid/aznamespaces"
2020
"github.com/joho/godotenv"
2121
)
@@ -60,26 +60,16 @@ func purgeEvents() {
6060
panic(err)
6161
}
6262

63-
// Disabled: Forcing use of SASKey until https://github.com/Azure/azure-sdk-for-go/issues/22961 is resolved
64-
// cred, err := azidentity.NewDefaultAzureCredential(nil)
63+
cred, err := credential.New(nil)
6564

66-
// if err != nil {
67-
// panic(err)
68-
// }
69-
70-
// receiver, err := aznamespaces.NewReceiverClient(testVars.Endpoint, testVars.Topic, testVars.Subscription, cred, nil)
71-
72-
// if err != nil {
73-
// panic(err)
74-
// }
75-
76-
cred := azcore.NewKeyCredential(testVars.Key)
65+
if err != nil {
66+
panic(err)
67+
}
7768

78-
receiver, err := aznamespaces.NewReceiverClientWithSharedKeyCredential(testVars.Endpoint, testVars.Topic, testVars.Subscription, cred, &aznamespaces.ReceiverClientOptions{
69+
receiver, err := aznamespaces.NewReceiverClient(testVars.Endpoint, testVars.Topic, testVars.Subscription, cred, &aznamespaces.ReceiverClientOptions{
7970
ClientOptions: policy.ClientOptions{
8071
Logging: policy.LogOptions{
8172
IncludeBody: true,
82-
AllowedHeaders: []string{"Authorization"},
8373
AllowedQueryParams: []string{"maxWaitTime", "maxEvents"},
8474
},
8575
},

sdk/messaging/eventgrid/aznamespaces/shared_test.go

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ import (
1818
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1919
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
2020
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
21-
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
2221
"github.com/Azure/azure-sdk-for-go/sdk/internal/recording"
22+
"github.com/Azure/azure-sdk-for-go/sdk/internal/test/credential"
2323
"github.com/Azure/azure-sdk-for-go/sdk/messaging/eventgrid/aznamespaces"
2424
"github.com/stretchr/testify/require"
2525
)
2626

2727
var fakeTestVars = testVars{
2828
Key: "key",
29-
Endpoint: "https://fake.eastus-1.eventgrid.azure.net",
29+
Endpoint: "https://fake.region.eventgrid.azure.net/",
3030
Topic: "topic",
3131
Subscription: "subscription",
3232
}
@@ -106,7 +106,7 @@ func newClientOptions(t *testing.T) azcore.ClientOptions {
106106
}
107107
} else {
108108
options = azcore.ClientOptions{
109-
Transport: newRecordingTransporter(t, tv),
109+
Transport: newRecordingTransporter(t),
110110
}
111111
}
112112

@@ -141,24 +141,19 @@ func newClientOptions(t *testing.T) azcore.ClientOptions {
141141
}
142142

143143
func newClients(t *testing.T, useSASKey bool) (*aznamespaces.SenderClient, *aznamespaces.ReceiverClient) {
144-
if os.Getenv("FORCE_SASKEY") == "true" {
145-
t.Logf("Switching from TokenCredential -> SAS Key because FORCE_SASKEY is true. See https://github.com/Azure/azure-sdk-for-go/issues/22961 for more details")
146-
useSASKey = true
147-
}
144+
options := newClientOptions(t)
148145

149-
return newSenderClient(t, useSASKey), newReceiverClient(t, useSASKey)
146+
return newSenderClient(t, useSASKey, options), newReceiverClient(t, useSASKey, options)
150147
}
151148

152-
func newSenderClient(t *testing.T, useSASKey bool) *aznamespaces.SenderClient {
153-
options := newClientOptions(t)
154-
149+
func newSenderClient(t *testing.T, useSASKey bool, options azcore.ClientOptions) *aznamespaces.SenderClient {
155150
if useSASKey {
156151
client, err := aznamespaces.NewSenderClientWithSharedKeyCredential(tv.Endpoint, tv.Topic, azcore.NewKeyCredential(tv.Key), &aznamespaces.SenderClientOptions{ClientOptions: options})
157152
require.NoError(t, err)
158153
return client
159154
}
160155

161-
cred, err := azidentity.NewDefaultAzureCredential(nil)
156+
cred, err := credential.New(nil)
162157
require.NoError(t, err)
163158

164159
client, err := aznamespaces.NewSenderClient(tv.Endpoint, tv.Topic, cred, &aznamespaces.SenderClientOptions{ClientOptions: options})
@@ -167,16 +162,14 @@ func newSenderClient(t *testing.T, useSASKey bool) *aznamespaces.SenderClient {
167162
return client
168163
}
169164

170-
func newReceiverClient(t *testing.T, useSASKey bool) *aznamespaces.ReceiverClient {
171-
options := newClientOptions(t)
172-
165+
func newReceiverClient(t *testing.T, useSASKey bool, options azcore.ClientOptions) *aznamespaces.ReceiverClient {
173166
if useSASKey {
174167
client, err := aznamespaces.NewReceiverClientWithSharedKeyCredential(tv.Endpoint, tv.Topic, tv.Subscription, azcore.NewKeyCredential(tv.Key), &aznamespaces.ReceiverClientOptions{ClientOptions: options})
175168
require.NoError(t, err)
176169
return client
177170
}
178171

179-
cred, err := azidentity.NewDefaultAzureCredential(nil)
172+
cred, err := credential.New(nil)
180173
require.NoError(t, err)
181174

182175
client, err := aznamespaces.NewReceiverClient(tv.Endpoint, tv.Topic, tv.Subscription, cred, &aznamespaces.ReceiverClientOptions{ClientOptions: options})
@@ -185,26 +178,18 @@ func newReceiverClient(t *testing.T, useSASKey bool) *aznamespaces.ReceiverClien
185178
return client
186179
}
187180

188-
func newRecordingTransporter(t *testing.T, testVars testVars) policy.Transporter {
189-
transport, err := recording.NewRecordingHTTPClient(t, nil)
190-
require.NoError(t, err)
191-
192-
err = recording.Start(t, recordingDirectory, nil)
193-
require.NoError(t, err)
194-
195-
// err = recording.ResetProxy(nil)
196-
// require.NoError(t, err)
197-
198-
err = recording.AddURISanitizer(fakeTestVars.Endpoint, testVars.Endpoint, nil)
181+
func addSanitizers(t *testing.T) {
182+
t.Logf("Setting up sanitizers")
183+
err := recording.AddURISanitizer(fakeTestVars.Endpoint, "https://[^/]+?/", nil)
199184
require.NoError(t, err)
200185

201-
err = recording.AddURISanitizer(fakeTestVars.Topic, testVars.Topic, nil)
186+
err = recording.AddURISanitizer(fakeTestVars.Topic, tv.Topic, nil)
202187
require.NoError(t, err)
203188

204-
err = recording.AddURISanitizer(fakeTestVars.Subscription, testVars.Subscription, nil)
189+
err = recording.AddURISanitizer(fakeTestVars.Subscription, tv.Subscription, nil)
205190
require.NoError(t, err)
206191

207-
err = recording.AddGeneralRegexSanitizer(`"time": "2023-06-17T00:33:32Z"`, `"time":".+?"`, nil)
192+
err = recording.AddGeneralRegexSanitizer(`"time":"2023-06-17T00:33:32Z"`, `"time":".+?"`, nil)
208193
require.NoError(t, err)
209194

210195
err = recording.AddGeneralRegexSanitizer(
@@ -218,17 +203,17 @@ func newRecordingTransporter(t *testing.T, testVars testVars) policy.Transporter
218203
require.NoError(t, err)
219204

220205
err = recording.AddGeneralRegexSanitizer(
221-
`"lockTokens": ["fake-lock-token"]`,
206+
`"lockTokens":["fake-lock-token"]`,
222207
`"lockTokens":\s*\[\s*"[^"]+"\s*\]`, nil)
223208
require.NoError(t, err)
224209

225210
err = recording.AddGeneralRegexSanitizer(
226-
`"succeededLockTokens": ["fake-lock-token"]`,
211+
`"succeededLockTokens":["fake-lock-token"]`,
227212
`"succeededLockTokens":\s*\[\s*"[^"]+"\s*\]`, nil)
228213
require.NoError(t, err)
229214

230215
err = recording.AddGeneralRegexSanitizer(
231-
`"succeededLockTokens": ["fake-lock-token", "fake-lock-token", "fake-lock-token"]`,
216+
`"succeededLockTokens":["fake-lock-token","fake-lock-token","fake-lock-token"]`,
232217
`"succeededLockTokens":\s*`+
233218
`\[`+
234219
`(\s*"[^"]+"\s*\,){2}`+
@@ -237,18 +222,32 @@ func newRecordingTransporter(t *testing.T, testVars testVars) policy.Transporter
237222
require.NoError(t, err)
238223

239224
err = recording.AddGeneralRegexSanitizer(
240-
`"lockTokens": ["fake-lock-token", "fake-lock-token"]`,
225+
`"lockTokens":["fake-lock-token","fake-lock-token"]`,
241226
`"lockTokens":\s*\[\s*"[^"]+"\s*\,\s*"[^"]+"\s*\]`, nil)
242227
require.NoError(t, err)
243228

244229
err = recording.AddGeneralRegexSanitizer(
245-
`"lockTokens": ["fake-lock-token", "fake-lock-token", "fake-lock-token"]`,
230+
`"lockTokens":["fake-lock-token","fake-lock-token", "fake-lock-token"]`,
246231
`"lockTokens":\s*`+
247232
`\[`+
248233
`(\s*"[^"]+"\s*\,){2}`+
249234
`\s*"[^"]+"\s*`+
250235
`\]`, nil)
251236
require.NoError(t, err)
237+
}
238+
239+
var initSanitizers sync.Once
240+
241+
func newRecordingTransporter(t *testing.T) policy.Transporter {
242+
transport, err := recording.NewRecordingHTTPClient(t, nil)
243+
require.NoError(t, err)
244+
245+
initSanitizers.Do(func() {
246+
addSanitizers(t)
247+
})
248+
249+
err = recording.Start(t, recordingDirectory, nil)
250+
require.NoError(t, err)
252251

253252
t.Cleanup(func() {
254253
err := recording.Stop(t, nil)
@@ -261,6 +260,13 @@ func newRecordingTransporter(t *testing.T, testVars testVars) policy.Transporter
261260
func requireEqualCloudEvent(t *testing.T, expected messaging.CloudEvent, actual messaging.CloudEvent) {
262261
t.Helper()
263262

263+
// the built-in sanitizers are now clearing out my CloudEvent's source attribute so we
264+
// just have to assume it's 'Sanitized'.
265+
266+
if recording.GetRecordMode() == recording.PlaybackMode {
267+
expected.Source = recording.SanitizedValue
268+
}
269+
264270
require.NotEmpty(t, actual.ID, "ID is not empty")
265271
require.NotEmpty(t, actual.SpecVersion, "SpecVersion is not empty")
266272

0 commit comments

Comments
 (0)