Skip to content

Commit 1367a1c

Browse files
annahiletaAaronWDS
andauthored
Added unit tests for the middle priority services (#86)
* added initial unit tests * added tests for click code examples * fixes after code review * fixed variable naming * added ability to run on a new application.json structure * fixed GetInactiveClickwraps test --------- Co-authored-by: Aaron Wilde <52012222+AaronWDS@users.noreply.github.com> Co-authored-by: AaronWDS <aaron.wilde@docusign.com>
1 parent c64e4d5 commit 1367a1c

16 files changed

Lines changed: 749 additions & 63 deletions

‎src/main/java/com/docusign/controller/admin/examples/A001AddActiveUser.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.docusign.DSConfiguration;
44
import com.docusign.admin.api.UsersApi;
5-
import com.docusign.admin.model.*;
5+
import com.docusign.admin.model.NewUserResponse;
66
import com.docusign.common.WorkArguments;
77
import com.docusign.controller.admin.services.AddActiveUserService;
88
import com.docusign.core.model.DoneExample;

‎src/main/java/com/docusign/controller/click/examples/C001ControllerCreateClickwrap.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ protected Object doWork(WorkArguments args, ModelMap model,
5353
DOCUMENT_ORDER);
5454

5555
// Step 4. Call the v1 Click API
56-
ClickwrapVersionSummaryResponse createdClickwrap = accountsApi.createClickwrap(
56+
ClickwrapVersionSummaryResponse createdClickwrap = CreateClickwrapService.createClickwrap(
57+
accountsApi,
5758
this.session.getAccountId(),
5859
clickwrapRequest);
5960

‎src/main/java/com/docusign/controller/click/services/CreateClickwrapService.java‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.docusign.controller.click.services;
22

3+
import com.docusign.click.api.AccountsApi;
4+
import com.docusign.click.client.ApiException;
35
import com.docusign.click.model.ClickwrapRequest;
6+
import com.docusign.click.model.ClickwrapVersionSummaryResponse;
47
import com.docusign.click.model.DisplaySettings;
58
import com.docusign.click.model.Document;
69
import com.docusign.controller.click.examples.ClickwrapHelper;
@@ -30,4 +33,14 @@ public static ClickwrapRequest createClickwrapRequest(
3033
.requireReacceptance(true)
3134
.displaySettings(displaySettings);
3235
}
36+
37+
public static ClickwrapVersionSummaryResponse createClickwrap(
38+
AccountsApi accountsApi,
39+
String accountId,
40+
ClickwrapRequest clickwrapRequest
41+
) throws IOException, ApiException {
42+
return accountsApi.createClickwrap(
43+
accountId,
44+
clickwrapRequest);
45+
}
3346
}

‎src/main/java/com/docusign/controller/eSignature/examples/EG029ControllerApplyBrandToEnvelope.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public EG029ControllerApplyBrandToEnvelope(DSConfiguration config, Session sessi
4545
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
4646
super.onInitModel(args, model);
4747
AccountsApi accountsApi = createAccountsApi(session.getBasePath(), user.getAccessToken());
48-
BrandsResponse brands = accountsApi.listBrands(session.getAccountId());
48+
BrandsResponse brands = ApplyBrandToEnvelopeService.getBrands(accountsApi, session.getAccountId());
4949
model.addAttribute(MODEL_LIST_BRAND, brands.getBrands());
5050
}
5151

‎src/main/java/com/docusign/controller/eSignature/examples/EG031ControllerBulkSendEnvelopes.java‎

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,9 @@
1414
import org.springframework.stereotype.Controller;
1515
import org.springframework.ui.ModelMap;
1616
import org.springframework.web.bind.annotation.RequestMapping;
17-
import com.docusign.DSConfiguration;
18-
import com.docusign.esign.api.BulkEnvelopesApi;
19-
import com.docusign.esign.api.EnvelopesApi;
20-
import com.docusign.esign.client.ApiClient;
21-
import com.docusign.esign.client.ApiException;
22-
import com.docusign.esign.model.BulkSendBatchStatus;
23-
import com.docusign.esign.model.BulkSendRequest;
24-
import com.docusign.esign.model.BulkSendingCopy;
25-
import com.docusign.esign.model.BulkSendingCopyRecipient;
26-
import com.docusign.esign.model.BulkSendingList;
27-
import com.docusign.esign.model.CarbonCopy;
28-
import com.docusign.esign.model.CustomFields;
29-
import com.docusign.esign.model.Document;
30-
import com.docusign.esign.model.EnvelopeDefinition;
31-
import com.docusign.esign.model.Recipients;
32-
import com.docusign.esign.model.Signer;
33-
import com.docusign.esign.model.TextCustomField;
3417

3518
import javax.servlet.http.HttpServletResponse;
3619
import java.io.IOException;
37-
import java.util.Collections;
38-
import java.util.List;
39-
import java.util.concurrent.TimeUnit;
4020

4121
/**
4222
* This code example demonstrates how to send envelopes in bulk to multiple
@@ -87,13 +67,12 @@ protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse
8767
);
8868

8969
// Confirm successful bulk send
90-
// Step 7 start
9170
try {
92-
TimeUnit.SECONDS.sleep(BULK_REQUEST_DELAY);
93-
// For 2000 recipients, it can take about an hour
94-
BulkSendBatchStatus status = bulkEnvelopesApi.getBulkSendBatchStatus(accountId, batchId);
95-
// Step 7 end
96-
DoneExample.createDefault(getTextForCodeExampleByApiType().ExampleName)
71+
72+
BulkSendBatchStatus status = BulkSendEnvelopesService.getBulkSendBatchStatus(bulkEnvelopesApi, accountId, batchId, BULK_REQUEST_DELAY);
73+
74+
DoneExample.createDefault(getTextForCodeExample().ExampleName)
75+
9776
.withJsonObject(status)
9877
.withMessage(String.join(
9978
"",

‎src/main/java/com/docusign/controller/eSignature/services/ApplyBrandToEnvelopeService.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.docusign.controller.eSignature.services;
22

33
import com.docusign.controller.eSignature.examples.EnvelopeHelpers;
4+
import com.docusign.esign.api.AccountsApi;
45
import com.docusign.esign.api.EnvelopesApi;
56
import com.docusign.esign.client.ApiException;
67
import com.docusign.esign.model.*;
@@ -23,6 +24,13 @@ public static EnvelopeSummary applyBrandToEnvelope(
2324
return envelopesApi.createEnvelope(accountId, envelope);
2425
}
2526

27+
public static BrandsResponse getBrands(
28+
AccountsApi accountsApi,
29+
String accountId
30+
) throws ApiException {
31+
return accountsApi.listBrands(accountId);
32+
}
33+
2634
// Creates an envelope. The envelope has one recipient who should sign an
2735
// attached document. Attached document is read from a local directory.
2836
// Also the envelope contains a brand Id which is created on EG028 example.

‎src/main/java/com/docusign/controller/eSignature/services/BulkSendEnvelopesService.java‎

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.io.IOException;
1212
import java.util.Collections;
1313
import java.util.List;
14+
import java.util.concurrent.TimeUnit;
1415

1516
public final class BulkSendEnvelopesService {
1617
private static final String BULK_SIGNER_EMAIL_PLACEHOLDER = "MultiBulkRecipients-%s@docusign.com";
@@ -20,6 +21,19 @@ public final class BulkSendEnvelopesService {
2021
private static final int ANCHOR_OFFSET_Y = -5;
2122
private static final int ANCHOR_OFFSET_X = 15;
2223

24+
// Step 7 start
25+
public static BulkSendBatchStatus getBulkSendBatchStatus(
26+
BulkEnvelopesApi bulkEnvelopesApi,
27+
String accountId,
28+
String batchId,
29+
long bulkRequestDelay
30+
) throws ApiException, InterruptedException {
31+
TimeUnit.SECONDS.sleep(bulkRequestDelay);
32+
// For 2000 recipients, it can take about an hour
33+
return bulkEnvelopesApi.getBulkSendBatchStatus(accountId, batchId);
34+
}
35+
// Step 7 end
36+
2337
public static String bulkSendEnvelopes(
2438
BulkEnvelopesApi bulkEnvelopesApi,
2539
ApiClient apiClient,
@@ -89,7 +103,7 @@ public static BulkSendingList getSendingList(
89103
}
90104
// Step 3-2 end
91105

92-
private static BulkSendingCopy createBulkSending(
106+
public static BulkSendingCopy createBulkSending(
93107
String signerName,
94108
String signerEmail,
95109
String ccName,
@@ -122,7 +136,7 @@ public static EnvelopeDefinition makeEnvelope() throws IOException {
122136
}
123137
// Step 4-2 end
124138

125-
private static CustomFields createCustomFields(String bulkListId) {
139+
public static CustomFields createCustomFields(String bulkListId) {
126140
TextCustomField textCustomField = new TextCustomField()
127141
.name("mailingListId")
128142
.required(DsModelUtils.FALSE)
@@ -134,15 +148,15 @@ private static CustomFields createCustomFields(String bulkListId) {
134148
.textCustomFields(List.of(textCustomField));
135149
}
136150

137-
private static Recipients createRecipients() {
151+
public static Recipients createRecipients() {
138152
Signer signer = createSignerPlaceholder(EnvelopeHelpers.SIGNER_ROLE_NAME, "1", "1");
139153
CarbonCopy cc = createCCPlaceholder(EnvelopeHelpers.CC_ROLE_NAME, "2", "2");
140154
return new Recipients()
141155
.signers(List.of(signer))
142156
.carbonCopies(List.of(cc));
143157
}
144158

145-
private static Signer createSignerPlaceholder(String roleName, String recipientId, String routingOrder) {
159+
public static Signer createSignerPlaceholder(String roleName, String recipientId, String routingOrder) {
146160
return new Signer()
147161
.name(String.format(BULK_SIGNER_NAME_PLACEHOLDER, roleName))
148162
.email(String.format(BULK_SIGNER_EMAIL_PLACEHOLDER, roleName))
@@ -156,7 +170,7 @@ private static Signer createSignerPlaceholder(String roleName, String recipientI
156170
.tabs(EnvelopeHelpers.createSingleSignerTab("/sn1/", ANCHOR_OFFSET_Y, ANCHOR_OFFSET_X));
157171
}
158172

159-
private static CarbonCopy createCCPlaceholder(String roleName, String recipientId, String routingOrder) {
173+
public static CarbonCopy createCCPlaceholder(String roleName, String recipientId, String routingOrder) {
160174
return new CarbonCopy()
161175
.name(String.format(BULK_SIGNER_NAME_PLACEHOLDER, roleName))
162176
.email(String.format(BULK_SIGNER_EMAIL_PLACEHOLDER, roleName))
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package tests.Click;
2+
3+
import com.docusign.click.api.AccountsApi;
4+
import com.docusign.click.client.ApiClient;
5+
import com.docusign.click.client.ApiException;
6+
import com.docusign.click.model.*;
7+
import com.docusign.controller.click.services.ActivateClickwrapService;
8+
import com.docusign.core.model.ApiType;
9+
import org.junit.Assert;
10+
import org.junit.Test;
11+
import org.springframework.http.HttpHeaders;
12+
import tests.common.JWTLoginMethodTest;
13+
import tests.common.TestConfig;
14+
15+
import java.io.IOException;
16+
17+
public final class ActivateClickwrapTest {
18+
private static final String BEARER_AUTHENTICATION = "Bearer ";
19+
private TestConfig testConfig;
20+
private static String basePathAddition = "/clickapi";
21+
private final ApiClient apiClient;
22+
private final AccountsApi accountsApi;
23+
24+
public ActivateClickwrapTest() throws IOException, ApiException {
25+
JWTLoginMethodTest.RequestJWTUserToken_CorrectInputValues_ReturnOAuthToken(ApiType.CLICK);
26+
this.testConfig = TestConfig.getInstance();
27+
28+
this.apiClient = new ApiClient(testConfig.getBasePath() + basePathAddition);
29+
apiClient.addDefaultHeader(HttpHeaders.AUTHORIZATION, BEARER_AUTHENTICATION + testConfig.getAccessToken());
30+
this.accountsApi = new AccountsApi(apiClient);
31+
CreateClickwrapTest createClickwrapTest = new CreateClickwrapTest();
32+
createClickwrapTest.CreateClickwrap_CorrectInputValues_ReturnsClickwrapVersionSummaryResponse();
33+
}
34+
35+
@Test
36+
public void ActivateClickwrap_CorrectInputValues_ReturnsClickwrapVersionSummaryResponse() throws ApiException {
37+
// Arrange
38+
var statusActive = "active";
39+
40+
// Act
41+
ClickwrapVersionSummaryResponse clickwrapVersionSummaryResponse = ActivateClickwrapService.activateClickwrap(
42+
this.accountsApi,
43+
testConfig.getAccountId(),
44+
testConfig.getInactiveClickwrap().getClickwrapId(),
45+
testConfig.getInactiveClickwrap().getVersionNumber()
46+
);
47+
48+
// Assert
49+
Assert.assertNotNull(clickwrapVersionSummaryResponse);
50+
Assert.assertEquals(statusActive, clickwrapVersionSummaryResponse.getStatus());
51+
}
52+
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package tests.Click;
2+
3+
import com.docusign.click.api.AccountsApi;
4+
import com.docusign.click.client.ApiClient;
5+
import com.docusign.click.client.ApiException;
6+
import com.docusign.click.model.ClickwrapRequest;
7+
import com.docusign.click.model.ClickwrapVersionSummaryResponse;
8+
import com.docusign.click.model.DisplaySettings;
9+
import com.docusign.click.model.Document;
10+
import com.docusign.controller.click.examples.ClickwrapHelper;
11+
import com.docusign.controller.click.services.CreateClickwrapService;
12+
import com.docusign.core.model.ApiType;
13+
import org.junit.Assert;
14+
import org.junit.Test;
15+
import org.springframework.http.HttpHeaders;
16+
import tests.common.JWTLoginMethodTest;
17+
import tests.common.TestConfig;
18+
19+
import java.io.IOException;
20+
import java.nio.charset.Charset;
21+
import java.util.Random;
22+
23+
public final class CreateClickwrapTest {
24+
private static final String BEARER_AUTHENTICATION = "Bearer ";
25+
private TestConfig testConfig;
26+
private static final String DOCUMENT_FILE_NAME = "TermsOfService.pdf";
27+
private static final Integer DOCUMENT_ORDER = 0;
28+
private static final String DOCUMENT_NAME = "Terms of Service";
29+
private static String basePathAddition = "/clickapi";
30+
private final ApiClient apiClient;
31+
private final AccountsApi accountsApi;
32+
33+
public CreateClickwrapTest() throws IOException {
34+
JWTLoginMethodTest.RequestJWTUserToken_CorrectInputValues_ReturnOAuthToken(ApiType.CLICK);
35+
this.testConfig = TestConfig.getInstance();
36+
37+
this.apiClient = new ApiClient(testConfig.getBasePath() + basePathAddition);
38+
apiClient.addDefaultHeader(HttpHeaders.AUTHORIZATION, BEARER_AUTHENTICATION + testConfig.getAccessToken());
39+
this.accountsApi = new AccountsApi(apiClient);
40+
}
41+
42+
@Test
43+
public void CreateClickwrapRequest_CorrectInputValues_ReturnsClickwrapRequest() throws IOException {
44+
// Arrange
45+
String clickwrapName = "Clickwrap name";
46+
String displayName = "Terms of Service";
47+
String consentButtonText = "I Agree";
48+
String format = "modal";
49+
String documentDisplay = "document";
50+
51+
Document document = ClickwrapHelper.createDocumentFromFile(DOCUMENT_FILE_NAME, DOCUMENT_NAME, DOCUMENT_ORDER);
52+
DisplaySettings displaySettings = new DisplaySettings()
53+
.displayName(displayName)
54+
.consentButtonText(consentButtonText)
55+
.downloadable(true)
56+
.format(format)
57+
.mustRead(true)
58+
.requireAccept(true)
59+
.documentDisplay(documentDisplay);
60+
61+
ClickwrapRequest expectedClickwrapRequest = new ClickwrapRequest()
62+
.addDocumentsItem(document)
63+
.clickwrapName(clickwrapName)
64+
.requireReacceptance(true)
65+
.displaySettings(displaySettings);
66+
67+
// Act
68+
ClickwrapRequest clickwrapRequest = CreateClickwrapService.createClickwrapRequest(
69+
clickwrapName,
70+
DOCUMENT_FILE_NAME,
71+
DOCUMENT_NAME,
72+
DOCUMENT_ORDER);
73+
74+
// Assert
75+
Assert.assertNotNull(clickwrapRequest);
76+
Assert.assertEquals(expectedClickwrapRequest, clickwrapRequest);
77+
}
78+
79+
@Test
80+
public void CreateClickwrap_CorrectInputValues_ReturnsClickwrapVersionSummaryResponse() throws ApiException, IOException {
81+
// Arrange
82+
byte[] byteArray = new byte[8];
83+
new Random().nextBytes(byteArray);
84+
String clickwrapName = new String(byteArray, Charset.forName("UTF-8"));
85+
86+
ClickwrapRequest clickwrapRequest = CreateClickwrapService.createClickwrapRequest(
87+
clickwrapName,
88+
DOCUMENT_FILE_NAME,
89+
DOCUMENT_NAME,
90+
DOCUMENT_ORDER);
91+
92+
// Act
93+
ClickwrapVersionSummaryResponse clickwrapVersionSummaryResponse = CreateClickwrapService.createClickwrap(
94+
this.accountsApi,
95+
testConfig.getAccountId(),
96+
clickwrapRequest);
97+
98+
testConfig.setInactiveClickwrap(clickwrapVersionSummaryResponse);
99+
100+
// Assert
101+
Assert.assertNotNull(clickwrapVersionSummaryResponse);
102+
Assert.assertEquals(clickwrapName, clickwrapVersionSummaryResponse.getClickwrapName());
103+
}
104+
}

‎src/test/java/tests/common/TestConfig.java‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package tests.common;
22

3+
import com.docusign.click.model.ClickwrapVersionSummaryResponse;
4+
import com.docusign.esign.model.Brand;
35
import com.google.gson.Gson;
46
import com.google.gson.GsonBuilder;
57
import com.google.gson.JsonObject;
8+
69
import lombok.Getter;
10+
import com.google.gson.Gson;
11+
import com.google.gson.GsonBuilder;
12+
import com.google.gson.JsonObject;
713
import lombok.Setter;
814
import org.json.JSONException;
915
import org.json.JSONObject;
@@ -39,9 +45,15 @@ public class TestConfig {
3945

4046
private String BasePath;
4147

48+
private String BatchId;
49+
4250
private String TemplateId;
4351

44-
private String PathToDocuments;
52+
private ClickwrapVersionSummaryResponse inactiveClickwrap;
53+
54+
private Brand brand;
55+
56+
public String PathToDocuments;
4557

4658
private static TestConfig single_instance = null;
4759

0 commit comments

Comments
 (0)