From 6edc3b572cb934a6f77f6f49952eff1aab759964 Mon Sep 17 00:00:00 2001 From: Matthew Podwysocki Date: Tue, 6 Sep 2022 18:46:00 -0400 Subject: [PATCH] [notification hubs] Fix empty registration feed bug (#23121) --- .../src/serializers/registrationSerializer.ts | 6 +++++- .../internal/unit/registrationSerializer.spec.ts | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/sdk/notificationhubs/notification-hubs/src/serializers/registrationSerializer.ts b/sdk/notificationhubs/notification-hubs/src/serializers/registrationSerializer.ts index 51258769fbac..858f99fadfc5 100644 --- a/sdk/notificationhubs/notification-hubs/src/serializers/registrationSerializer.ts +++ b/sdk/notificationhubs/notification-hubs/src/serializers/registrationSerializer.ts @@ -187,7 +187,11 @@ export const registrationDescriptionParser: RegistrationDescriptionParser = { */ async parseRegistrationFeed(bodyText: string): Promise { const xml = await parseXML(bodyText, { includeRoot: true }); - const results = []; + const results: RegistrationDescription[] = []; + if (!isDefined(xml.feed.entry)) { + return results; + } + for (const entry of xml.feed.entry) { delete entry.content["$"]; diff --git a/sdk/notificationhubs/notification-hubs/test/internal/unit/registrationSerializer.spec.ts b/sdk/notificationhubs/notification-hubs/test/internal/unit/registrationSerializer.spec.ts index afe9385bbda0..6b8dc24c3917 100644 --- a/sdk/notificationhubs/notification-hubs/test/internal/unit/registrationSerializer.spec.ts +++ b/sdk/notificationhubs/notification-hubs/test/internal/unit/registrationSerializer.spec.ts @@ -491,6 +491,14 @@ const REGISTRATION_FEED = ` `; +const EMPTY_REGISTRATION_FEED = ` + + Registrations + https://testns.servicebus.windows.net/testhub/registrations/?api-version=2020-06 + 2022-09-06T20:06:33Z + +`; + describe("parseRegistrationFeed", () => { it("should parse a registration feed", async () => { const registrations = await registrationDescriptionParser.parseRegistrationFeed( @@ -509,6 +517,14 @@ describe("parseRegistrationFeed", () => { assert.equal(appleRegistration.deviceToken, "{DeviceToken}"); assert.deepEqual(appleRegistration.tags, ["myTag", "myOtherTag"]); }); + + it("should parse an empty feed", async () => { + const registrations = await registrationDescriptionParser.parseRegistrationFeed( + EMPTY_REGISTRATION_FEED + ); + + assert.equal(registrations.length, 0); + }); }); describe("serializeRegistrationDescription", () => {