Skip to content

Commit a7d18c5

Browse files
committed
- fixes #364 a bug where batching would fail for national clouds
1 parent b4ef0ce commit a7d18c5

File tree

3 files changed

+47
-5
lines changed

3 files changed

+47
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
### Changed
1313

14+
- Fixed a bug where batching would fail for national clouds
15+
1416
## [2.0.9] - 2021-09-17
1517

1618
### Added

src/main/java/com/microsoft/graph/content/BatchRequestContent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,9 @@ public <T> BatchRequestStep<T> getStepById(@Nonnull final String stepId) {
168168
}
169169
/** pattern to replace the protocol and host part of the request if specified */
170170
@Nonnull
171-
protected static final Pattern protocolAndHostReplacementPattern = Pattern.compile("(?i)^http[s]?:\\/\\/graph\\.microsoft\\.com\\/(?>v1\\.0|beta)\\/?"); // (?i) case insensitive
171+
protected static final Pattern protocolAndHostReplacementPattern =
172+
Pattern.compile("(?i)^http[s]?:\\/\\/(?:graph|dod-graph|microsoftgraph)\\.(?:microsoft|chinacloudapi)\\.(?:com|cn|us|de)\\/(?:v1\\.0|beta)"); // (?i) case insensitive
173+
//https://docs.microsoft.com/en-us/graph/deployments#microsoft-graph-and-graph-explorer-service-root-endpoints
172174
/**
173175
* Generates a randomly available request id
174176
* @return a random request id

src/test/java/com/microsoft/graph/content/BatchRequestContentTest.java

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
class BatchRequestContentTest {
4343

44-
String testurl = "http://graph.microsoft.com/me";
44+
String testurl = "http://graph.microsoft.com/v1.0/me";
4545

4646
@Test
4747
void testBatchRequestContentCreation() throws MalformedURLException {
@@ -61,11 +61,49 @@ void testGetBatchRequestContent() throws MalformedURLException {
6161
BatchRequestContent requestContent = new BatchRequestContent();
6262
String stepId = requestContent.addBatchRequestStep(requestStep);
6363
String content = new DefaultSerializer(mock(ILogger.class)).serializeObject(requestContent);
64-
String expectedContent = "{\"requests\":[{\"url\":\"http://graph.microsoft.com/me\",\"method\":\"GET\",\"id\":\""
64+
String expectedContent = "{\"requests\":[{\"url\":\"/me\",\"method\":\"GET\",\"id\":\""
6565
+ stepId + "\"}]}";
6666
assertEquals(expectedContent, content);
6767
}
6868

69+
@Test
70+
void testItReplacesChinaHost() throws MalformedURLException {
71+
IHttpRequest requestStep = mock(IHttpRequest.class);
72+
when(requestStep.getRequestUrl()).thenReturn(new URL("https://microsoftgraph.chinacloudapi.cn/v1.0/me"));
73+
BatchRequestContent requestContent = new BatchRequestContent();
74+
requestContent.addBatchRequestStep(requestStep);
75+
var step = requestContent.requests.get(0);
76+
assertEquals("/me", step.url);
77+
}
78+
79+
@Test
80+
void testItReplacesGCCHost() throws MalformedURLException {
81+
IHttpRequest requestStep = mock(IHttpRequest.class);
82+
when(requestStep.getRequestUrl()).thenReturn(new URL("https://graph.microsoft.us/v1.0/me"));
83+
BatchRequestContent requestContent = new BatchRequestContent();
84+
requestContent.addBatchRequestStep(requestStep);
85+
var step = requestContent.requests.get(0);
86+
assertEquals("/me", step.url);
87+
}
88+
89+
@Test
90+
void testItReplacesDODHost() throws MalformedURLException {
91+
IHttpRequest requestStep = mock(IHttpRequest.class);
92+
when(requestStep.getRequestUrl()).thenReturn(new URL("https://dod-graph.microsoft.us/v1.0/me"));
93+
BatchRequestContent requestContent = new BatchRequestContent();
94+
requestContent.addBatchRequestStep(requestStep);
95+
var step = requestContent.requests.get(0);
96+
assertEquals("/me", step.url);
97+
}
98+
@Test
99+
void testItReplacesGermanHost() throws MalformedURLException {
100+
IHttpRequest requestStep = mock(IHttpRequest.class);
101+
when(requestStep.getRequestUrl()).thenReturn(new URL("https://graph.microsoft.de/v1.0/me"));
102+
BatchRequestContent requestContent = new BatchRequestContent();
103+
requestContent.addBatchRequestStep(requestStep);
104+
var step = requestContent.requests.get(0);
105+
assertEquals("/me", step.url);
106+
}
69107
@Test
70108
void testGetBatchRequestContentWithHeader() throws MalformedURLException {
71109
IHttpRequest requestStep = mock(IHttpRequest.class);
@@ -74,7 +112,7 @@ void testGetBatchRequestContentWithHeader() throws MalformedURLException {
74112
BatchRequestContent requestContent = new BatchRequestContent();
75113
String stepId = requestContent.addBatchRequestStep(requestStep);
76114
String content = new DefaultSerializer(mock(ILogger.class)).serializeObject(requestContent);
77-
String expectedContent = "{\"requests\":[{\"url\":\"http://graph.microsoft.com/me\",\"method\":\"GET\",\"id\":\""
115+
String expectedContent = "{\"requests\":[{\"url\":\"/me\",\"method\":\"GET\",\"id\":\""
78116
+ stepId + "\",\"headers\":{\"testkey\":\"testvalue\"}}]}";
79117
assertEquals(expectedContent, content);
80118
}
@@ -105,7 +143,7 @@ void testRemoveBatchRequesStepWithIdByAddingMultipleBatchSteps() throws Malforme
105143

106144
requestContent.removeBatchRequestStepWithId(stepId);
107145
String content = new DefaultSerializer(mock(ILogger.class)).serializeObject(requestContent);
108-
String expectedContent = "{\"requests\":[{\"url\":\"http://graph.microsoft.com/me\",\"method\":\"GET\",\"id\":\""
146+
String expectedContent = "{\"requests\":[{\"url\":\"/me\",\"method\":\"GET\",\"id\":\""
109147
+ step1Id + "\"}]}";
110148
assertEquals(expectedContent, content);
111149
}

0 commit comments

Comments
 (0)