[IT]Adjust core module auth integration tests to meet checkstyle requirements. (#12368)

This commit is contained in:
阿魁 2024-07-18 09:30:26 +08:00 committed by GitHub
parent 6c05ad5497
commit 9d0a48d54f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 177 additions and 138 deletions

View File

@ -31,8 +31,9 @@ import java.util.concurrent.TimeUnit;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Base class for authentication tests in Nacos.`
*
* @author nkorange
* @since 1.2.0
*/
@ -62,10 +63,18 @@ public class AuthBase extends HttpClient4Test {
protected String namespace1 = "namespace1";
/**
* Logs in a user with the provided username and password, then returns the access token.
*
* @param username the username of the user
* @param password the password of the user
* @return the access token (accessToken) as a String
* @throws AssertionError if the response status is not 2xx or the accessToken is missing
*/
public String login(String username, String password) {
ResponseEntity<String> response = request("/nacos/v1/auth/users/login",
Params.newParams().appendParam("username", username).appendParam("password", password).done(), String.class,
HttpMethod.POST);
Params.newParams().appendParam("username", username).appendParam("password", password).done(),
String.class, HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
JsonNode json = JacksonUtils.toObj(response.getBody());
@ -93,14 +102,16 @@ public class AuthBase extends HttpClient4Test {
assertTrue(response.getStatusCode().is2xxSuccessful());
// Create a user:
response = request("/nacos/v1/auth/users", Params.newParams().appendParam("username", username2).appendParam("password", password2)
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", username2).appendParam("password", password2)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Create a user:
response = request("/nacos/v1/auth/users", Params.newParams().appendParam("username", username3).appendParam("password", password3)
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", username3).appendParam("password", password3)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
System.out.println(response);
@ -108,44 +119,47 @@ public class AuthBase extends HttpClient4Test {
// Create a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role1).appendParam("username", username1).appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", role1).appendParam("username", username1)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Create a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role2).appendParam("username", username2).appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", role2).appendParam("username", username2)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Create a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role3).appendParam("username", username3).appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", role3).appendParam("username", username3)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Add read permission of namespace1 to role1:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", role1).appendParam("resource", namespace1 + ":*:*").appendParam("action", "r")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", role1).appendParam("resource", namespace1 + ":*:*")
.appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Add write permission of namespace1 to role2:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", role2).appendParam("resource", namespace1 + ":*:*").appendParam("action", "w")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", role2).appendParam("resource", namespace1 + ":*:*")
.appendParam("action", "w").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Add read/write permission of namespace1 to role3:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", role3).appendParam("resource", namespace1 + ":*:*").appendParam("action", "rw")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", role3).appendParam("resource", namespace1 + ":*:*")
.appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.POST);
System.out.println(response);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -159,60 +173,66 @@ public class AuthBase extends HttpClient4Test {
// Delete permission:
ResponseEntity<String> response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", role1).appendParam("resource", namespace1 + ":*:*").appendParam("action", "r")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", role1).appendParam("resource", namespace1 + ":*:*")
.appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", role2).appendParam("resource", namespace1 + ":*:*").appendParam("action", "w")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", role2).appendParam("resource", namespace1 + ":*:*")
.appendParam("action", "w").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", role3).appendParam("resource", namespace1 + ":*:*").appendParam("action", "rw")
Params.newParams().appendParam("role", role3).appendParam("resource", namespace1 + ":*:*")
.appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role1).appendParam("username", username1)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role1).appendParam("username", username1).appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", role2).appendParam("username", username2)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role2).appendParam("username", username2).appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", role3).appendParam("username", username3).appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
response = request("/nacos/v1/auth/users", Params.newParams().appendParam("username", username1).appendParam("password", password1)
Params.newParams().appendParam("role", role3).appendParam("username", username3)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
response = request("/nacos/v1/auth/users", Params.newParams().appendParam("username", username2).appendParam("password", password2)
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", username1).appendParam("password", password1)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
response = request("/nacos/v1/auth/users", Params.newParams().appendParam("username", username3).appendParam("password", password3)
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", username2).appendParam("password", password2)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", username3).appendParam("password", password3)
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());

View File

@ -33,7 +33,6 @@ import org.springframework.boot.web.server.LocalServerPort;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
@ -41,12 +40,15 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
/**
* Integration tests for Nacos configuration with authentication.
*
* @author nkorange
* @since 1.2.0
*/
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
@SpringBootTest(classes = Nacos.class, properties = {
"server.servlet.contextPath=/nacos"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class ConfigAuth_ITCase extends AuthBase {
public class ConfigAuthCoreITCase extends AuthBase {
public static final long TIME_OUT = 2000;
@ -55,15 +57,18 @@ public class ConfigAuth_ITCase extends AuthBase {
@LocalServerPort
private int port;
private String dataId = "yanlin";
private final String dataId = "yanlin";
private String group = "yanlin";
private final String group = "yanlin";
@BeforeEach
void init() throws Exception {
super.init(port);
}
/**
* Cleans up resources after each test execution.
*/
@AfterEach
public void destroy() {
super.destroy();
@ -72,11 +77,10 @@ public class ConfigAuth_ITCase extends AuthBase {
iconfig.shutDown();
}
} catch (NacosException ex) {
// Ignored exception during shutdown
}
}
@Test
void writeWithReadPermission() throws Exception {
@ -93,10 +97,6 @@ public class ConfigAuth_ITCase extends AuthBase {
@Test
void readWithReadPermission() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
AtomicInteger ai = new AtomicInteger(0);
properties.put(PropertyKeyConst.USERNAME, username1);
properties.put(PropertyKeyConst.PASSWORD, password1);
iconfig = NacosFactory.createConfigService(properties);
@ -104,6 +104,7 @@ public class ConfigAuth_ITCase extends AuthBase {
final String content = "test" + System.currentTimeMillis();
System.out.println(content);
CountDownLatch latch = new CountDownLatch(1);
iconfig.addListener(dataId, group, new AbstractConfigChangeListener() {
@Override
public void receiveConfigChange(ConfigChangeEvent event) {
@ -151,9 +152,6 @@ public class ConfigAuth_ITCase extends AuthBase {
@Test
void readWithWritePermission() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
properties.put(PropertyKeyConst.NAMESPACE, namespace1);
properties.put(PropertyKeyConst.USERNAME, username2);
properties.put(PropertyKeyConst.PASSWORD, password2);
@ -161,6 +159,7 @@ public class ConfigAuth_ITCase extends AuthBase {
final String content = "test" + System.currentTimeMillis();
CountDownLatch latch = new CountDownLatch(1);
iconfig.addListener(dataId, group, new AbstractConfigChangeListener() {
@Override
public void receiveConfigChange(ConfigChangeEvent event) {
@ -182,8 +181,8 @@ public class ConfigAuth_ITCase extends AuthBase {
try {
iconfig.getConfig(dataId, group, TIME_OUT);
fail();
} catch (NacosException ne) {
assertEquals(HttpStatus.SC_FORBIDDEN, ne.getErrCode());
} catch (NacosException e) {
assertEquals(HttpStatus.SC_FORBIDDEN, e.getErrCode());
}
latch.await(5L, TimeUnit.SECONDS);
@ -191,19 +190,15 @@ public class ConfigAuth_ITCase extends AuthBase {
assertTrue(latch.getCount() > 0);
}
@Test
void ReadWriteWithFullPermission() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
AtomicInteger ai = new AtomicInteger(0);
void readWriteWithFullPermission() throws Exception {
properties.put(PropertyKeyConst.USERNAME, username3);
properties.put(PropertyKeyConst.PASSWORD, password3);
iconfig = NacosFactory.createConfigService(properties);
final String content = "test" + System.currentTimeMillis();
CountDownLatch latch = new CountDownLatch(1);
iconfig.addListener(dataId, group, new AbstractConfigChangeListener() {
@Override
public void receiveConfigChange(ConfigChangeEvent event) {

View File

@ -33,17 +33,16 @@ import org.springframework.test.annotation.DirtiesContext;
import java.net.URL;
import java.util.concurrent.TimeUnit;
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
@Suite
@SelectClasses({LdapAuth_ITCase.NonTlsTest.class, LdapAuth_ITCase.TlsTest.class})
class LdapAuth_ITCase {
@SelectClasses({LdapAuthCoreITCase.NonTlsTest.class, LdapAuthCoreITCase.TlsTest.class})
class LdapAuthCoreITCase {
@Test
void empty() {
}
abstract class LdapBase extends AuthBase {
abstract static class LdapBase extends AuthBase {
@LocalServerPort
private int port;
@ -55,7 +54,8 @@ class LdapAuth_ITCase {
@BeforeEach
void init() throws Exception {
Mockito.when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + "karson" + ")", "karson")).thenReturn(true);
Mockito.when(ldapTemplate.authenticate("", "(" + filterPrefix + "=" + "karson" + ")", "karson"))
.thenReturn(true);
AuthConfigs.setCachingEnabled(false);
TimeUnit.SECONDS.sleep(5L);
String url = String.format("http://localhost:%d/", port);
@ -78,7 +78,8 @@ class LdapAuth_ITCase {
@Nested
@DirtiesContext
@SpringBootTest(classes = Nacos.class, properties = {"server.servlet.context-path=/nacos", "nacos.core.auth.system.type=ldap",
@SpringBootTest(classes = Nacos.class, properties = {"server.servlet.context-path=/nacos",
"nacos.core.auth.system.type=ldap",
"nacos.core.auth.ldap.url=ldaps://localhost:636"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class TlsTest extends LdapBase {
@ -87,6 +88,4 @@ class LdapAuth_ITCase {
super.login("karson", "karson");
}
}
}

View File

@ -38,13 +38,16 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
/**
* Integration tests for Nacos naming service with various authentication scenarios.
*
* @author nkorange
* @since 1.2.0
*/
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Nacos.class, properties = {
"server.servlet.context-path=/nacos"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class NamingAuth_ITCase extends AuthBase {
class NamingAuthCoreITCase extends AuthBase {
@LocalServerPort
private int port;
@ -71,16 +74,16 @@ class NamingAuth_ITCase extends AuthBase {
try {
namingService.registerInstance("test.1", "1.2.3.4", 80);
fail();
} catch (NacosException ne) {
NacosException cause = (NacosException) ne.getCause();
} catch (NacosException e) {
NacosException cause = (NacosException) e.getCause();
assertEquals(HttpStatus.SC_FORBIDDEN, cause.getErrCode());
}
try {
namingService.deregisterInstance("test.1", "1.2.3.4", 80);
fail();
} catch (NacosException ne) {
NacosException cause = (NacosException) ne.getCause();
} catch (NacosException e) {
NacosException cause = (NacosException) e.getCause();
assertEquals(HttpStatus.SC_FORBIDDEN, cause.getErrCode());
}
namingService.shutDown();
@ -132,8 +135,8 @@ class NamingAuth_ITCase extends AuthBase {
try {
namingService.getAllInstances("test.1");
fail();
} catch (NacosException ne) {
NacosException cause = (NacosException) ne.getCause();
} catch (NacosException e) {
NacosException cause = (NacosException) e.getCause();
assertEquals(HttpStatus.SC_FORBIDDEN, cause.getErrCode());
}

View File

@ -42,14 +42,17 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Integration tests for Nacos permission management with various scenarios.
*
* @author nkorange
* @since 1.2.0
*/
//todo fix this test case
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Nacos.class, properties = {
"server.servlet.context-path=/nacos"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class Permission_ITCase extends HttpClient4Test {
class PermissionCoreITCase extends HttpClient4Test {
@LocalServerPort
private int port;
@ -68,29 +71,31 @@ class Permission_ITCase extends HttpClient4Test {
// Delete permission:
ResponseEntity<String> response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*").appendParam("action", "rw")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*")
.appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*").appendParam("action", "r")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*")
.appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role1").appendParam("username", "username3").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("username", "username3")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username3").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
Params.newParams().appendParam("username", "username3").appendParam("accessToken", accessToken).done(),
String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
}
@ -99,7 +104,8 @@ class Permission_ITCase extends HttpClient4Test {
void login() {
ResponseEntity<String> response = request("/nacos/v1/auth/users/login",
Params.newParams().appendParam("username", "nacos").appendParam("password", "nacos").done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("username", "nacos").appendParam("password", "nacos").done(),
String.class, HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
JsonNode json = JacksonUtils.toObj(response.getBody());
@ -121,22 +127,24 @@ class Permission_ITCase extends HttpClient4Test {
// Create role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role1").appendParam("username", "username3").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", "role1").appendParam("username", "username3")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Create permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*").appendParam("action", "rw")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*")
.appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Create another permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*").appendParam("action", "r")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*")
.appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -154,7 +162,8 @@ class Permission_ITCase extends HttpClient4Test {
assertNotNull(permissionPage);
assertNotNull(permissionPage.getPageItems());
boolean found1 = false, found2 = false;
boolean found1 = false;
boolean found2 = false;
for (Permission permission : permissionPage.getPageItems()) {
if (permission.getResource().equals("public:*:*") && permission.getAction().equals("rw")) {
found1 = true;
@ -171,8 +180,9 @@ class Permission_ITCase extends HttpClient4Test {
// Delete permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*").appendParam("action", "rw")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("resource", "public:*:*")
.appendParam("action", "rw").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -205,8 +215,9 @@ class Permission_ITCase extends HttpClient4Test {
// Delete permission:
response = request("/nacos/v1/auth/permissions",
Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*").appendParam("action", "r")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("resource", "test1:*:*")
.appendParam("action", "r").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());

View File

@ -41,13 +41,16 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Integration tests for Nacos role management, including role creation, deletion, and querying.
*
* @author nkorange
* @since 1.2.0
*/
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
@SpringBootTest(classes = Nacos.class, properties = {
"server.servlet.context-path=/nacos"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@Disabled("todo fix this test case")
class Role_ITCase extends HttpClient4Test {
class RoleCoreITCase extends HttpClient4Test {
@LocalServerPort
private int port;
@ -66,22 +69,22 @@ class Role_ITCase extends HttpClient4Test {
// Delete role:
ResponseEntity<String> response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role1").appendParam("username", "username2").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("username", "username2")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role2").appendParam("username", "username2").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role2").appendParam("username", "username2")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username2").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
Params.newParams().appendParam("username", "username2").appendParam("accessToken", accessToken).done(),
String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
}
@ -90,7 +93,8 @@ class Role_ITCase extends HttpClient4Test {
void login() {
ResponseEntity<String> response = request("/nacos/v1/auth/users/login",
Params.newParams().appendParam("username", "nacos").appendParam("password", "nacos").done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("username", "nacos").appendParam("password", "nacos").done(),
String.class, HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
JsonNode json = JacksonUtils.toObj(response.getBody());
@ -112,15 +116,16 @@ class Role_ITCase extends HttpClient4Test {
// Create a role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role1").appendParam("username", "username2").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", "role1").appendParam("username", "username2")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Query role of user:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1").appendParam("pageSize", "10")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1")
.appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.GET);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -140,15 +145,16 @@ class Role_ITCase extends HttpClient4Test {
// Add second role to user:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role2").appendParam("username", "username2").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.POST);
Params.newParams().appendParam("role", "role2").appendParam("username", "username2")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.POST);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Query roles of user:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1").appendParam("pageSize", "10")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1")
.appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.GET);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -175,15 +181,16 @@ class Role_ITCase extends HttpClient4Test {
// Delete role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role2").appendParam("username", "username2").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role2").appendParam("username", "username2")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Query roles of user:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1").appendParam("pageSize", "10")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1")
.appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.GET);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -207,15 +214,16 @@ class Role_ITCase extends HttpClient4Test {
// Delete role:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("role", "role1").appendParam("username", "username2").appendParam("accessToken", accessToken)
.done(), String.class, HttpMethod.DELETE);
Params.newParams().appendParam("role", "role1").appendParam("username", "username2")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Query roles of user:
response = request("/nacos/v1/auth/roles",
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1").appendParam("pageSize", "10")
.appendParam("accessToken", accessToken).done(), String.class, HttpMethod.GET);
Params.newParams().appendParam("username", "username2").appendParam("pageNo", "1")
.appendParam("pageSize", "10").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.GET);
assertTrue(response.getStatusCode().is2xxSuccessful());

View File

@ -45,13 +45,16 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Integration tests for user management in Nacos, including user creation, deletion, updating, and permissions.
*
* @author nkorange
* @since 1.2.0
*/
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Nacos.class, properties = {
"server.servlet.context-path=/nacos"}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class User_ITCase extends HttpClient4Test {
class UserCoreITCase extends HttpClient4Test {
@LocalServerPort
private int port;
@ -70,25 +73,23 @@ class User_ITCase extends HttpClient4Test {
// Delete a user:
ResponseEntity<String> response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username1").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
Params.newParams().appendParam("username", "username1").appendParam("accessToken", accessToken).done(),
String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
// Delete a user:
request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username2").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
Params.newParams().appendParam("username", "username2").appendParam("accessToken", accessToken).done(),
String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
System.setProperty("nacos.core.auth.enabled", "false");
}
@Test
void login() {
ResponseEntity<String> response = login("nacos", "nacos");
assertTrue(response.getStatusCode().is2xxSuccessful());
JsonNode json = JacksonUtils.toObj(response.getBody());
@ -98,8 +99,8 @@ class User_ITCase extends HttpClient4Test {
private ResponseEntity<String> login(String username, String password) {
return request("/nacos/v1/auth/users/login",
Params.newParams().appendParam("username", username).appendParam("password", password).done(), String.class,
HttpMethod.POST);
Params.newParams().appendParam("username", username).appendParam("password", password).done(),
String.class, HttpMethod.POST);
}
@Test
@ -130,7 +131,8 @@ class User_ITCase extends HttpClient4Test {
boolean found = false;
for (User user : userPage.getPageItems()) {
if ("username1".equals(user.getUsername()) && PasswordEncoderUtil.matches("password1", user.getPassword())) {
if ("username1".equals(user.getUsername()) && PasswordEncoderUtil.matches("password1",
user.getPassword())) {
found = true;
break;
}
@ -158,7 +160,8 @@ class User_ITCase extends HttpClient4Test {
found = false;
for (User user : userPage.getPageItems()) {
if ("username1".equals(user.getUsername()) && PasswordEncoderUtil.matches("password2", user.getPassword())) {
if ("username1".equals(user.getUsername()) && PasswordEncoderUtil.matches("password2",
user.getPassword())) {
found = true;
break;
}
@ -167,8 +170,8 @@ class User_ITCase extends HttpClient4Test {
// Delete a user:
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username1").appendParam("accessToken", accessToken).done(), String.class,
HttpMethod.DELETE);
Params.newParams().appendParam("username", "username1").appendParam("accessToken", accessToken).done(),
String.class, HttpMethod.DELETE);
assertTrue(response.getStatusCode().is2xxSuccessful());
@ -216,11 +219,9 @@ class User_ITCase extends HttpClient4Test {
// user login
response = login("username1", "password1");
String user1AccessToken = JacksonUtils.toObj(response.getBody()).get("accessToken").textValue();
assertTrue(response.getStatusCode().is2xxSuccessful());
response = login("username2", "password2");
String user2AccessToken = JacksonUtils.toObj(response.getBody()).get("accessToken").textValue();
assertTrue(response.getStatusCode().is2xxSuccessful());
// update by admin
@ -230,12 +231,14 @@ class User_ITCase extends HttpClient4Test {
assertTrue(response.getStatusCode().is2xxSuccessful());
// update by same user
String user1AccessToken = JacksonUtils.toObj(response.getBody()).get("accessToken").textValue();
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username1").appendParam("newPassword", "password4")
.appendParam("accessToken", user1AccessToken).done(), String.class, HttpMethod.PUT);
assertTrue(response.getStatusCode().is2xxSuccessful());
// update by another user
String user2AccessToken = JacksonUtils.toObj(response.getBody()).get("accessToken").textValue();
response = request("/nacos/v1/auth/users",
Params.newParams().appendParam("username", "username1").appendParam("newPassword", "password5")
.appendParam("accessToken", user2AccessToken).done(), String.class, HttpMethod.PUT);