-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCreateItemTest.java
More file actions
134 lines (113 loc) · 6.42 KB
/
CreateItemTest.java
File metadata and controls
134 lines (113 loc) · 6.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package ai.pluggy.client.integration;
import static ai.pluggy.client.integration.util.AssertionsUtils.assertSuccessful;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import ai.pluggy.client.PluggyClient;
import ai.pluggy.client.request.CreateItemRequest;
import ai.pluggy.client.request.ParametersMap;
import ai.pluggy.client.response.ErrorResponse;
import ai.pluggy.client.response.ItemResponse;
import lombok.SneakyThrows;
import org.junit.jupiter.api.Test;
import retrofit2.Call;
import retrofit2.Response;
public class CreateItemTest extends BaseApiIntegrationTest {
@SneakyThrows
@Test
void createItem_withValidParams_responseOk() {
// create item params
ParametersMap parametersMap = ParametersMap.map("user", "user-ok")
.with("password", "password-ok");
Integer connectorId = 0;
// run request with 'connectorId', 'parameters' params
CreateItemRequest createItemRequest = new CreateItemRequest(connectorId, parametersMap);
Call<ItemResponse> createItemRequestCall = client.service().createItem(createItemRequest);
Response<ItemResponse> itemRequestResponse = createItemRequestCall.execute();
assertSuccessful(itemRequestResponse, client);
ItemResponse itemResponse1 = itemRequestResponse.body();
assertNotNull(itemResponse1);
assertEquals(itemResponse1.getConnector().getId(), connectorId);
// run request with 'connectorId', 'parameters', 'webhookUrl', 'clientUserId',
// params
String webhookUrl = "https://www.test.com/";
String clientUserId = "clientUserId";
CreateItemRequest createItemRequestWithWebhook = new CreateItemRequest(connectorId,
parametersMap, webhookUrl, clientUserId);
Response<ItemResponse> itemRequestWithWebhookResponse = client.service()
.createItem(createItemRequestWithWebhook).execute();
ItemResponse itemResponse2 = itemRequestWithWebhookResponse.body();
assertNotNull(itemResponse2);
assertEquals(itemResponse2.getConnector().getId(), connectorId);
assertEquals(itemResponse2.getClientUserId(), clientUserId);
assertEquals(itemResponse2.getWebhookUrl(), webhookUrl);
this.getItemsIdCreated().add(itemResponse1.getId());
this.getItemsIdCreated().add(itemResponse2.getId());
}
@SneakyThrows
@Test
void createItem_withInvalidParams_responseError400() {
// create item params
ParametersMap parametersMap = ParametersMap
.map("bad-param-key", "asd")
.with("other-bad-param-key", "qwe");
Integer connectorId = 0;
// run request with 'connectorId', 'parameters' params
CreateItemRequest createItemRequest = new CreateItemRequest(connectorId, parametersMap);
Call<ItemResponse> createItemRequestCall = client.service().createItem(createItemRequest);
Response<ItemResponse> itemRequestResponse = createItemRequestCall.execute();
assertFalse(itemRequestResponse.isSuccessful());
ErrorResponse errorResponse = client.parseError(itemRequestResponse);
assertNotNull(errorResponse);
assertEquals(errorResponse.getCode(), 400);
assertNotNull(errorResponse.getDetails(), "should include validation error details for bad params");
assertTrue(errorResponse.getDetails().size() > 0);
// webhookUrl param 'localhost' is invalid, expect error 400
String localWebhookUrl = "localhost:9999";
CreateItemRequest createItemRequestWithLocalWebhook = new CreateItemRequest(connectorId,
parametersMap, localWebhookUrl);
Response<ItemResponse> itemRequestWithLocalWebhookResponse = client.service()
.createItem(createItemRequestWithLocalWebhook).execute();
ErrorResponse localWebhookErrorResponse = client.parseError(itemRequestWithLocalWebhookResponse);
assertNotNull(localWebhookErrorResponse);
assertEquals(localWebhookErrorResponse.getCode(), 400);
assertNull(localWebhookErrorResponse.getDetails(),
"should not include validation error details for webhookUrl");
// webhookUrl param http is invalid, expect error 400
String httpWebhookUrl = "http://www.test.com";
CreateItemRequest createItemRequestWithHttpWebhook = new CreateItemRequest(connectorId,
parametersMap, httpWebhookUrl);
Response<ItemResponse> itemRequestWithHttpWebhookResponse = client.service()
.createItem(createItemRequestWithHttpWebhook).execute();
ErrorResponse httpWebhookErrorResponse = client.parseError(itemRequestWithHttpWebhookResponse);
assertNotNull(httpWebhookErrorResponse);
assertEquals(httpWebhookErrorResponse.getCode(), 400);
assertNull(localWebhookErrorResponse.getDetails(),
"should not include validation error details for webhookUrl");
}
@SneakyThrows
@Test
void createItem_withEncryptedParameters_responseOk() {
// create item params
ParametersMap parametersMap = ParametersMap.map("user", "user-ok")
.with("password", "password-ok");
Integer connectorId = 0;
// initialize client with RSA public key so the parameters are encrypted before
// sending to the API
PluggyClient clientWithEncryption = PluggyClient.builder()
.clientIdAndSecret(BaseApiIntegrationTest.CLIENT_ID, BaseApiIntegrationTest.CLIENT_SECRET)
.rsaPublicKey(BaseApiIntegrationTest.RSA_PUBLIC_KEY)
.build();
// run request with 'connectorId', 'parameters' params
CreateItemRequest createItemRequest = new CreateItemRequest(connectorId, parametersMap);
Call<ItemResponse> createItemRequestCall = clientWithEncryption.service().createItem(createItemRequest);
Response<ItemResponse> itemRequestResponse = createItemRequestCall.execute();
assertSuccessful(itemRequestResponse, clientWithEncryption);
ItemResponse itemResponse1 = itemRequestResponse.body();
assertNotNull(itemResponse1);
assertEquals(itemResponse1.getConnector().getId(), connectorId);
this.getItemsIdCreated().add(itemResponse1.getId());
}
}