Skip to content

Commit a350545

Browse files
authored
Merge pull request #14 from project-sunbird/vinaya-ft
Issue #SB-3647 feat: Added negative test scenarios for create issuer API
2 parents 2d75dde + 11cec2c commit a350545

File tree

17 files changed

+225
-41
lines changed

17 files changed

+225
-41
lines changed

Diff for: sunbird_service_api_test/src/test/java/org/sunbird/integration/test/badge/CreateIssuerTest.java

+90-41
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,34 @@
1010
import org.springframework.beans.factory.annotation.Autowired;
1111
import org.springframework.core.io.ClassPathResource;
1212
import org.springframework.http.HttpStatus;
13-
import org.sunbird.common.util.HttpUtil;
14-
import org.sunbird.integration.test.user.EndpointConfig.TestGlobalProperty;
1513
import org.testng.annotations.DataProvider;
1614
import org.testng.annotations.Test;
1715

18-
public class CreateIssuerTest extends TestNGCitrusTestDesigner {
16+
import org.sunbird.common.util.HttpUtil;
17+
import org.sunbird.integration.test.common.BaseCitrusTest;
18+
import org.sunbird.integration.test.user.EndpointConfig.TestGlobalProperty;
19+
20+
21+
public class CreateIssuerTest extends BaseCitrusTest {
1922

2023
public static final String TEST_NAME_CREATE_ISSUER_SUCCESS = "createIssuerSuccess";
21-
public static final String TEST_NAME_CREATE_ISSUER_WITH_IMAGE_SUCCESS = "createIssuerWithImageSuccess";
24+
public static final String TEST_NAME_CREATE_ISSUER_SUCCESS_WITH_IMAGE = "createIssuerSuccessWithImage";
25+
public static final String TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_NAME = "createIssuerFailureWithoutName";
26+
public static final String TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_DESCRIPTION = "createIssuerFailureWithoutDescription";
27+
public static final String TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_URL = "createIssuerFailureWithoutUrl";
28+
public static final String TEST_NAME_CREATE_ISSUER_FAILURE_WITH_INVALID_URL = "createIssuerFailureWithInvalidUrl";
29+
public static final String TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_EMAIL = "createIssuerFailureWithoutEmail";
30+
public static final String TEST_NAME_CREATE_ISSUER_FAILURE_WITH_INVALID_EMAIL = "createIssuerFailureWithInvalidEmail";
2231

2332
public static final String TEMPLATE_DIR = "templates/badge/issuer/create";
2433
public static final String TEST_DIR_CREATE_ISSUER_SUCCESS = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_SUCCESS);
25-
public static final String TEST_DIR_CREATE_ISSUER_WITH_IMAGE_SUCCESS = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_WITH_IMAGE_SUCCESS);
34+
public static final String TEST_DIR_CREATE_ISSUER_SUCCESS_WITH_IMAGE = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_SUCCESS_WITH_IMAGE);
35+
public static final String TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_NAME = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_NAME);
36+
public static final String TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_DESCRIPTION = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_DESCRIPTION);
37+
public static final String TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_URL = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_URL);
38+
public static final String TEST_DIR_CREATE_ISSUER_FAILURE_WITH_INVALID_URL = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_FAILURE_WITH_INVALID_URL);
39+
public static final String TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_EMAIL = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_EMAIL);
40+
public static final String TEST_DIR_CREATE_ISSUER_FAILURE_WITH_INVALID_EMAIL = MessageFormat.format("{0}/{1}/", TEMPLATE_DIR, TEST_NAME_CREATE_ISSUER_FAILURE_WITH_INVALID_EMAIL);
2641

2742
public static final String REQUEST_FORM_DATA = "request.params";
2843
public static final String RESPONSE_JSON = "response.json";
@@ -32,60 +47,94 @@ public class CreateIssuerTest extends TestNGCitrusTestDesigner {
3247
@Autowired private TestGlobalProperty initGlobalValues;
3348

3449
private String getCreateIssuerUrl() {
50+
System.out.println("initGlobalValues = " + initGlobalValues);
3551
return initGlobalValues.getLmsUrl().contains("localhost")
3652
? "/v1/issuer/create"
3753
: "/api/badging/v1/issuer/create";
3854
}
3955

40-
private void performTest(
41-
String testName,
42-
HttpClient httpClient,
43-
TestGlobalProperty config,
44-
String url,
45-
String requestFormData,
46-
String responseJson) {
47-
System.out.println(requestFormData);
48-
49-
getTestCase().setName(testName);
50-
51-
String testFolderPath = MessageFormat.format("{0}/{1}", TEMPLATE_DIR, testName);
52-
53-
new HttpUtil().multipartPost(http().client(httpClient), config, url, requestFormData, testFolderPath);
54-
55-
http()
56-
.client(httpClient)
57-
.receive()
58-
.response(HttpStatus.OK)
59-
.payload(new ClassPathResource(responseJson));
60-
}
61-
62-
@DataProvider(name = "createIssuerDataProvider")
63-
public Object[][] createIssuerDataProvider() {
56+
@DataProvider(name = "createIssuerDataProviderSuccess")
57+
public Object[][] createIssuerDataProviderSuccess() {
6458
return new Object[][] {
6559
new Object[]{
6660
TEST_DIR_CREATE_ISSUER_SUCCESS + REQUEST_FORM_DATA,
6761
TEST_DIR_CREATE_ISSUER_SUCCESS + RESPONSE_JSON,
6862
TEST_NAME_CREATE_ISSUER_SUCCESS
6963
},
7064
new Object[]{
71-
TEST_DIR_CREATE_ISSUER_WITH_IMAGE_SUCCESS + REQUEST_FORM_DATA,
72-
TEST_DIR_CREATE_ISSUER_WITH_IMAGE_SUCCESS + RESPONSE_JSON,
73-
TEST_NAME_CREATE_ISSUER_WITH_IMAGE_SUCCESS
65+
TEST_DIR_CREATE_ISSUER_SUCCESS_WITH_IMAGE + REQUEST_FORM_DATA,
66+
TEST_DIR_CREATE_ISSUER_SUCCESS_WITH_IMAGE + RESPONSE_JSON,
67+
TEST_NAME_CREATE_ISSUER_SUCCESS_WITH_IMAGE
7468
}
7569
};
7670
}
7771

78-
@Test(dataProvider = "createIssuerDataProvider")
72+
@DataProvider(name = "createIssuerDataProviderFailure")
73+
public Object[][] createIssuerDataProviderFailure() {
74+
return new Object[][] {
75+
new Object[]{
76+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_NAME + REQUEST_FORM_DATA,
77+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_NAME + RESPONSE_JSON,
78+
TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_NAME
79+
},
80+
new Object[]{
81+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_DESCRIPTION + REQUEST_FORM_DATA,
82+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_DESCRIPTION + RESPONSE_JSON,
83+
TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_DESCRIPTION
84+
},
85+
new Object[]{
86+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_URL + REQUEST_FORM_DATA,
87+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_URL + RESPONSE_JSON,
88+
TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_URL
89+
},
90+
new Object[]{
91+
TEST_DIR_CREATE_ISSUER_FAILURE_WITH_INVALID_URL + REQUEST_FORM_DATA,
92+
TEST_DIR_CREATE_ISSUER_FAILURE_WITH_INVALID_URL + RESPONSE_JSON,
93+
TEST_NAME_CREATE_ISSUER_FAILURE_WITH_INVALID_URL
94+
},
95+
new Object[]{
96+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_EMAIL + REQUEST_FORM_DATA,
97+
TEST_DIR_CREATE_ISSUER_FAILURE_WITHOUT_EMAIL + RESPONSE_JSON,
98+
TEST_NAME_CREATE_ISSUER_FAILURE_WITHOUT_EMAIL
99+
},
100+
new Object[]{
101+
TEST_DIR_CREATE_ISSUER_FAILURE_WITH_INVALID_EMAIL + REQUEST_FORM_DATA,
102+
TEST_DIR_CREATE_ISSUER_FAILURE_WITH_INVALID_EMAIL + RESPONSE_JSON,
103+
TEST_NAME_CREATE_ISSUER_FAILURE_WITH_INVALID_EMAIL
104+
}
105+
};
106+
}
107+
108+
@Test(dataProvider = "createIssuerDataProviderSuccess")
109+
@CitrusParameters({"requestFormData", "responseJson", "testName"})
110+
@CitrusTest
111+
public void testCreateIssuerSuccess(String requestFormData, String responseJson, String testName) {
112+
System.out.println("initGlobalValues = " + initGlobalValues);
113+
performMultipartTest(
114+
testName,
115+
TEMPLATE_DIR,
116+
restTestClient,
117+
initGlobalValues,
118+
getCreateIssuerUrl(),
119+
requestFormData,
120+
responseJson,
121+
HttpStatus.OK);
122+
}
123+
124+
@Test(dataProvider = "createIssuerDataProviderFailure")
79125
@CitrusParameters({"requestFormData", "responseJson", "testName"})
80126
@CitrusTest
81-
public void testCreateIssuer(String requestFormData, String responseJson, String testName) {
127+
public void testCreateIssuerFailure(String requestFormData, String responseJson, String testName) {
82128
System.out.println("initGlobalValues = " + initGlobalValues);
83-
performTest(
84-
testName,
85-
restTestClient,
86-
initGlobalValues,
87-
getCreateIssuerUrl(),
88-
requestFormData,
89-
responseJson);
129+
performMultipartTest(
130+
testName,
131+
TEMPLATE_DIR,
132+
restTestClient,
133+
initGlobalValues,
134+
getCreateIssuerUrl(),
135+
requestFormData,
136+
responseJson,
137+
HttpStatus.BAD_REQUEST);
90138
}
139+
91140
}

Diff for: sunbird_service_api_test/src/test/java/org/sunbird/integration/test/common/BaseCitrusTest.java

+31
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package org.sunbird.integration.test.common;
22

33
import com.consol.citrus.dsl.testng.TestNGCitrusTestDesigner;
4+
import com.consol.citrus.http.client.HttpClient;
5+
import java.text.MessageFormat;
46
import java.util.HashMap;
57
import java.util.List;
68
import java.util.Map;
9+
import org.springframework.core.io.ClassPathResource;
10+
import org.springframework.http.HttpStatus;
11+
import org.sunbird.common.util.HttpUtil;
12+
import org.sunbird.integration.test.user.EndpointConfig.TestGlobalProperty;
713

814
/**
915
* Class to contain the common things for all citrus tests.
@@ -15,4 +21,29 @@ public class BaseCitrusTest extends TestNGCitrusTestDesigner {
1521
public static Map<String,List<String>> toDeleteCassandraRecordsMap = new HashMap<String, List<String>>();
1622
public static Map<String,List<String>> toDeleteEsRecordsMap = new HashMap<String, List<String>>();
1723

24+
public void performMultipartTest(
25+
String testName,
26+
String testTemplateDir,
27+
HttpClient httpClient,
28+
TestGlobalProperty config,
29+
String url,
30+
String requestFormData,
31+
String responseJson,
32+
HttpStatus responseCode) {
33+
System.out.println(requestFormData);
34+
35+
getTestCase().setName(testName);
36+
37+
String testFolderPath = MessageFormat.format("{0}/{1}", testTemplateDir, testName);
38+
39+
new HttpUtil().multipartPost(http().client(httpClient), config, url, requestFormData, testFolderPath);
40+
41+
http()
42+
.client(httpClient)
43+
.receive()
44+
.response(responseCode)
45+
.payload(new ClassPathResource(responseJson));
46+
}
47+
48+
1849
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
name=swarn
2+
description=something
3+
url=http://www.example.com
4+
email=abc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"id": "api.issuer.create",
3+
"ver": "v1",
4+
"ts": "@ignore@",
5+
"params": {
6+
"resmsgid": null,
7+
"msgid": "@ignore@",
8+
"err": "EMAIL_FORMAT_ERROR",
9+
"status": "EMAIL_FORMAT_ERROR",
10+
"errmsg": "Email is invalid."
11+
},
12+
"responseCode": "CLIENT_ERROR",
13+
"result": {}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
name=swarn
2+
description=something
3+
url=abc
4+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"id": "api.issuer.create",
3+
"ver": "v1",
4+
"ts": "@ignore@",
5+
"params": {
6+
"resmsgid": null,
7+
"msgid": "@ignore@",
8+
"err": "URL_FORMAT_ERROR",
9+
"status": "URL_FORMAT_ERROR",
10+
"errmsg": "URL is invalid."
11+
},
12+
"responseCode": "CLIENT_ERROR",
13+
"result": {}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name=swarn
2+
url=http://www.example.com
3+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"id": "api.issuer.create",
3+
"ver": "v1",
4+
"ts": "@ignore@",
5+
"params": {
6+
"resmsgid": null,
7+
"msgid": "@ignore@",
8+
"err": "MANDATORY_PARAMETER_MISSING",
9+
"status": "MANDATORY_PARAMETER_MISSING",
10+
"errmsg": "Mandatory parameter description is missing."
11+
},
12+
"responseCode": "CLIENT_ERROR",
13+
"result": {}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name=swarn
2+
description=something
3+
url=http://www.example.com
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"id": "api.issuer.create",
3+
"ver": "v1",
4+
"ts": "@ignore@",
5+
"params": {
6+
"resmsgid": null,
7+
"msgid": "@ignore@",
8+
"err": "MANDATORY_PARAMETER_MISSING",
9+
"status": "MANDATORY_PARAMETER_MISSING",
10+
"errmsg": "Mandatory parameter email is missing."
11+
},
12+
"responseCode": "CLIENT_ERROR",
13+
"result": {}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
description=something
2+
url=http://www.example.com
3+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"id": "api.issuer.create",
3+
"ver": "v1",
4+
"ts": "@ignore@",
5+
"params": {
6+
"resmsgid": null,
7+
"msgid": "@ignore@",
8+
"err": "MANDATORY_PARAMETER_MISSING",
9+
"status": "MANDATORY_PARAMETER_MISSING",
10+
"errmsg": "Mandatory parameter name is missing."
11+
},
12+
"responseCode": "CLIENT_ERROR",
13+
"result": {}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name=swarn
2+
description=something
3+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"id": "api.issuer.create",
3+
"ver": "v1",
4+
"ts": "@ignore@",
5+
"params": {
6+
"resmsgid": null,
7+
"msgid": "@ignore@",
8+
"err": "MANDATORY_PARAMETER_MISSING",
9+
"status": "MANDATORY_PARAMETER_MISSING",
10+
"errmsg": "Mandatory parameter url is missing."
11+
},
12+
"responseCode": "CLIENT_ERROR",
13+
"result": {}
14+
}

0 commit comments

Comments
 (0)