[IT]Adjust core module auth integration tests to meet checkstyle requirements. (#12368)
This commit is contained in:
parent
6c05ad5497
commit
9d0a48d54f
@ -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());
|
||||
|
@ -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) {
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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());
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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());
|
||||
|
@ -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);
|
Loading…
Reference in New Issue
Block a user