Skip to content

Commit 04676f7

Browse files
committed
fix Coupa instance creation
1 parent 3c2db21 commit 04676f7

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

src/main/java/com/gooddata/connector/ConnectorService.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,22 @@ public CoupaInstance createCoupaInstance(Project project, CoupaInstance instance
176176
notNull(project, "project");
177177
notNull(instance, "instance");
178178

179+
//POST request for creating Coupa instance returns created instance URI as response
180+
final UriResponse instanceUri;
179181
try {
180-
return restTemplate.postForObject(CoupaInstances.URL, instance, CoupaInstance.class, project.getId());
182+
instanceUri = restTemplate.postForObject(CoupaInstances.URL, instance, UriResponse.class,
183+
project.getId());
181184
} catch (GoodDataRestException | RestClientException e) {
182185
throw new ConnectorException("Unable to create Coupa instance with API URL '" + instance.getApiUrl() +
183186
"'", e);
184187
}
188+
189+
try {
190+
return restTemplate.getForObject(instanceUri.getUri(), CoupaInstance.class);
191+
} catch (GoodDataRestException | RestClientException e) {
192+
throw new ConnectorException("Unable to get created Coupa instance with URI '" + instanceUri.getUri() +
193+
"'", e);
194+
}
185195
}
186196

187197
/**

src/test/java/com/gooddata/connector/ConnectorServiceIT.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,13 @@ public void shouldCreateCoupaInstance() throws Exception {
246246
onRequest()
247247
.havingMethodEqualTo("POST")
248248
.havingPathEqualTo("/gdc/projects/PROJECT_ID/connectors/coupa/integration/config/settings/instances")
249+
.respond()
250+
.withStatus(201)
251+
.withBody("{\"uri\":\"/gdc/projects/PROJECT_ID/connectors/coupa/integration/config/settings/instances/123\"}");
252+
253+
onRequest()
254+
.havingMethodEqualTo("GET")
255+
.havingPathEqualTo("/gdc/projects/PROJECT_ID/connectors/coupa/integration/config/settings/instances/123")
249256
.respond()
250257
.withBody(readFromResource("/connector/coupa_instance.json"));
251258

@@ -264,6 +271,25 @@ public void shouldFailCreatingCoupaInstance() throws Exception {
264271
connectors.createCoupaInstance(project, new CoupaInstance("i1", "url", "key"));
265272
}
266273

274+
@Test(expectedExceptions = ConnectorException.class)
275+
public void shouldFailGettingCreatedCoupaInstance() throws Exception {
276+
onRequest()
277+
.havingMethodEqualTo("POST")
278+
.havingPathEqualTo("/gdc/projects/PROJECT_ID/connectors/coupa/integration/config/settings/instances")
279+
.respond()
280+
.withStatus(201)
281+
.withBody("{\"uri\":\"/gdc/projects/PROJECT_ID/connectors/coupa/integration/config/settings/instances/123\"}");
282+
283+
//method should throw exception for any error response status returned by GET request on created Coupa instance uri
284+
onRequest()
285+
.havingMethodEqualTo("GET")
286+
.havingPathEqualTo("/gdc/projects/PROJECT_ID/connectors/coupa/integration/config/settings/instances/123")
287+
.respond()
288+
.withStatus(404);
289+
290+
connectors.createCoupaInstance(project, new CoupaInstance("i1", "url", "key"));
291+
}
292+
267293
@Test
268294
public void shouldGetCoupaInstances() throws Exception {
269295
onRequest()

0 commit comments

Comments
 (0)