From b8a2e4c3a37916025ae6e49e3265b2aa5825c963 Mon Sep 17 00:00:00 2001 From: Jemin Seo Date: Thu, 6 Mar 2025 22:13:21 +0900 Subject: [PATCH] feat: add user role enum (#57) * feat: add user role enum Signed-off-by: Jemin * fix: remove unuse codes Signed-off-by: Jemin --------- Signed-off-by: Jemin --- src/main/java/io/litmuschaos/enums/Role.java | 6 + .../request/UserCreateRequest.java | 9 +- src/test/java/io/litmuschaos/AuthTest.java | 19 - src/test/java/io/litmuschaos/InviteTest.java | 197 ------- .../java/io/litmuschaos/LitmusClientTest.java | 112 +--- .../java/io/litmuschaos/MockLitmusClient.java | 530 ------------------ src/test/java/io/litmuschaos/UserTest.java | 141 +---- 7 files changed, 17 insertions(+), 997 deletions(-) create mode 100644 src/main/java/io/litmuschaos/enums/Role.java delete mode 100644 src/test/java/io/litmuschaos/InviteTest.java delete mode 100644 src/test/java/io/litmuschaos/MockLitmusClient.java diff --git a/src/main/java/io/litmuschaos/enums/Role.java b/src/main/java/io/litmuschaos/enums/Role.java new file mode 100644 index 0000000..396f48c --- /dev/null +++ b/src/main/java/io/litmuschaos/enums/Role.java @@ -0,0 +1,6 @@ +package io.litmuschaos.enums; + +public enum Role { + admin, + user +} diff --git a/src/main/java/io/litmuschaos/request/UserCreateRequest.java b/src/main/java/io/litmuschaos/request/UserCreateRequest.java index 7fababd..dcd0d23 100644 --- a/src/main/java/io/litmuschaos/request/UserCreateRequest.java +++ b/src/main/java/io/litmuschaos/request/UserCreateRequest.java @@ -1,12 +1,13 @@ package io.litmuschaos.request; +import io.litmuschaos.enums.Role; import io.litmuschaos.util.Builder; public class UserCreateRequest { private final String username; private final String password; - private final String role; + private final Role role; private final String email; private final String name; @@ -26,7 +27,7 @@ public String getPassword() { return password; } - public String getRole() { + public Role getRole() { return role; } @@ -45,7 +46,7 @@ public static UserCreateRequestBuilder builder(){ public static class UserCreateRequestBuilder implements Builder { private String username; private String password; - private String role; + private Role role; private String email; private String name; @@ -59,7 +60,7 @@ public UserCreateRequestBuilder password(String password) { return this; } - public UserCreateRequestBuilder role(String role) { + public UserCreateRequestBuilder role(Role role) { this.role = role; return this; } diff --git a/src/test/java/io/litmuschaos/AuthTest.java b/src/test/java/io/litmuschaos/AuthTest.java index d8f1c27..d9459bf 100644 --- a/src/test/java/io/litmuschaos/AuthTest.java +++ b/src/test/java/io/litmuschaos/AuthTest.java @@ -28,23 +28,4 @@ public void testCapabilityAPI() throws IOException, LitmusApiException { .isInstanceOf(CapabilityResponse.class) .hasFieldOrProperty("Dex"); } - -// @Test -// public void testAuthenticationAPI() throws IOException, LitmusApiException { -// LoginRequest request = LoginRequest.builder().username(username).password(password).build(); -// assertThat(authClient.authenticate(request)) -// .isNotNull() -// .isInstanceOf(LoginResponse.class); -// } -// -// @Test -// public void testAuthenticationAPIFail() { -// // Given -// String wrongPassword = "litmus1234"; -// LoginRequest request = LoginRequest.builder().username(username).password(wrongPassword).build(); -// -// // When & Then -// assertThatThrownBy(() -> authClient.authenticate(request)) -// .isInstanceOf(UnauthorizedException.class); -// } } diff --git a/src/test/java/io/litmuschaos/InviteTest.java b/src/test/java/io/litmuschaos/InviteTest.java deleted file mode 100644 index 90cc77b..0000000 --- a/src/test/java/io/litmuschaos/InviteTest.java +++ /dev/null @@ -1,197 +0,0 @@ -//import io.litmuschaos.LitmusClient; -//import io.litmuschaos.exception.LitmusApiException; -//import io.litmuschaos.request.*; -//import io.litmuschaos.response.*; -//import org.junit.jupiter.api.BeforeAll; -//import org.junit.jupiter.api.Test; -// -//import java.io.IOException; -//import java.security.SecureRandom; -//import java.util.Arrays; -//import java.util.List; -//import java.util.UUID; -// -//import static org.assertj.core.api.Assertions.assertThat; -// -//public class InviteTest { -// -// private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; -// private static final SecureRandom RANDOM = new SecureRandom(); -// private static final String HOST_URL = "http://localhost:3000"; -// private static final String TEST_TOKEN = "Bearer token"; -// private static final String oldPassword = "Litmus12345!"; -// -// private static final String TEST_USER_ROLE = "admin"; -// private static final String TEST_USER_EMAIL = "test@test.com"; -// private static final String TEST_USER_NAME = "userTestName"; -// -// private static LitmusClient litmusClient; -// private static UserResponse user; -// private static String projectId; -// private static String userId; -// private static String invitee; -// -// @BeforeAll -// public static void setupClient() throws IOException, LitmusApiException { -// litmusClient = new LitmusClient(HOST_URL, TEST_TOKEN); -// projectId = createProjectAndGetId(); -// String userTestName = generateRandomUsername(); -// user = createPasswordUpdatedTestUser(userTestName, oldPassword, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME, password); -// userId = user.getUserID(); -// invitee = user.getUsername(); -// } -// -// public static String generateRandomUsername() { -// StringBuilder sb = new StringBuilder(6); -// for (int i = 0; i < 6; i++) { -// sb.append(ALPHABET.charAt(RANDOM.nextInt(ALPHABET.length()))); -// } -// return sb.toString(); -// } -// -// private static String generateUniqueProjectName(String baseName) { -// return baseName + "-" + UUID.randomUUID().toString(); -// } -// -// private static UserResponse createPasswordUpdatedTestUser(String username, String password, String role, -// String email, String name, String newPassword) throws LitmusApiException, IOException { -// -// UserResponse user = createTestUser(username, password, role, email, name); -// litmusClient.authenticate(LoginRequest.builder().username(username).password(password).build()); -// PasswordUpdateRequest passwordUpdateRequest = PasswordUpdateRequest.builder() -// .username(username) -// .oldPassword(password) -// .newPassword(newPassword) -// .build(); -// litmusClient.updatePassword(passwordUpdateRequest); -// return litmusClient.getUser(user.getUserID()); -// } -// -// private static UserResponse createTestUser( -// String username, String password, String role, String email, String name -// ) throws LitmusApiException, IOException { -// UserCreateRequest request = UserCreateRequest.builder(). -// username(username) -// .password(password) -// .role(role) -// .email(email) -// .name(name).build(); -// return litmusClient.createUser(request); -// } -// -// private static String createProjectAndGetId() throws IOException, LitmusApiException { -// String projectName = generateUniqueProjectName("Temporary Project"); -// String description = "This is a temporary project."; -// List tags = Arrays.asList("tag1", "tag2"); -// -// CreateProjectRequest request = CreateProjectRequest.builder() -// .projectName(projectName) -// .description(description) -// .tags(tags) -// .build(); -// -// ProjectResponse response = litmusClient.createProject(request); -// return response.getProjectID(); -// } -// -// public static SendInvitationResponse createInvite(String project, String user) throws IOException, LitmusApiException { -// litmusClient.authenticate(LoginRequest.builder().username(username).password(password).build()); -// SendInvitationRequest request = SendInvitationRequest.builder() -// .projectId(project) -// .userId(user) -// .role("Viewer") -// .build(); -// -// return litmusClient.sendInvitation(request); -// } -// -// @Test -// public void testCreateInvite() throws IOException, LitmusApiException { -// SendInvitationResponse response = createInvite(projectId, userId); -// assertThat(response.getUserID()).isEqualTo(userId); -// } -// -// @Test -// public void testAcceptInvitation() throws IOException, LitmusApiException { -// createInvite(projectId, userId); -// AcceptInvitationRequest request = AcceptInvitationRequest.builder() -// .projectId(projectId) -// .userId(userId) -// .build(); -// -// litmusClient.authenticate(LoginRequest.builder().username(invitee).password(password).build()); -// CommonResponse response = litmusClient.acceptInvitation(request); -// assertThat(response.getMessage()).isEqualTo("Successful"); -// } -// -// @Test -// public void testDeclineInvitation() throws IOException, LitmusApiException { -// createInvite(projectId, userId); -// -// DeclineInvitationRequest request = DeclineInvitationRequest.builder() -// .projectId(projectId) -// .userId(userId) -// .build(); -// -// litmusClient.authenticate(LoginRequest.builder().username(invitee).password(password).build()); -// CommonResponse response = litmusClient.declineInvitation(request); -// assertThat(response.getMessage()).isEqualTo("Successful"); -// } -// -// @Test -// public void testRemoveInvitation() throws IOException, LitmusApiException { -// String userTestName = generateRandomUsername(); -// user = createPasswordUpdatedTestUser(userTestName, oldPassword, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME, password); -// userId = user.getUserID(); -// invitee = user.getUsername(); -// createInvite(projectId, userId); -// RemoveInvitationRequest request = RemoveInvitationRequest.builder() -// .projectId(projectId) -// .userId(userId) -// .build(); -// -// litmusClient.authenticate(LoginRequest.builder().username(username).password(password).build()); -// CommonResponse response = litmusClient.removeInvitation(request); -// assertThat(response.getMessage()).isEqualTo("Successful"); -// } -// -// @Test -// public void testListInvitation() throws IOException, LitmusApiException { -// String userTestName = generateRandomUsername(); -// user = createPasswordUpdatedTestUser(userTestName, oldPassword, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME, password); -// userId = user.getUserID(); -// invitee = user.getUsername(); -// createInvite(projectId, userId); -// -// litmusClient.authenticate(LoginRequest.builder().username(invitee).password(password).build()); -// List response = litmusClient.listInvitation("Pending"); -// assertThat(response.size()).isEqualTo(1); -// } -// -// @Test -// public void testInviteUsers() throws IOException, LitmusApiException { -// litmusClient.authenticate(LoginRequest.builder().username(username).password(password).build()); -// -// List tags = Arrays.asList("tag1", "tag2"); -// String projectName = generateUniqueProjectName("Temporary Project"); -// CreateProjectRequest projectRequest = CreateProjectRequest.builder() -// .projectName(projectName) -// .description("testDescription") -// .tags(tags) -// .build(); -// -// ProjectResponse projectResponse = litmusClient.createProject(projectRequest); -// List response1 = litmusClient.inviteUsers(projectResponse.getProjectID()); -// -// String userTestName = generateRandomUsername(); -// createPasswordUpdatedTestUser(userTestName, oldPassword, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME, password); -// -// litmusClient.authenticate(LoginRequest.builder().username(username).password(password).build()); -// List response2 = litmusClient.inviteUsers(projectResponse.getProjectID()); -// -// litmusClient.deleteProject(projectId); -// -// assertThat(response2.size()).isEqualTo(response1.size() + 1); -// } -// -//} diff --git a/src/test/java/io/litmuschaos/LitmusClientTest.java b/src/test/java/io/litmuschaos/LitmusClientTest.java index 3615bf7..3fd5edc 100644 --- a/src/test/java/io/litmuschaos/LitmusClientTest.java +++ b/src/test/java/io/litmuschaos/LitmusClientTest.java @@ -1,5 +1,6 @@ package io.litmuschaos; +import io.litmuschaos.enums.Role; import io.litmuschaos.exception.LitmusApiException; import io.litmuschaos.generated.client.*; import io.litmuschaos.generated.types.*; @@ -14,7 +15,7 @@ class LitmusClientTest { - private static final String HOST_URL = "http://localhost:54525"; // your frontend url here + private static final String HOST_URL = "http://localhost:53042"; // your frontend url here private static final String TEST_TOKEN = "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ4OTE1ODQwNzMsInJvbGUiOiJhZG1pbiIsInVpZCI6ImI1NWVlMzQwLWZiNzMtNDAyYy1hN2QwLWUxM2QzY2JiYTczOCIsInVzZXJuYW1lIjoiYWRtaW4ifQ.1bwzyAyAgW9ba7JgqaLXEomoEer-WtfyDaSqlwAdwLlKagt9lRjgaDcSm20YprsTqvM164eOSGu7FUhlOxZ81w"; // your API token here. private final LitmusClient litmusClient = new LitmusClient(HOST_URL,TEST_TOKEN); @@ -78,7 +79,7 @@ void createUser() throws IOException, LitmusApiException { UserCreateRequest request = UserCreateRequest.builder() .username("test_username") .password("test password") - .role("admin") // Role can be admin, user + .role(Role.user) // Role can be admin, user .email("test@litmus.com") .build(); UserResponse response = litmusClient.createUser(request); @@ -559,7 +560,6 @@ void getInfraStats() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(GetInfraStatsResponse.class); } - // TODO: NOT TESTED, it is used in litmus but when i call API, result not exist @Test void getInfraManifest() throws LitmusApiException, IOException { GetInfraManifestGraphQLQuery query = new GetInfraManifestGraphQLQuery.Builder() @@ -573,7 +573,6 @@ void getInfraManifest() throws LitmusApiException, IOException { } - // TODO: NOT TESTED @Test void confirmInfraRegistration() throws LitmusApiException, IOException { ConfirmInfraRegistrationGraphQLQuery query = new ConfirmInfraRegistrationGraphQLQuery.Builder() @@ -723,7 +722,6 @@ void addChaosHub() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(ChaosHub.class); } - // TODO: NOT TESTED, may not used @Test void addRemoteChaosHub() throws LitmusApiException, IOException { AddRemoteChaosHubGraphQLQuery query = new AddRemoteChaosHubGraphQLQuery.Builder() @@ -980,7 +978,6 @@ void updateChaosExperiment() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(ChaosExperimentResponse.class); } - // TODO: NOT TESTED, may be not used @Test void createChaosExperiment() throws LitmusApiException, IOException { CreateChaosExperimentGraphQLQuery query = new CreateChaosExperimentGraphQLQuery.Builder() @@ -1108,7 +1105,6 @@ void listExperimentRun() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(ListExperimentRunResponse.class); } - // TODO: NOT TESTED, may be not used @Test void chaosExperimentRun() throws LitmusApiException, IOException { ChaosExperimentRunGraphQLQuery query = new ChaosExperimentRunGraphQLQuery.Builder() @@ -1161,7 +1157,6 @@ void disableGitOps() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(DisableGitOpsResponse.class); } - // TODO: NOT TESTED @Test void enableGitOps() throws LitmusApiException, IOException { EnableGitOpsGraphQLQuery query = new EnableGitOpsGraphQLQuery.Builder() @@ -1179,7 +1174,6 @@ void enableGitOps() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(EnableGitOpsResponse.class); } - // TODO: NOT TESTED @Test void gitopsNotifier() throws LitmusApiException, IOException { GitopsNotifierGraphQLQuery query = new GitopsNotifierGraphQLQuery.Builder() @@ -1195,7 +1189,6 @@ void gitopsNotifier() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(GitOpsNotifierResponse.class); } - // TODO: NOT TESTED @Test void updateGitOps() throws LitmusApiException, IOException { UpdateGitOpsGraphQLQuery query = new UpdateGitOpsGraphQLQuery.Builder() @@ -1243,7 +1236,6 @@ void listImageRegistry() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(List.class); } - // TODO: NOT TESTED @Test void createImageRegistry() throws LitmusApiException, IOException { CreateImageRegistryGraphQLQuery query = new CreateImageRegistryGraphQLQuery.Builder() @@ -1265,7 +1257,6 @@ void createImageRegistry() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(ImageRegistryResponse.class); } - // TODO: NOT TESTED @Test void deleteImageRegistry() throws LitmusApiException, IOException { DeleteImageRegistryGraphQLQuery query = new DeleteImageRegistryGraphQLQuery.Builder() @@ -1277,7 +1268,6 @@ void deleteImageRegistry() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(DeleteImageRegistryResponse.class); } - // TODO: NOT TESTED @Test void updateImageRegistry() throws LitmusApiException, IOException { UpdateImageRegistryGraphQLQuery query = new UpdateImageRegistryGraphQLQuery.Builder() @@ -1558,7 +1548,6 @@ void generateSSHKey() throws LitmusApiException, IOException { assertThat(response).isInstanceOf(SSHKey.class); } - // TODO: NOT TESTED @Test void getManifestWithInfraID() throws LitmusApiException, IOException { GetManifestWithInfraIDGraphQLQuery query = new GetManifestWithInfraIDGraphQLQuery.Builder() @@ -1570,99 +1559,4 @@ void getManifestWithInfraID() throws LitmusApiException, IOException { GetManifestWithInfraIDResponse response = litmusClient.getManifestWithInfraID(query); assertThat(response).isInstanceOf(GetManifestWithInfraIDResponse.class); } - - // subscription is not supported in current version -// @Test -// void getInfraEvents(){ -// GetInfraEventsGraphQLQuery query = new GetInfraEventsGraphQLQuery.Builder() -// .projectID("d6f0b5cb-0088-4732-8c2f-4193419103de") -// .build(); -// -// GetInfraEventsProjectionRoot projectionRoot = new GetInfraEventsProjectionRoot<>() -// .eventID() -// .description() -// .eventName() -// .eventType(); -// -// InfraEventResponse response = litmusClient.getInfraEvents(query, projectionRoot); -// assertThat(response).isInstanceOf(InfraEventResponse.class); -// } -// -// @Test -// void getKubeNamespace(){ -// GetKubeNamespaceGraphQLQuery query = new GetKubeNamespaceGraphQLQuery.Builder() -// .request(KubeNamespaceRequest.newBuilder() -// .infraID("6c54cea0-16e1-4d7b-bf96-ece11c82a7e4") -// .build()) -// .build(); -// -// GetKubeNamespaceProjectionRoot projectionRoot = new GetKubeNamespaceProjectionRoot<>() -// .infraID() -// .kubeNamespace().name().root(); -// -// KubeNamespaceResponse response = litmusClient.getKubeNamespace(query, projectionRoot); -// assertThat(response).isInstanceOf(KubeNamespaceResponse.class); -// } -// -// @Test -// void getKubeObject(){ -// GetKubeObjectGraphQLQuery query = new GetKubeObjectGraphQLQuery.Builder() -// .request(KubeObjectRequest.newBuilder() -// .namespace("default") -// .objectType("kubeobject") -// .infraID("6c54cea0-16e1-4d7b-bf96-ece11c82a7e4") -// .kubeObjRequest(KubeGVRRequest.newBuilder() -// .group("apps") -// .resource("deployments") -// .version("v1") -// .build()) -// .build()) -// .build(); -// -// GetKubeObjectProjectionRoot projectionRoot = new GetKubeObjectProjectionRoot<>() -// .infraID() -// .kubeObj().data().labels().root(); -// -// KubeObjectResponse response = litmusClient.getKubeObject(query, projectionRoot); -// assertThat(response).isInstanceOf(KubeObjectResponse.class); -// } -// -// @Test -// void getPodLog(){ -// GetPodLogGraphQLQuery query = new GetPodLogGraphQLQuery.Builder() -// .request(PodLogRequest.newBuilder() -// .infraID("4357805a-c932-4f9d-a3c5-cc1e3b3693a4") -// .experimentRunID("2be2bcdf-0d1e-4b9a-9ec8-03068272e1bc") -// .podName("test-experiment-1737970826261-2717703891") -// .podNamespace("litmus") -// .podType("Pod") -// .build()) -// .build(); -// -// GetPodLogProjectionRoot projectionRoot = new GetPodLogProjectionRoot<>() -// .log() -// .experimentRunID(); -// -// PodLogResponse response = litmusClient.getPodLog(query, projectionRoot); -// assertThat(response).isInstanceOf(PodLogResponse.class); -// } -// -// // is it work? -// @Test -// void infraConnect(){ -// InfraConnectGraphQLQuery query = new InfraConnectGraphQLQuery.Builder() -// .request(InfraIdentity.newBuilder() -// .version("test") -// .accessKey("test") -// .infraID("a53f0ffc-d8df-4963-8701-c1b6de179531") -// .build()) -// .build(); -// -// InfraConnectProjectionRoot projectionRoot = new InfraConnectProjectionRoot<>() -// .projectID() -// .action().externalData().root(); -// -// InfraActionResponse response = litmusClient.infraConnect(query, projectionRoot); -// assertThat(response).isInstanceOf(InfraActionResponse.class); -// } } diff --git a/src/test/java/io/litmuschaos/MockLitmusClient.java b/src/test/java/io/litmuschaos/MockLitmusClient.java deleted file mode 100644 index ef7210b..0000000 --- a/src/test/java/io/litmuschaos/MockLitmusClient.java +++ /dev/null @@ -1,530 +0,0 @@ -package io.litmuschaos; - -import io.litmuschaos.exception.LitmusApiException; -import io.litmuschaos.generated.client.*; -import io.litmuschaos.generated.types.*; -import io.litmuschaos.request.*; -import io.litmuschaos.response.*; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class MockLitmusClient { - - public MockLitmusClient(String host, String token) { - } - - public ListTokensResponse getTokens(String userId) throws IOException, LitmusApiException { - List tokens = new ArrayList<>(); - return new ListTokensResponse(tokens); - } - - public TokenCreateResponse createToken(TokenCreateRequest request) throws IOException, LitmusApiException { - return new TokenCreateResponse("litmus token", "Bearer"); - } - - public CommonResponse deleteToken(TokenDeleteRequest request) throws IOException, LitmusApiException { - return new CommonResponse("Token deleted successfully"); - } - - public UserResponse getUser(String userId) throws IOException, LitmusApiException { - return new UserResponse.Builder().build(); - } - - public List getUsers() throws IOException, LitmusApiException { - List users = new ArrayList<>(); - return users; - } - - public PasswordUpdateResponse updatePassword(PasswordUpdateRequest request) throws IOException, LitmusApiException { - return new PasswordUpdateResponse("Password updated successfully", "mockProjectId"); - } - - public UserResponse createUser(UserCreateRequest request) throws IOException, LitmusApiException { - return new UserResponse.Builder().build(); - } - - public CommonResponse resetPassword(PasswordResetRequest request) throws IOException, LitmusApiException { - return new CommonResponse("Password reset successfully"); - } - - public CommonResponse updateUserDetails(UserDetailsUpdateRequest request) throws IOException, LitmusApiException { - return new CommonResponse("User details updated successfully"); - } - - public CommonResponse updateUserState(UserStateUpdateRequest request) throws IOException, LitmusApiException { - return new CommonResponse("User state updated successfully"); - } - - public CapabilityResponse capabilities() throws IOException, LitmusApiException { - return new CapabilityResponse(); - } - - public ListProjectsResponse listProjects(ListProjectRequest request) throws IOException, LitmusApiException { - List projects = new ArrayList<>(); - return new ListProjectsResponse(projects, 2); - } - - public ProjectResponse createProject(CreateProjectRequest request) throws IOException, LitmusApiException { - return new ProjectResponse( - System.currentTimeMillis(), - System.currentTimeMillis(), - new ProjectResponse.CreatedBy("creatorId", "creatorUsername", "creator@example.com"), - new ProjectResponse.UpdatedBy("updaterId", "updaterUsername", "updater@example.com"), - false, - "projectId", - "litmus", - new ArrayList<>(), - "mockState", - new ArrayList<>(), - "mockDescription" - ); - } - - public CommonResponse updateProjectName(ProjectNameRequest request) throws IOException, LitmusApiException { - return new CommonResponse("Project name updated successfully"); - } - - public ProjectResponse getProject(String projectId) throws IOException, LitmusApiException { - return new ProjectResponse( - System.currentTimeMillis(), - System.currentTimeMillis() - 100000, - new ProjectResponse.CreatedBy("creatorId", "creatorUsername", "creator@example.com"), - new ProjectResponse.UpdatedBy("updaterId", "updaterUsername", "updater@example.com"), - false, - "litmus", - "litmus", - new ArrayList<>(), - "status", - new ArrayList<>(), - "description" - ); - } - - public List getOwnerProjects() throws IOException, LitmusApiException { - List projects = new ArrayList<>(); - return projects; - } - - public CommonResponse leaveProject(LeaveProjectRequest request) throws IOException, LitmusApiException { - return new CommonResponse("User left project successfully"); - } - - public ProjectRoleResponse getProjectRole(String projectId) throws IOException, LitmusApiException { - return new ProjectRoleResponse("Viewer"); - } - - public UserWithProjectResponse getUserWithProject(String username) throws IOException, LitmusApiException { - List projects = new ArrayList<>(); - return new UserWithProjectResponse( - System.currentTimeMillis(), - System.currentTimeMillis(), - new ProjectResponse.CreatedBy("creatorId", "creatorUsername", "creator@example.com"), - new ProjectResponse.UpdatedBy("updaterId", "updaterUsername", "updater@example.com"), - false, - "id", - username, - "email", - "name", - projects - ); - } - - public List getProjectsStats() throws IOException, LitmusApiException { - List stats = new ArrayList<>(); - return stats; - } - - public List getProjectMembers(String projectID, String status) throws IOException, LitmusApiException { - List members = new ArrayList<>(); - return members; - } - - public List getProjectOwners(String projectID) throws IOException, LitmusApiException { - List owners = new ArrayList<>(); - return owners; - } - - public CommonResponse deleteProject(String projectID) throws IOException, LitmusApiException { - return new CommonResponse("Project deleted successfully"); - } - - public SendInvitationResponse sendInvitation(SendInvitationRequest request) throws IOException, LitmusApiException { - return new SendInvitationResponse( - "userID", - "username", - "name", - "role", - "email", - "invitation", - "joinedAt", - "deactivatedAt" - ); - } - - public CommonResponse acceptInvitation(AcceptInvitationRequest request) throws IOException, LitmusApiException { - // Mock implementation - return new CommonResponse("Successful"); - } - - public CommonResponse declineInvitation(DeclineInvitationRequest request) throws IOException, LitmusApiException { - // Mock implementation - return new CommonResponse("Successful"); - } - - public CommonResponse removeInvitation(RemoveInvitationRequest request) throws IOException, LitmusApiException { - // Mock implementation - return new CommonResponse("Successful"); - } - - public List listInvitation(String status) throws IOException, LitmusApiException { - List responses = new ArrayList<>(); - return responses; - } - - public List inviteUsers(String projectId) throws IOException, LitmusApiException { - List responses = new ArrayList<>(); - return responses; - } - - public CommonResponse updateMemberRole(UpdateMemberRoleRequest request) throws IOException, LitmusApiException { - // Mock implementation - return new CommonResponse("Successful"); - } - - public StatusResponse status() throws IOException, LitmusApiException { - return new StatusResponse("Healthy"); - } - - public ReadinessResponse readiness() throws IOException, LitmusApiException { - return new ReadinessResponse("database","collections"); - } - - public Environment getEnvironment(GetEnvironmentGraphQLQuery query, GetEnvironmentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ListEnvironmentResponse listEnvironments(ListEnvironmentsGraphQLQuery query, ListEnvironmentsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public Environment createEnvironment(CreateEnvironmentGraphQLQuery query, CreateEnvironmentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public DeleteEnvironmentResponse deleteEnvironment(DeleteEnvironmentGraphQLQuery query) { - // Mock implementation - return null; - } - - public UpdateEnvironmentResponse updateEnvironment(UpdateEnvironmentGraphQLQuery query) { - // Mock implementation - return null; - } - - public Infra getInfra(GetInfraGraphQLQuery query, GetInfraProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ListInfraResponse listInfras(ListInfrasGraphQLQuery query, ListInfrasProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public Infra getInfraDetails(GetInfraDetailsGraphQLQuery query, GetInfraDetailsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public GetInfraStatsResponse getInfraStats(GetInfraStatsGraphQLQuery query, GetInfraStatsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public GetInfraManifestResponse getInfraManifest(GetInfraManifestGraphQLQuery query) { - // Mock implementation - return null; - } - - public ConfirmInfraRegistrationResponse confirmInfraRegistration(ConfirmInfraRegistrationGraphQLQuery query, ConfirmInfraRegistrationProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public DeleteInfraResponse deleteInfra(DeleteInfraGraphQLQuery query) { - // Mock implementation - return null; - } - - public RegisterInfraResponse registerInfra(RegisterInfraGraphQLQuery query, RegisterInfraProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public List listChaosHub(ListChaosHubGraphQLQuery query, ListChaosHubProjectionRoot projectionRoot) { - return null; - } - - public ChaosHubStatus getChaosHub(GetChaosHubGraphQLQuery query, GetChaosHubProjectionRoot projectionRoot) { - return null; - } - - public GetChaosHubStatsResponse getChaosHubStats(GetChaosHubStatsGraphQLQuery query, GetChaosHubStatsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ChaosHub addChaosHub(AddChaosHubGraphQLQuery query, AddChaosHubProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ChaosHub addRemoteChaosHub(AddRemoteChaosHubGraphQLQuery query, AddRemoteChaosHubProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public DeleteChaosHubResponse deleteChaosHub(DeleteChaosHubGraphQLQuery query) { - // Mock implementation - return null; - } - - public ChaosHub saveChaosHub(SaveChaosHubGraphQLQuery query, SaveChaosHubProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public SyncChaosHubResponse syncChaosHub(SyncChaosHubGraphQLQuery query) { - // Mock implementation - return null; - } - - public ChaosHub updateChaosHub(UpdateChaosHubGraphQLQuery query, UpdateChaosHubProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public GetExperimentResponse getExperiment(GetExperimentGraphQLQuery query, GetExperimentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ListExperimentResponse listExperiment(ListExperimentGraphQLQuery query, ListExperimentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public GetExperimentStatsResponse getExperimentStats(GetExperimentStatsGraphQLQuery query, GetExperimentStatsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public List getPredefinedExperiment(GetPredefinedExperimentGraphQLQuery query, GetPredefinedExperimentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public List listPredefinedExperiments(ListPredefinedExperimentsGraphQLQuery query, ListPredefinedExperimentsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public RunChaosExperimentResponse runChaosExperiment(RunChaosExperimentGraphQLQuery query, RunChaosExperimentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public SaveChaosExperimentResponse saveChaosExperiment(SaveChaosExperimentGraphQLQuery query) { - // Mock implementation - return null; - } - - public ChaosExperimentResponse updateChaosExperiment(UpdateChaosExperimentGraphQLQuery query, UpdateChaosExperimentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ChaosExperimentResponse createChaosExperiment(CreateChaosExperimentGraphQLQuery query, CreateChaosExperimentProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public DeleteChaosExperimentResponse deleteChaosExperiment(DeleteChaosExperimentGraphQLQuery query) { - return null; - } - - public UpdateCronExperimentStateResponse updateCronExperimentState(UpdateCronExperimentStateGraphQLQuery query) { - return null; - } - - public ExperimentRun getExperimentRun(GetExperimentRunGraphQLQuery query, GetExperimentRunProjectionRoot projectionRoot) { - return null; - } - - public GetExperimentRunStatsResponse getExperimentRunStats(GetExperimentRunStatsGraphQLQuery query, GetExperimentRunStatsProjectionRoot projectionRoot) { - return null; - } - - public ListExperimentRunResponse listExperimentRun(ListExperimentRunGraphQLQuery query, ListExperimentRunProjectionRoot projectionRoot) { - return null; - } - - public ChaosExperimentRunResponse chaosExperimentRun(ChaosExperimentRunGraphQLQuery query) { - return null; - } - - public StopExperimentRunsResponse stopExperimentRuns(StopExperimentRunsGraphQLQuery query) { - return null; - } - - public GitConfigResponse getGitOpsDetails(GetGitOpsDetailsGraphQLQuery query, GetGitOpsDetailsProjectionRoot projectionRoot) { - return null; - } - - public DisableGitOpsResponse disableGitOps(DisableGitOpsGraphQLQuery query) { - return null; - } - - public EnableGitOpsResponse enableGitOps(EnableGitOpsGraphQLQuery query) { - return null; - } - - public GitOpsNotifierResponse gitopsNotifier(GitopsNotifierGraphQLQuery query) { - return null; - } - - public UpdateGitOpsResponse updateGitOps(UpdateGitOpsGraphQLQuery query) { - // Mock implementation - return null; - } - - public ImageRegistryResponse getImageRegistry(GetImageRegistryGraphQLQuery query, GetImageRegistryProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public List listImageRegistry(ListImageRegistryGraphQLQuery query, ListImageRegistryProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ImageRegistryResponse createImageRegistry(CreateImageRegistryGraphQLQuery query, CreateImageRegistryProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public DeleteImageRegistryResponse deleteImageRegistry(DeleteImageRegistryGraphQLQuery query) { - // Mock implementation - return null; - } - - public ImageRegistryResponse updateImageRegistry(UpdateImageRegistryGraphQLQuery query, UpdateImageRegistryProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public List listProbes(ListProbesGraphQLQuery query, ListProbesProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public Probe getProbe(GetProbeGraphQLQuery query, GetProbeProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ValidateUniqueProbeResponse validateUniqueProbe(ValidateUniqueProbeGraphQLQuery query) { - // Mock implementation - return null; - } - - public GetProbeReferenceResponse getProbeReference(GetProbeReferenceGraphQLQuery query, GetProbeReferenceProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public GetProbeYAMLResponse getProbeYAML(GetProbeYAMLGraphQLQuery query) { - // Mock implementation - return null; - } - - public GetProbesInExperimentRunResponse getProbesInExperimentRun(GetProbesInExperimentRunGraphQLQuery query, GetProbesInExperimentRunProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public Probe addProbe(AddProbeGraphQLQuery query, AddProbeProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public DeleteProbeResponse deleteProbe(DeleteProbeGraphQLQuery query) { - // Mock implementation - return null; - } - - public UpdateProbeResponse updateProbe(UpdateProbeGraphQLQuery query) { - // Mock implementation - return null; - } - - public FaultDetails getChaosFault(GetChaosFaultGraphQLQuery query, GetChaosFaultProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public List listChaosFaults(ListChaosFaultsGraphQLQuery query, ListChaosFaultsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public ServerVersionResponse getServerVersion(GetServerVersionGraphQLQuery query, GetServerVersionProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public InfraVersionDetails getVersionDetails(GetVersionDetailsGraphQLQuery query, GetVersionDetailsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public SSHKey generateSSHKey(GenerateSSHKeyGraphQLQuery query, GenerateSSHKeyProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public GetManifestWithInfraIDResponse getManifestWithInfraID(GetManifestWithInfraIDGraphQLQuery query) { - // Mock implementation - return null; - } - - public InfraEventResponse getInfraEvents(GetInfraEventsGraphQLQuery query, GetInfraEventsProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public KubeNamespaceResponse getKubeNamespace(GetKubeNamespaceGraphQLQuery query, GetKubeNamespaceProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public KubeObjectResponse getKubeObject(GetKubeObjectGraphQLQuery query, GetKubeObjectProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public PodLogResponse getPodLog(GetPodLogGraphQLQuery query, GetPodLogProjectionRoot projectionRoot) { - // Mock implementation - return null; - } - - public InfraActionResponse infraConnect(InfraConnectGraphQLQuery query, InfraConnectProjectionRoot projectionRoot) { - // Mock implementation - return null; - } -} \ No newline at end of file diff --git a/src/test/java/io/litmuschaos/UserTest.java b/src/test/java/io/litmuschaos/UserTest.java index 8c5c6fe..dd286af 100644 --- a/src/test/java/io/litmuschaos/UserTest.java +++ b/src/test/java/io/litmuschaos/UserTest.java @@ -1,5 +1,6 @@ package io.litmuschaos; +import io.litmuschaos.enums.Role; import io.litmuschaos.exception.LitmusApiException; import io.litmuschaos.request.UserCreateRequest; import io.litmuschaos.request.UserDetailsUpdateRequest; @@ -23,7 +24,7 @@ public class UserTest { private static final String CLIENT_SETUP_USERNAME = "admin"; private static final String CLIENT_SETUP_PASSWORD = "Litmus1234!"; private static final String TEST_USER_PASSWORD = "testPassword"; - private static final String TEST_USER_ROLE = "user"; + private static final Role TEST_USER_ROLE = Role.user; private static final String TEST_TOKEN = "Bearer token"; // Put your token here private static final String TEST_USER_EMAIL = "test@test.com"; private static final String TEST_USER_NAME = "testName"; @@ -105,80 +106,6 @@ void updateUserStateDeactivateTest() throws IOException, LitmusApiException { assertThat(user.isRemoved()).isTrue(); } -// @Test -// void updateUserStateActivateTest() throws IOException, LitmusApiException { -// // Given -// String username = generateRandomUsername(); -// UserResponse createdUser = createTestUser(username, TEST_USER_PASSWORD, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME); -// UserStateUpdateRequest stateUpdateRequest = UserStateUpdateRequest.builder() -// .username(username) -// .isDeactivate(true) -// .build(); -// litmusClient.updateUserState(stateUpdateRequest); -// -// // When -// stateUpdateRequest = UserStateUpdateRequest.builder() -// .username(username) -// .isDeactivate(false) -// .build(); -// litmusClient.updateUserState(stateUpdateRequest); -// -// // Then -// UserResponse user = litmusClient.getUser(createdUser.getUserID()); -// assertThat(user.isRemoved()).isFalse(); -// } -// -// @Test -// void updatePasswordTest() throws IOException, LitmusApiException { -// // Given -// String username = generateRandomUsername(); -// UserResponse createdUser = createTestUser(username, TEST_USER_PASSWORD, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME); -// String newPassword = "newPassword1!"; -// -// // When -// PasswordUpdateRequest request = PasswordUpdateRequest.builder() -// .username(createdUser.getUsername()) -// .oldPassword(TEST_USER_PASSWORD) -// .newPassword(newPassword) -// .build(); -// -// // Then -// // Only password owner can update own password -// // admin user try to update user's password -> fail -// assertThatThrownBy(() -> litmusClient.updatePassword(request)) -// .isInstanceOf(UnauthorizedException.class); -// -// // authenticate by password owner's username, password then change password -// litmusClient.authenticate(LoginRequest.builder().username(createdUser.getUsername()).password(TEST_USER_PASSWORD).build()); -// assertThat(litmusClient.updatePassword(request)) -// .isNotNull() -// .hasFieldOrProperty("message") -// .hasFieldOrProperty("projectID"); -// } - -// @Test -// void resetPasswordTest() throws IOException, LitmusApiException { -// // Given -// String username = generateRandomUsername(); -// createTestUser(username, TEST_USER_PASSWORD, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME); -// String newPassword = "newPassword1!"; -// PasswordResetRequest request = PasswordResetRequest.builder() -// .username(username) -// .newPassword(newPassword) -// .build(); -// -// // User cannot call password reset API -// litmusClient.authenticate(LoginRequest.builder().username(username).password(TEST_USER_PASSWORD).build()); -// assertThatThrownBy(() -> litmusClient.resetPassword(request)) -// .isInstanceOf(UnauthorizedException.class); -// -// // Admin can call password reset API -// litmusClient.authenticate(LoginRequest.builder().username(CLIENT_SETUP_USERNAME).password(CLIENT_SETUP_PASSWORD).build()); -// assertThat(litmusClient.resetPassword(request)) -// .isNotNull() -// .isInstanceOf(CommonResponse.class); -// } - @Test void updateUserDetailsTest() throws IOException, LitmusApiException { // Given @@ -198,56 +125,8 @@ void updateUserDetailsTest() throws IOException, LitmusApiException { .isInstanceOf(CommonResponse.class); } -// @Test -// void createTokenTest() throws IOException, LitmusApiException { -// // Given -// String username = generateRandomUsername(); -// UserResponse user = createPasswordUpdatedTestUser( -// username, TEST_USER_PASSWORD, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME, "newPassword1!" -// ); -// -// // When -// TokenCreateRequest request = TokenCreateRequest.builder() -// .userID(user.getUserID()) -// .name("test token") -// .daysUntilExpiration(30).build(); -// TokenCreateResponse tokenCreateResponse = litmusClient.createToken(request); -// -// // Then -// List tokens = litmusClient.getTokens(user.getUserID()).getTokens(); -// assertThat(tokens).anyMatch( -// token -> -// token.getUserID().equals(user.getUserID()) -// && token.getToken().equals(tokenCreateResponse.getAccessToken()) -// ); -// } - -// @Test -// void deleteTokenTest() throws IOException, LitmusApiException { -// // Given -// String username = generateRandomUsername(); -// UserResponse user = createPasswordUpdatedTestUser( -// username, TEST_USER_PASSWORD, TEST_USER_ROLE, TEST_USER_EMAIL, TEST_USER_NAME, "newPassword1!" -// ); -// TokenCreateRequest tokenCreateRequest = TokenCreateRequest.builder() -// .userID(user.getUserID()) -// .name("test token") -// .daysUntilExpiration(30).build(); -// TokenCreateResponse tokenCreateResponse = litmusClient.createToken(tokenCreateRequest); -// -// // When -// TokenDeleteRequest tokenDeleteRequest = TokenDeleteRequest.builder() -// .userID(user.getUserID()) -// .token(tokenCreateResponse.getAccessToken()).build(); -// litmusClient.deleteToken(tokenDeleteRequest); -// -// // Then -// ListTokensResponse response = litmusClient.getTokens(user.getUserID()); -// assertThat(response.getTokens()).isNull(); -// } - private UserResponse createTestUser( - String username, String password, String role, String email, String name + String username, String password, Role role, String email, String name ) throws LitmusApiException, IOException { UserCreateRequest request = UserCreateRequest.builder(). username(username) @@ -257,18 +136,4 @@ private UserResponse createTestUser( .name(name).build(); return litmusClient.createUser(request); } - -// private UserResponse createPasswordUpdatedTestUser( -// String username, String password, String role, String email, String name, String newPassword -// ) throws LitmusApiException, IOException { -// UserResponse user = createTestUser(username, password, role, email, name); -// litmusClient.authenticate(LoginRequest.builder().username(username).password(password).build()); -// PasswordUpdateRequest passwordUpdateRequest = PasswordUpdateRequest.builder() -// .username(username) -// .oldPassword(password) -// .newPassword(newPassword) -// .build(); -// litmusClient.updatePassword(passwordUpdateRequest); -// return litmusClient.getUser(user.getUserID()); -// } }