Skip to content

Commit 5beb13b

Browse files
author
xuguang
committed
NormalAppControllerTest,OpAuthorityControllerTest
1 parent fc604a9 commit 5beb13b

File tree

2 files changed

+485
-0
lines changed

2 files changed

+485
-0
lines changed
Lines changed: 356 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,356 @@
1+
package com.xiaojukeji.kafka.manager.web.api.versionone.normal;
2+
3+
import com.xiaojukeji.kafka.manager.common.entity.Result;
4+
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
5+
import com.xiaojukeji.kafka.manager.common.entity.dto.normal.AppDTO;
6+
import com.xiaojukeji.kafka.manager.web.config.BaseTest;
7+
import com.xiaojukeji.kafka.manager.web.config.Constant;
8+
import com.xiaojukeji.kafka.manager.web.config.HttpUtils;
9+
import org.springframework.boot.test.web.client.TestRestTemplate;
10+
import org.springframework.http.*;
11+
import org.testng.Assert;
12+
import org.testng.annotations.Test;
13+
14+
import java.util.HashMap;
15+
import java.util.Map;
16+
17+
/**
18+
* @author xuguang
19+
* @Date 2022/1/7
20+
*/
21+
public class NormalAppControllerTest extends BaseTest {
22+
23+
24+
private final TestRestTemplate testRestTemplate = new TestRestTemplate();
25+
26+
private AppDTO getAppDTO() {
27+
AppDTO appDTO = new AppDTO();
28+
appDTO.setAppId(Constant.APPID_IN_MYSQL);
29+
appDTO.setName("KM管理员");
30+
appDTO.setPrincipals("admin");
31+
appDTO.setDescription("KM管理员应用-谨慎对外提供");
32+
return appDTO;
33+
}
34+
35+
@Test(description = "测试获取App列表")
36+
public void getAppsTest() {
37+
String url = Constant.BASE_URL + "/api/v1/normal/apps";
38+
39+
// 有headers登陆
40+
getAppsWithHeadersTest(url);
41+
// 无headers登陆
42+
getAppsWithoutHeadersTest(url);
43+
}
44+
45+
private void getAppsWithHeadersTest(String url) {
46+
HttpHeaders httpHeaders = HttpUtils.getHttpHeaders();
47+
HttpEntity<String> httpEntity = new HttpEntity<>("", httpHeaders);
48+
ResponseEntity<Result> result = testRestTemplate.exchange(url, HttpMethod.GET, httpEntity, Result.class);
49+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
50+
Assert.assertNotNull(result.getBody());
51+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
52+
}
53+
54+
private void getAppsWithoutHeadersTest(String url) {
55+
HttpEntity<String> httpEntity = new HttpEntity<>("", new HttpHeaders());
56+
ResponseEntity<Result> result = testRestTemplate.exchange(url, HttpMethod.GET, httpEntity, Result.class);
57+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.UNAUTHORIZED.value());
58+
}
59+
60+
@Test(description = "测试由appId获取app")
61+
public void getAppBasicInfoTest() {
62+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/basic-info";
63+
64+
// 查询结果不为空
65+
getAppBasicInfo2ResultNotEmptyTest(url);
66+
// 查询结果为空
67+
getAppBasicInfo2ResultEmptyTest(url);
68+
}
69+
70+
private void getAppBasicInfo2ResultNotEmptyTest(String url) {
71+
HttpEntity<String> httpEntity = new HttpEntity<>("", HttpUtils.getHttpHeaders());
72+
Map<String, String> urlVariables = new HashMap<>();
73+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
74+
ResponseEntity<Result> result = testRestTemplate.exchange(
75+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
76+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
77+
Assert.assertNotNull(result.getBody());
78+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
79+
Assert.assertNotNull(result.getBody().getData());
80+
}
81+
82+
private void getAppBasicInfo2ResultEmptyTest(String url) {
83+
HttpEntity<String> httpEntity = new HttpEntity<>("", HttpUtils.getHttpHeaders());
84+
Map<String, String> urlVariables = new HashMap<>();
85+
urlVariables.put("appId", Constant.INVALID_APPID);
86+
ResponseEntity<Result> result = testRestTemplate.exchange(
87+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
88+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
89+
Assert.assertNotNull(result.getBody());
90+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
91+
Assert.assertNull(result.getBody().getData());
92+
}
93+
94+
@Test(description = "测试修改app")
95+
public void modifyApp() {
96+
String url = Constant.BASE_URL + "/api/v1/normal/apps";
97+
// 修改成功
98+
modifyApp2SuccessTest(url);
99+
// 传的dto为空, 修改不成功
100+
modifyApp2FailureTest(url);
101+
}
102+
103+
private void modifyApp2SuccessTest(String url) {
104+
AppDTO appDTO = getAppDTO();
105+
HttpHeaders httpHeaders = HttpUtils.getHttpHeaders();
106+
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
107+
HttpEntity<AppDTO> httpEntity =
108+
new HttpEntity<>(appDTO, httpHeaders);
109+
ResponseEntity<Result> result = testRestTemplate.exchange(
110+
url, HttpMethod.PUT, httpEntity, Result.class);
111+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
112+
Assert.assertNotNull(result.getBody());
113+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
114+
}
115+
116+
private void modifyApp2FailureTest(String url) {
117+
AppDTO appDTO = new AppDTO();
118+
HttpHeaders httpHeaders = HttpUtils.getHttpHeaders();
119+
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
120+
HttpEntity<AppDTO> httpEntity =
121+
new HttpEntity<>(appDTO, httpHeaders);
122+
ResponseEntity<Result> result = testRestTemplate.exchange(
123+
url, HttpMethod.PUT, httpEntity, Result.class);
124+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
125+
Assert.assertNotNull(result.getBody());
126+
Assert.assertNotEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
127+
}
128+
129+
@Test(description = "测试获取有权限的Topic信息")
130+
public void getAppTopicsTest() {
131+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/topics";
132+
// 参数appId
133+
getAppTopics1Test(url);
134+
// 参数有appId,mine=true
135+
getAppTopics2Test(url);
136+
// 参数有appId,mine=false
137+
getAppTopics3Test(url);
138+
// appId无效,mine=false
139+
getAppTopics4Test(url);
140+
}
141+
142+
private void getAppTopics1Test(String url) {
143+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
144+
Map<String, String> urlVariables = new HashMap<>();
145+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
146+
ResponseEntity<Result> result = testRestTemplate.exchange(
147+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
148+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
149+
Assert.assertNotNull(result.getBody());
150+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
151+
}
152+
153+
private void getAppTopics2Test(String url) {
154+
url = url + "?mine=true";
155+
156+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
157+
Map<String, Object> urlVariables = new HashMap<>();
158+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
159+
ResponseEntity<Result> result = testRestTemplate.exchange(
160+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
161+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
162+
Assert.assertNotNull(result.getBody());
163+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
164+
}
165+
166+
private void getAppTopics3Test(String url) {
167+
url = url + "?mine=false";
168+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
169+
Map<String, String> urlVariables = new HashMap<>();
170+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
171+
ResponseEntity<Result> result = testRestTemplate.exchange(
172+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
173+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
174+
Assert.assertNotNull(result.getBody());
175+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
176+
}
177+
178+
private void getAppTopics4Test(String url) {
179+
url = url + "?mine=false";
180+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
181+
Map<String, String> urlVariables = new HashMap<>();
182+
urlVariables.put("appId", Constant.INVALID_APPID);
183+
ResponseEntity<Result> result = testRestTemplate.exchange(
184+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
185+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
186+
Assert.assertNotNull(result.getBody());
187+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
188+
}
189+
190+
@Test(description = "测试Quota查询")
191+
public void getAppIdQuotaTest() {
192+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/quotas";
193+
// appId不为空,clusterId和topicName在数据库中真实存在,isPhysicalClusterId=true
194+
getAppIdQuota1Test(url);
195+
// appId无效
196+
getAppIdQuota2Test(url);
197+
// topicName无效
198+
getAppIdQuota3Test(url);
199+
// clusterId无效
200+
getAppIdQuota4Test(url);
201+
}
202+
203+
private void getAppIdQuota1Test(String url) {
204+
url = url + "?clusterId=" + Constant.PHYSICAL_CLUSTER_ID_IN_MYSQL + "&topicName=" +
205+
Constant.TOPIC_NAME_IN_MYSQL + "&isPhysicalClusterId=true";
206+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
207+
Map<String, Object> urlVariables = new HashMap<>();
208+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
209+
ResponseEntity<Result> result = testRestTemplate.exchange(
210+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
211+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
212+
Assert.assertNotNull(result.getBody());
213+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
214+
}
215+
216+
private void getAppIdQuota2Test(String url) {
217+
url = url + "?clusterId=" + Constant.PHYSICAL_CLUSTER_ID_IN_MYSQL + "&topicName=" +
218+
Constant.TOPIC_NAME_IN_MYSQL + "&isPhysicalClusterId=true";
219+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
220+
Map<String, Object> urlVariables = new HashMap<>();
221+
urlVariables.put("appId", Constant.INVALID_APPID);
222+
ResponseEntity<Result> result = testRestTemplate.exchange(
223+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
224+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
225+
Assert.assertNotNull(result.getBody());
226+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
227+
}
228+
229+
private void getAppIdQuota3Test(String url) {
230+
url = url + "?clusterId=" + Constant.PHYSICAL_CLUSTER_ID_IN_MYSQL + "&topicName=" +
231+
Constant.INVALID_TOPIC_NAME + "&isPhysicalClusterId=true";
232+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
233+
Map<String, Object> urlVariables = new HashMap<>();
234+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
235+
ResponseEntity<Result> result = testRestTemplate.exchange(
236+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
237+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
238+
Assert.assertNotNull(result.getBody());
239+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.TOPIC_NOT_EXIST.getCode());
240+
}
241+
242+
private void getAppIdQuota4Test(String url) {
243+
url = url + "?clusterId=" + Constant.INVALID_CLUSTER_ID_IN_MYSQL + "&topicName=" +
244+
Constant.TOPIC_NAME_IN_MYSQL + "&isPhysicalClusterId=false";
245+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
246+
Map<String, Object> urlVariables = new HashMap<>();
247+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
248+
ResponseEntity<Result> result = testRestTemplate.exchange(
249+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
250+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
251+
Assert.assertNotNull(result.getBody());
252+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.CLUSTER_NOT_EXIST.getCode());
253+
}
254+
255+
@Test(description = "测试获取应用连接信息")
256+
public void getAppIdConnectionsTest() {
257+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/connections";
258+
// appId存在数据库
259+
getAppIdConnections1Test(url);
260+
// appId不存在数据库
261+
getAppIdConnections2Test(url);
262+
}
263+
264+
public void getAppIdConnections1Test(String url) {
265+
HttpEntity<String> httpEntity = new HttpEntity<>("", HttpUtils.getHttpHeaders());
266+
Map<String, String> urlVariables = new HashMap<>();
267+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
268+
ResponseEntity<Result> result = testRestTemplate.exchange(
269+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
270+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
271+
Assert.assertNotNull(result.getBody());
272+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
273+
Assert.assertNotNull(result.getBody().getData());
274+
}
275+
276+
public void getAppIdConnections2Test(String url) {
277+
HttpEntity<String> httpEntity = new HttpEntity<>("", HttpUtils.getHttpHeaders());
278+
Map<String, String> urlVariables = new HashMap<>();
279+
urlVariables.put("appId", Constant.INVALID_APPID);
280+
ResponseEntity<Result> result = testRestTemplate.exchange(
281+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
282+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
283+
Assert.assertNotNull(result.getBody());
284+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
285+
Assert.assertNotNull(result.getBody().getData());
286+
}
287+
288+
@Test(description = "测试app对Topic权限信息")
289+
public void getAppIdAuthorityTest() {
290+
// appId, clusterId, topicName在数据库中存在
291+
getAppIdAuthority1Test();
292+
// appId无效
293+
getAppIdAuthority2Test();
294+
// clusterId无效
295+
getAppIdAuthority3Test();
296+
// topicName无效
297+
getAppIdAuthority4Test();
298+
}
299+
300+
private void getAppIdAuthority1Test() {
301+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/authorities";
302+
url = url + "?clusterId=" + Constant.LOGICAL_CLUSTER_ID_IN_MYSQL + "&topicName=" +
303+
Constant.TOPIC_NAME_IN_MYSQL;
304+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
305+
Map<String, Object> urlVariables = new HashMap<>();
306+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
307+
ResponseEntity<Result> result = testRestTemplate.exchange(
308+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
309+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
310+
Assert.assertNotNull(result.getBody());
311+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
312+
}
313+
314+
private void getAppIdAuthority2Test() {
315+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/authorities";
316+
url = url + "?clusterId=" + Constant.LOGICAL_CLUSTER_ID_IN_MYSQL + "&topicName=" +
317+
Constant.TOPIC_NAME_IN_MYSQL;
318+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
319+
Map<String, Object> urlVariables = new HashMap<>();
320+
urlVariables.put("appId", Constant.INVALID_APPID);
321+
ResponseEntity<Result> result = testRestTemplate.exchange(
322+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
323+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
324+
Assert.assertNotNull(result.getBody());
325+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.SUCCESS.getCode());
326+
}
327+
328+
private void getAppIdAuthority3Test() {
329+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/authorities";
330+
url = url + "?clusterId=" + Constant.INVALID_CLUSTER_ID_IN_MYSQL + "&topicName=" +
331+
Constant.TOPIC_NAME_IN_MYSQL;
332+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
333+
Map<String, Object> urlVariables = new HashMap<>();
334+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
335+
ResponseEntity<Result> result = testRestTemplate.exchange(
336+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
337+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
338+
Assert.assertNotNull(result.getBody());
339+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.CLUSTER_NOT_EXIST.getCode());
340+
}
341+
342+
private void getAppIdAuthority4Test() {
343+
String url = Constant.BASE_URL + "/api/v1/normal/apps/{appId}/authorities";
344+
url = url + "?clusterId=" + Constant.LOGICAL_CLUSTER_ID_IN_MYSQL + "&topicName=" +
345+
Constant.INVALID_TOPIC_NAME;
346+
HttpEntity<String> httpEntity = new HttpEntity<>(null, HttpUtils.getHttpHeaders());
347+
Map<String, Object> urlVariables = new HashMap<>();
348+
urlVariables.put("appId", Constant.APPID_IN_MYSQL);
349+
ResponseEntity<Result> result = testRestTemplate.exchange(
350+
url, HttpMethod.GET, httpEntity, Result.class, urlVariables);
351+
Assert.assertEquals(result.getStatusCodeValue(), HttpStatus.OK.value());
352+
Assert.assertNotNull(result.getBody());
353+
Assert.assertEquals(result.getBody().getCode(), ResultStatus.TOPIC_NOT_EXIST.getCode());
354+
}
355+
356+
}

0 commit comments

Comments
 (0)