Skip to content

Commit 599d9a8

Browse files
authored
chore: deprecate user-password based authentication (#36)
Signed-off-by: namkyu1999 <[email protected]>
1 parent 29c67b9 commit 599d9a8

File tree

7 files changed

+415
-463
lines changed

7 files changed

+415
-463
lines changed

src/main/java/io/litmuschaos/LitmusClient.java

Lines changed: 29 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,30 @@
66
import io.litmuschaos.exception.LitmusApiException;
77
import io.litmuschaos.generated.client.ListInfrasGraphQLQuery;
88
import io.litmuschaos.generated.client.ListInfrasProjectionRoot;
9-
import io.litmuschaos.generated.types.ListInfraRequest;
109
import io.litmuschaos.generated.types.ListInfraResponse;
11-
import io.litmuschaos.generated.types.Pagination;
1210
import io.litmuschaos.graphql.LitmusGraphQLClient;
1311
import io.litmuschaos.http.LitmusHttpClient;
1412
import io.litmuschaos.request.*;
1513
import io.litmuschaos.response.*;
14+
import okhttp3.OkHttpClient;
1615

17-
import io.litmuschaos.request.CreateProjectRequest;
18-
import io.litmuschaos.request.LeaveProjectRequest;
19-
import io.litmuschaos.request.ListProjectRequest;
20-
import io.litmuschaos.request.LoginRequest;
21-
import io.litmuschaos.request.ProjectNameRequest;
22-
import io.litmuschaos.response.CapabilityResponse;
23-
import io.litmuschaos.response.CommonResponse;
24-
import io.litmuschaos.response.ListProjectsResponse;
25-
import io.litmuschaos.response.LoginResponse;
26-
import io.litmuschaos.response.ProjectMemberResponse;
27-
import io.litmuschaos.response.ProjectResponse;
28-
import io.litmuschaos.response.ProjectRoleResponse;
29-
import io.litmuschaos.response.ProjectsStatsResponse;
30-
import io.litmuschaos.response.UserWithProjectResponse;
3116
import java.io.IOException;
32-
import java.util.Collections;
3317
import java.util.HashMap;
3418
import java.util.List;
3519
import java.util.Map;
36-
import okhttp3.OkHttpClient;
3720

3821
public class LitmusClient implements AutoCloseable {
3922

4023
private String token;
4124
private final LitmusHttpClient httpClient;
4225
private final LitmusGraphQLClient graphQLClient;
4326

44-
// TODO: using token rather than username & password
45-
// TODO: validate a token whether starts with "Bearer "
46-
public LitmusClient(String host, String username, String password)
47-
throws IOException, LitmusApiException {
48-
host = sanitizeURL(host);
27+
public LitmusClient(String host, String token) {
28+
String sanitizedHost = sanitizeURL(host);
4929
OkHttpClient okHttpClient = new OkHttpClient();
50-
this.httpClient = new LitmusHttpClient(okHttpClient, host+"/auth");
51-
// TODO: deprecated
52-
LoginRequest request = LoginRequest.builder().username(username).password(password).build();
53-
this.authenticate(request);
54-
55-
this.graphQLClient = new LitmusGraphQLClient(okHttpClient, host+"/api/query", token);
30+
this.token = token;
31+
this.httpClient = new LitmusHttpClient(okHttpClient, sanitizedHost + "/auth");
32+
this.graphQLClient = new LitmusGraphQLClient(okHttpClient, sanitizedHost + "/api/query", this.token);
5633
}
5734

5835
@Override
@@ -61,18 +38,18 @@ public void close() throws Exception {
6138
}
6239

6340
// User
64-
public LoginResponse authenticate(LoginRequest request)
65-
throws IOException, LitmusApiException {
66-
LoginResponse response = httpClient.post("/login", request, LoginResponse.class);
67-
this.token = response.getAccessToken();
68-
return response;
69-
}
70-
71-
public CommonResponse logout() throws IOException, LitmusApiException {
72-
CommonResponse commonResponse = httpClient.post("/logout", token, CommonResponse.class);
73-
this.token = "";
74-
return commonResponse;
75-
}
41+
// public LoginResponse authenticate(LoginRequest request)
42+
// throws IOException, LitmusApiException {
43+
// LoginResponse response = httpClient.post("/login", request, LoginResponse.class);
44+
// this.token = response.getAccessToken();
45+
// return response;
46+
// }
47+
48+
// public CommonResponse logout() throws IOException, LitmusApiException {
49+
// CommonResponse commonResponse = httpClient.post("/logout", token, CommonResponse.class);
50+
// this.token = "";
51+
// return commonResponse;
52+
// }
7653

7754
public ListTokensResponse getTokens(String userId) throws IOException, LitmusApiException {
7855
return httpClient.get("/token/" + userId, token, ListTokensResponse.class);
@@ -91,7 +68,8 @@ public UserResponse getUser(String userId) throws IOException, LitmusApiExceptio
9168
}
9269

9370
public List<UserResponse> getUsers() throws IOException, LitmusApiException {
94-
TypeToken<List<UserResponse>> typeToken = new TypeToken<>() {};
71+
TypeToken<List<UserResponse>> typeToken = new TypeToken<>() {
72+
};
9573
return httpClient.get("/users", token, typeToken);
9674
}
9775

@@ -146,7 +124,8 @@ public ProjectResponse getProject(String projectId) throws IOException, LitmusAp
146124
}
147125

148126
public List<ProjectResponse> getOwnerProjects() throws IOException, LitmusApiException {
149-
TypeToken<List<ProjectResponse>> typeToken = new TypeToken<List<ProjectResponse>>() {};
127+
TypeToken<List<ProjectResponse>> typeToken = new TypeToken<List<ProjectResponse>>() {
128+
};
150129
return httpClient.get("/get_owner_projects", token, typeToken);
151130
}
152131

@@ -167,19 +146,22 @@ public UserWithProjectResponse getUserWithProject(String username)
167146
}
168147

169148
public List<ProjectsStatsResponse> getProjectsStats() throws IOException, LitmusApiException {
170-
TypeToken<List<ProjectsStatsResponse>> typeToken = new TypeToken<List<ProjectsStatsResponse>>() {};
149+
TypeToken<List<ProjectsStatsResponse>> typeToken = new TypeToken<List<ProjectsStatsResponse>>() {
150+
};
171151
return httpClient.get("/get_projects_stats", token, typeToken);
172152
}
173153

174154
public List<ProjectMemberResponse> getProjectMembers(String projectID, String status)
175155
throws IOException, LitmusApiException {
176-
TypeToken<List<ProjectMemberResponse>> typeToken = new TypeToken<List<ProjectMemberResponse>>() {};
156+
TypeToken<List<ProjectMemberResponse>> typeToken = new TypeToken<List<ProjectMemberResponse>>() {
157+
};
177158
return httpClient.get("/get_project_members/" + projectID + "/" + status, token, typeToken);
178159
}
179160

180161
public List<ProjectMemberResponse> getProjectOwners(String projectID)
181162
throws IOException, LitmusApiException {
182-
TypeToken<List<ProjectMemberResponse>> typeToken = new TypeToken<List<ProjectMemberResponse>>() {};
163+
TypeToken<List<ProjectMemberResponse>> typeToken = new TypeToken<List<ProjectMemberResponse>>() {
164+
};
183165
return httpClient.get("/get_project_owners/" + projectID, token, typeToken);
184166
}
185167

@@ -219,7 +201,7 @@ public List<InviteUsersResponse> inviteUsers(String projectId)
219201
// Chaos Experiment Run
220202

221203
// Chaos Infrastructure
222-
public ListInfraResponse listInfras(ListInfrasGraphQLQuery query, ListInfrasProjectionRoot projectionRoot){
204+
public ListInfraResponse listInfras(ListInfrasGraphQLQuery query, ListInfrasProjectionRoot projectionRoot) {
223205
String request = new GraphQLQueryRequest(query, projectionRoot).serialize();
224206
GraphQLResponse response = graphQLClient.query(request);
225207
return response.dataAsObject(ListInfraResponse.class);

src/test/java/AuthTest.java

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
11
import io.litmuschaos.LitmusClient;
22
import io.litmuschaos.exception.LitmusApiException;
3-
import io.litmuschaos.exception.detailed.UnauthorizedException;
4-
import io.litmuschaos.request.LoginRequest;
53
import io.litmuschaos.response.CapabilityResponse;
6-
import io.litmuschaos.response.LoginResponse;
74
import org.junit.jupiter.api.BeforeEach;
85
import org.junit.jupiter.api.Test;
96

107
import java.io.IOException;
118

12-
import static org.assertj.core.api.Assertions.*;
9+
import static org.assertj.core.api.Assertions.assertThat;
1310

1411
public class AuthTest {
1512

16-
private static final String hostUrl = "http://localhost:3000";
17-
private static final String username = "admin";
18-
private static final String password = "Litmus1234!";
13+
private static final String HOST_URL = "http://localhost:3000";
14+
private static final String TEST_TOKEN = "Bearer token";
1915

2016
private LitmusClient authClient;
2117

2218
@BeforeEach
23-
public void setup() throws IOException, LitmusApiException {
24-
this.authClient = new LitmusClient(hostUrl, username, password);
19+
public void setup() {
20+
this.authClient = new LitmusClient(HOST_URL, TEST_TOKEN);
2521
}
2622

2723
@Test
@@ -33,22 +29,22 @@ public void testCapabilityAPI() throws IOException, LitmusApiException {
3329
.hasFieldOrProperty("Dex");
3430
}
3531

36-
@Test
37-
public void testAuthenticationAPI() throws IOException, LitmusApiException {
38-
LoginRequest request = LoginRequest.builder().username(username).password(password).build();
39-
assertThat(authClient.authenticate(request))
40-
.isNotNull()
41-
.isInstanceOf(LoginResponse.class);
42-
}
43-
44-
@Test
45-
public void testAuthenticationAPIFail() {
46-
// Given
47-
String wrongPassword = "litmus1234";
48-
LoginRequest request = LoginRequest.builder().username(username).password(wrongPassword).build();
49-
50-
// When & Then
51-
assertThatThrownBy(() -> authClient.authenticate(request))
52-
.isInstanceOf(UnauthorizedException.class);
53-
}
32+
// @Test
33+
// public void testAuthenticationAPI() throws IOException, LitmusApiException {
34+
// LoginRequest request = LoginRequest.builder().username(username).password(password).build();
35+
// assertThat(authClient.authenticate(request))
36+
// .isNotNull()
37+
// .isInstanceOf(LoginResponse.class);
38+
// }
39+
//
40+
// @Test
41+
// public void testAuthenticationAPIFail() {
42+
// // Given
43+
// String wrongPassword = "litmus1234";
44+
// LoginRequest request = LoginRequest.builder().username(username).password(wrongPassword).build();
45+
//
46+
// // When & Then
47+
// assertThatThrownBy(() -> authClient.authenticate(request))
48+
// .isInstanceOf(UnauthorizedException.class);
49+
// }
5450
}

src/test/java/BuildRequestTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@
1111

1212
public class BuildRequestTest {
1313

14-
private static final String hostUrl = "http://localhost:3000";
15-
private static final String username = "admin";
16-
private static final String password = "Litmus1234!";
14+
private static final String HOST_URL = "http://localhost:3000";
15+
private static final String TEST_TOKEN = "Bearer token";
1716

1817
private LitmusClient litmusClient;
1918

2019
@BeforeEach
2120
public void setup() throws IOException, LitmusApiException {
22-
this.litmusClient = new LitmusClient(hostUrl, username, password);
21+
this.litmusClient = new LitmusClient(HOST_URL, TEST_TOKEN);
2322
}
2423

2524
@Test

src/test/java/GraphQLTest.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import com.netflix.graphql.dgs.client.GraphQLResponse;
21
import io.litmuschaos.LitmusClient;
3-
import io.litmuschaos.exception.LitmusApiException;
4-
import java.io.IOException;
5-
62
import io.litmuschaos.generated.client.ListInfrasGraphQLQuery;
73
import io.litmuschaos.generated.client.ListInfrasProjectionRoot;
84
import io.litmuschaos.generated.types.ListInfraResponse;
@@ -11,29 +7,28 @@
117

128
public class GraphQLTest {
139

14-
private static final String hostUrl = "http://localhost:3000";
15-
private static final String username = "admin";
16-
private static final String password = "Litmus1234!";
10+
private static final String HOST_URL = "http://localhost:3000";
11+
private static final String TEST_TOKEN = "Bearer token";
1712

1813
private LitmusClient litmusClient;
1914

2015
@BeforeEach
21-
public void setup() throws IOException, LitmusApiException {
22-
this.litmusClient = new LitmusClient(hostUrl, username, password);
16+
public void setup() {
17+
this.litmusClient = new LitmusClient(HOST_URL, TEST_TOKEN);
2318
}
2419

2520
@Test
26-
public void listInfrasTest(){
21+
public void listInfrasTest() {
2722
ListInfraResponse result = litmusClient.listInfras(
2823
new ListInfrasGraphQLQuery
2924
.Builder()
3025
.projectID("8d2dc452-00dc-4ff9-968f-b8105385ecdb")
3126
.build(),
3227
new ListInfrasProjectionRoot<>()
3328
.infras()
34-
.infraID()
35-
.name()
36-
.parent()
29+
.infraID()
30+
.name()
31+
.parent()
3732
.totalNoOfInfras()
3833
);
3934
System.out.println(result.getTotalNoOfInfras());

0 commit comments

Comments
 (0)