|
3 | 3 |
|
4 | 4 | package com.azure.messaging.servicebus.implementation;
|
5 | 5 |
|
| 6 | +import com.azure.core.util.serializer.SerializerEncoding; |
6 | 7 | import com.azure.messaging.servicebus.TestUtils;
|
7 | 8 | import com.azure.messaging.servicebus.administration.implementation.EntityHelper;
|
8 | 9 | import com.azure.messaging.servicebus.administration.implementation.ServiceBusManagementSerializer;
|
9 | 10 | import com.azure.messaging.servicebus.administration.implementation.models.AuthorizationRuleImpl;
|
10 | 11 | import com.azure.messaging.servicebus.administration.implementation.models.CorrelationFilterImpl;
|
| 12 | +import com.azure.messaging.servicebus.administration.implementation.models.CreateTopicBodyContentImpl; |
| 13 | +import com.azure.messaging.servicebus.administration.implementation.models.CreateTopicBodyImpl; |
11 | 14 | import com.azure.messaging.servicebus.administration.implementation.models.EmptyRuleActionImpl;
|
12 | 15 | import com.azure.messaging.servicebus.administration.implementation.models.FalseFilterImpl;
|
13 | 16 | import com.azure.messaging.servicebus.administration.implementation.models.KeyValueImpl;
|
|
30 | 33 | import com.azure.messaging.servicebus.administration.implementation.models.SubscriptionDescriptionFeedImpl;
|
31 | 34 | import com.azure.messaging.servicebus.administration.implementation.models.SubscriptionDescriptionImpl;
|
32 | 35 | import com.azure.messaging.servicebus.administration.implementation.models.TitleImpl;
|
| 36 | +import com.azure.messaging.servicebus.administration.implementation.models.TopicDescriptionImpl; |
33 | 37 | import com.azure.messaging.servicebus.administration.implementation.models.TrueFilterImpl;
|
34 | 38 | import com.azure.messaging.servicebus.administration.models.AccessRights;
|
35 | 39 | import com.azure.messaging.servicebus.administration.models.AuthorizationRule;
|
@@ -763,6 +767,39 @@ void deserializeRuleEntryResponse() throws IOException {
|
763 | 767 | assertRuleEntryEquals(expected, actual);
|
764 | 768 | }
|
765 | 769 |
|
| 770 | + @Test |
| 771 | + void serializeTopicDescriptionXML() throws IOException { |
| 772 | + // Arrange |
| 773 | + AuthorizationRuleImpl rule = new AuthorizationRuleImpl() |
| 774 | + .setKeyName("test") |
| 775 | + .setType("SharedAccessAuthorizationRule") |
| 776 | + .setRights(Arrays.asList(AccessRights.MANAGE, AccessRights.LISTEN, AccessRights.SEND)); |
| 777 | + |
| 778 | + TopicDescriptionImpl topicDescription = new TopicDescriptionImpl() |
| 779 | + .setAuthorizationRules(Arrays.asList(rule)); |
| 780 | + |
| 781 | + CreateTopicBodyImpl createTopicBody = new CreateTopicBodyImpl() |
| 782 | + .setContent(new CreateTopicBodyContentImpl().setTopicDescription(topicDescription)); |
| 783 | + |
| 784 | + // Act |
| 785 | + String serialized = SERIALIZER.serialize(createTopicBody, SerializerEncoding.XML); |
| 786 | + |
| 787 | + // Assert |
| 788 | + assertNotNull(serialized); |
| 789 | + |
| 790 | + // Note: Technically, the XML created by the serializer is already valid/correct. However, the Azure Service |
| 791 | + // that consumes the payload does not accept prefixed AuthorizationRule |
| 792 | + // (ie. wstxns1:AuthorizationRule xmlns:wstxns1=...), so special care needs to be taken to create usable XML. |
| 793 | + |
| 794 | + // Must contain correct default namespace |
| 795 | + assertTrue(serialized.contains("<TopicDescription xmlns=\"http://schemas.microsoft.com/netservices/2010/10/servicebus/connect\""), |
| 796 | + "Serialized payload does not contain correct default namespace"); |
| 797 | + |
| 798 | + // Must not contain prefixed namespace |
| 799 | + assertTrue(serialized.contains("<AuthorizationRule"), |
| 800 | + "Serialized payload does not contain AuthorizationRule in default namespace"); |
| 801 | + } |
| 802 | + |
766 | 803 | /**
|
767 | 804 | * Given a file name, gets the corresponding resource and its contents as a string.
|
768 | 805 | *
|
|
0 commit comments