Skip to content

Commit

Permalink
Cm api tests (#21)
Browse files Browse the repository at this point in the history
Add API tests
  • Loading branch information
msharma-tw authored Jul 15, 2020
1 parent 8e4766b commit 3adf278
Show file tree
Hide file tree
Showing 26 changed files with 763 additions and 59 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
# Sequence of patterns matched against refs/heads
branches:
- master
- updateAPITestsGateway
- cm-api-tests
jobs:
API-test:
runs-on: ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ target/
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

ProjectEKATests.iml
*.iml
target/
2 changes: 0 additions & 2 deletions ProjectEKATests.iml

This file was deleted.

71 changes: 68 additions & 3 deletions src/test/java/Tests/APITests/APIUtils/APIUtils.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,87 @@
package Tests.APITests.APIUtils;

import Tests.APITests.APIUtils.CMRequest.LoginUser;
import Tests.APITests.APIUtils.CMRequest.VerifyConsentPIN;
import Tests.APITests.APIUtils.HIURequest.HIUConsentRequest;
import io.restassured.RestAssured;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.util.List;

public class APIUtils {

public Response createConsent(String id) {
RestAssured.baseURI = PropertiesCache.getInstance().getProperty("HIUBackendURL");

//create consent-request at HIU
RestAssured.baseURI = PropertiesCache.getInstance().getProperty("HIUBaseURL");
RestAssured.useRelaxedHTTPSValidation();
RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");
request.header("Authorization", new LoginUser().getHIUAuthToken());

HIUConsentRequest hiuConsentRequest = new HIUConsentRequest.ConsentRequestBuilder(id.toLowerCase()).buildConsentReuqest();
HIUConsentRequest hiuConsentRequest = new HIUConsentRequest.ConsentRequestBuilder(id.toLowerCase())
.buildConsentReuqest();
request.body(hiuConsentRequest.getJSONRequestBody().toString());
Response response = request.post("/v1/hiu/consent-requests");

return response;
}

public String verifyConsentPIN(String consent) {

//verify consent-pin and generate pin-authorization token
String authToken = "Bearer " + new LoginUser().getCMAuthToken();
RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");
request.header("Authorization", authToken);

if(consent.equalsIgnoreCase("grant")) {
request.body(new VerifyConsentPIN().getVerifyGrantPINRequestBody());
}
else if(consent.equalsIgnoreCase("revoke")) {
request.body(new VerifyConsentPIN().getVerifyRevokePINRequestBody());
}
Response response = request.post("/patients/verify-pin");
JsonPath jsonPathEvaluator = response.jsonPath();
return jsonPathEvaluator.getString("temporaryToken");
}

public String fetchConsentRequestId(Response response, String patient) {

//identifies the consent-request-id of patient's consent-request in the GET consent-requests at HIU
String consentRequestId = "";
JsonPath jsonPathEvaluator = response.jsonPath();
List<String> patientList = jsonPathEvaluator.getList("patient.id");
for(int i=0; i<(patientList.size()-1);i++) {
if(patientList.get(i).equalsIgnoreCase(patient)) {
if((jsonPathEvaluator.getString("status[" + i + "]")).equalsIgnoreCase("REQUESTED")) {
consentRequestId = jsonPathEvaluator.getString("consentRequestId[" + i + "]");
break;
}
}
}
return consentRequestId;
}

public String fetchConsentStatus(Response response, String consentRequestId) {

//identifies the status of consent in the GET consent-requests at HIU
String status="";
JsonPath jsonPathEvaluator = response.jsonPath();
List<String> consentRequestIds = jsonPathEvaluator.getList("consentRequestId");
for(int i=0; i<(consentRequestIds.size()-1);i++) {
if(consentRequestIds.get(i).equalsIgnoreCase(consentRequestId)) {
status = jsonPathEvaluator.getString("status[" + i + "]");
break;
}
}
return status;
}




}
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package Tests.APITests.APIUtils;
package Tests.APITests.APIUtils.CMRequest;

import java.util.Random;
import java.util.UUID;

public class CMPatientDiscovery {

public String getPatientDiscoverRequestBody() {
return "{\n" +
"\"requestId\":\"" + generateUUID() +"\""+"," +
"\"requestId\":\"" + generateUUID() +"\""+",\n" +
"\"unverifiedIdentifiers\": [],\n" +
" \"hip\": {\n" +
" \"id\": \"10000005\",\n" +
" \"name\":\"Max Health Care\"\n" +
" \"id\": \"10000005\"\n" +
" }\n" +
"}";
"}";
}

private String generateUUID() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package Tests.APITests.APIUtils.CMRequest;

public class ConsentRequest {

public String getGrantConsentRequestBody() {
return " { \n" +
" \"consents\": [ \n" +
" { \n" +
" \"careContexts\": [ \n" +
" { \n" +
" \"careContextReference\": \"NCP10093\", \n" +
" \"patientReference\": \"RVH1004\" \n" +
" } \n" +
" ], \n" +
" \"hiTypes\": [ \n" +
" \"Condition\", \n" +
" \"Observation\", \n" +
" \"DiagnosticReport\", \n" +
" \"MedicationRequest\" \n" +
" ], \n" +
" \"hip\": { \n" +
" \"id\": \"10000005\" \n" +
" }, \n" +
" \"permission\": { \n" +
" \"accessMode\": \"VIEW\", \n" +
" \"dataEraseAt\": \"2020-12-27T10:45:54.688\", \n" +
" \"dateRange\": { \n" +
" \"from\": \"1992-06-25T18:30:00\", \n" +
" \"to\": \"2020-06-26T10:45:54.688\" \n" +
" }, \n" +
" \"frequency\": { \n" +
" \"value\": 1, \n" +
" \"unit\": \"HOUR\", \n" +
" \"repeats\": 0 \n" +
" } \n" +
" } \n" +
" } \n" +
" ] \n" +
"} ";
}

public String getRevokeConsentRequestBody(String consentArtefactId) {
return " { \n" +
" \"consents\": [ \n" +
" \""+ consentArtefactId +"\" \n" +
" ] \n" +
"} ";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package Tests.APITests.APIUtils.CMRequest;


public class CreateConsentPIN {

public String getCreatePINRequestBody() {
return "{\n" +
" \"pin\": \"1234\" \n" +
"}";
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package Tests.APITests.APIUtils;
package Tests.APITests.APIUtils.CMRequest;

import Tests.APITests.APIUtils.PropertiesCache;
import io.restassured.RestAssured;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
Expand All @@ -12,19 +13,30 @@ public String getCMAuthToken() {

RestAssured.baseURI = PropertiesCache.getInstance().getProperty("consentManagerURL");
RestAssured.useRelaxedHTTPSValidation();

RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");

Response response = request.body(getCMLoginRequestBody()).post("/sessions");

JsonPath jsonPathEvaluator = response.jsonPath();

Assert.assertEquals(response.getStatusCode(), 200, "Login failed");
System.out.println("CM Login Successful");
return jsonPathEvaluator.getString("accessToken");
}

public String getCMRefreshToken() {

RestAssured.baseURI = PropertiesCache.getInstance().getProperty("consentManagerURL");
RestAssured.useRelaxedHTTPSValidation();
RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");

Response response = request.body(getCMLoginRequestBody()).post("/sessions");
JsonPath jsonPathEvaluator = response.jsonPath();
Assert.assertEquals(response.getStatusCode(), 200, "Login failed");
System.out.println("CM Login Successful");
return jsonPathEvaluator.getString("refreshToken");
}

private String getCMLoginRequestBody() {
return "{\n" +
" \"username\": \"" + PropertiesCache.getInstance().getProperty("userName") + "\",\n" +
Expand All @@ -41,20 +53,23 @@ private String getHIULoginRequestBody() {
}

public String getHIUAuthToken() {

RestAssured.baseURI = PropertiesCache.getInstance().getProperty("HIUBackendURL");
RestAssured.useRelaxedHTTPSValidation();

RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");

Response response = request.body(getHIULoginRequestBody()).post("/sessions");

JsonPath jsonPathEvaluator = response.jsonPath();

Assert.assertEquals(response.getStatusCode(), 200, "Login failed");
System.out.println("HIU Login Successful");
return jsonPathEvaluator.getString("accessToken");
}

public String getCMLogoutRequestBody(String refreshToken) {
return "{\n" +
" \"refreshToken\": \"" + refreshToken + "\"" +
"}";
}

}
40 changes: 40 additions & 0 deletions src/test/java/Tests/APITests/APIUtils/CMRequest/RecoverCMID.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package Tests.APITests.APIUtils.CMRequest;

public class RecoverCMID {

public String getRecoverInitCMIDRequestBody() {
return "{\n" +
" \"name\": { \n" +
" \"first\": \"John\", \n" +
" \"last\": \"\", \n" +
" \"middle\": \"Doe\" \n" +
" }, \n" +
" \"gender\": \"M\", \n" +
" \"dateOfBirth\": { \n" +
" \"date\": 1, \n" +
" \"month\": 1, \n" +
" \"year\": 1966 \n" +
" }, \n" +
" \"verifiedIdentifiers\": [ \n" +
" {\n" +
" \"type\": \"MOBILE\", \n" +
" \"value\": \"+91-9999999999\" \n" +
" } \n" +
" ], \n" +
" \"unverifiedIdentifiers\": [ \n" +
" {\n" +
" \"type\": \"ABPMJAYID\", \n" +
" \"value\": \"PAPITEST1\" \n" +
" }\n" +
" ]\n" +
"}";
}

public String getRecoverConfirmCMIDRequestBody(String sessionId) {
return "{\n" +
" \"sessionId\": \""+ sessionId +"\",\n" +
" \"value\": \"666666\" \n" +
"}";
}

}
24 changes: 24 additions & 0 deletions src/test/java/Tests/APITests/APIUtils/CMRequest/ResetPassword.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package Tests.APITests.APIUtils.CMRequest;

public class ResetPassword {

public String getGenerateOTPRequestBody() {
return "{\n" +
" \"username\": \"apidemotest10@ncg\" \n" +
"}";
}

public String getVerifyOTPRequestBody(String sessionId) {
return "{\n" +
" \"sessionId\": \""+ sessionId +"\",\n" +
" \"value\": \"666666\" \n" +
"}";
}

public String getResetPasswordRequestBody() {
return "{\n" +
" \"password\": \"Test135@\" \n" +
"}";
}

}
32 changes: 32 additions & 0 deletions src/test/java/Tests/APITests/APIUtils/CMRequest/UpdateProfile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package Tests.APITests.APIUtils.CMRequest;

import java.util.UUID;

public class UpdateProfile {

public String getUpdatePasswordRequestBody() {
return "{\n" +
" \"newPassword\": \"Test135@\" ,\n" +
" \"oldPassword\": \"Test135@\" \n" +
"}";
}

public String getVerifyPINRequestBody() {
return "{\n" +
" \"pin\": \"1234\",\n" +
" \"requestId\":\"" + generateUUID() +"\""+",\n" +
" \"scope\": \"profile.changepin\" \n" +
"}";
}

public String getUpdatePINRequestBody() {
return "{\n" +
" \"pin\": \"1234\" \n" +
"}";
}

private String generateUUID() {
return String.valueOf(UUID.randomUUID());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package Tests.APITests.APIUtils.CMRequest;

import java.util.UUID;

public class VerifyConsentPIN {

public String getVerifyGrantPINRequestBody() {
return "{\n" +
" \"pin\": \"1234\",\n" +
" \"requestId\": \"" + generateUUID() +"\""+",\n" +
" \"scope\": \"consentrequest.approve\" \n" +
"}";
}

public String getVerifyRevokePINRequestBody() {
return "{\n" +
" \"pin\": \"1234\",\n" +
" \"requestId\": \"" + generateUUID() +"\""+",\n" +
" \"scope\": \"consent.revoke\" \n" +
"}";
}

private String generateUUID() {
return String.valueOf(UUID.randomUUID());
}

}
Loading

0 comments on commit 3adf278

Please sign in to comment.