Skip to content

Commit e5a8ede

Browse files
authored
Create anonymous users (#231)
* Create anonymous users + tests * Increase version
1 parent bf0bb78 commit e5a8ede

File tree

6 files changed

+44
-2
lines changed

6 files changed

+44
-2
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>com.descope</groupId>
66
<artifactId>java-sdk</artifactId>
77
<modelVersion>4.0.0</modelVersion>
8-
<version>1.0.49</version>
8+
<version>1.0.50</version>
99
<name>${project.groupId}:${project.artifactId}</name>
1010
<description>Java library used to integrate with Descope.</description>
1111
<url>https://github.com/descope/descope-java</url>

src/main/java/com/descope/literals/Routes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public static class ManagementEndPoints {
166166
public static final String MANAGEMENT_SIGN_IN = "/v1/mgmt/auth/signin";
167167
public static final String MANAGEMENT_SIGN_UP = "/v1/mgmt/auth/signup";
168168
public static final String MANAGEMENT_SIGN_UP_OR_IN = "/v1/mgmt/auth/signup-in";
169+
public static final String MANAGEMENT_ANONYMOUS_USER = "/v1/mgmt/auth/anonymous";
169170

170171
// Access key
171172
public static final String MANAGEMENT_ACCESS_KEY_CREATE_LINK = "/v1/mgmt/accesskey/create";
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.descope.model.jwt.request;
2+
3+
import java.util.Map;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
import lombok.experimental.SuperBuilder;
8+
9+
10+
@Data
11+
@AllArgsConstructor
12+
@NoArgsConstructor
13+
@SuperBuilder
14+
public class AnonymousUserRequest {
15+
private Map<String, Object> customClaims;
16+
private String selectedTenant;
17+
private int refreshDuration;
18+
}

src/main/java/com/descope/sdk/mgmt/JwtService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.descope.model.auth.AuthenticationInfo;
55
import com.descope.model.jwt.MgmtSignUpUser;
66
import com.descope.model.jwt.Token;
7+
import com.descope.model.jwt.request.AnonymousUserRequest;
78
import com.descope.model.magiclink.LoginOptions;
89
import java.util.Map;
910

@@ -28,4 +29,6 @@ AuthenticationInfo signUpOrIn(String loginId, MgmtSignUpUser signUpUserDetails)
2829
throws DescopeException;
2930

3031
AuthenticationInfo signIn(String loginId, LoginOptions loginOptions) throws DescopeException;
32+
33+
AuthenticationInfo anonymous(AnonymousUserRequest request) throws DescopeException;
3134
}

src/main/java/com/descope/sdk/mgmt/impl/JwtServiceImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.descope.sdk.mgmt.impl;
22

3+
import static com.descope.literals.Routes.ManagementEndPoints.MANAGEMENT_ANONYMOUS_USER;
34
import static com.descope.literals.Routes.ManagementEndPoints.MANAGEMENT_SIGN_IN;
45
import static com.descope.literals.Routes.ManagementEndPoints.MANAGEMENT_SIGN_UP;
56
import static com.descope.literals.Routes.ManagementEndPoints.MANAGEMENT_SIGN_UP_OR_IN;
@@ -12,6 +13,7 @@
1213
import com.descope.model.client.Client;
1314
import com.descope.model.jwt.MgmtSignUpUser;
1415
import com.descope.model.jwt.Token;
16+
import com.descope.model.jwt.request.AnonymousUserRequest;
1517
import com.descope.model.jwt.request.ManagementSignInRequest;
1618
import com.descope.model.jwt.request.ManagementSignUpRequest;
1719
import com.descope.model.jwt.request.UpdateJwtRequest;
@@ -30,6 +32,17 @@ class JwtServiceImpl extends ManagementsBase implements JwtService {
3032
super(client);
3133
}
3234

35+
@Override
36+
public AuthenticationInfo anonymous(AnonymousUserRequest request)
37+
throws DescopeException {
38+
// Make the API call
39+
URI uri = getUri(MANAGEMENT_ANONYMOUS_USER);
40+
ApiProxy apiProxy = getApiProxy();
41+
JWTResponse jwtResponse = apiProxy.post(uri, request, JWTResponse.class);
42+
// Validate the JWT and return AuthenticationInfo
43+
return validateAndCreateAuthInfo(jwtResponse);
44+
}
45+
3346
@Override
3447
public Token updateJWTWithCustomClaims(String jwt, Map<String, Object> customClaims)
3548
throws DescopeException {

src/test/java/com/descope/sdk/mgmt/impl/JwtServiceImplTest.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static com.descope.utils.CollectionUtils.mapOf;
44
import static org.junit.jupiter.api.Assertions.assertEquals;
55
import static org.junit.jupiter.api.Assertions.assertNotNull;
6+
import static org.junit.jupiter.api.Assertions.assertNull;
67
import static org.junit.jupiter.api.Assertions.assertThrows;
78

89
import com.descope.enums.DeliveryMethod;
@@ -11,6 +12,7 @@
1112
import com.descope.model.auth.AuthenticationInfo;
1213
import com.descope.model.client.Client;
1314
import com.descope.model.jwt.Token;
15+
import com.descope.model.jwt.request.AnonymousUserRequest;
1416
import com.descope.model.mgmt.ManagementServices;
1517
import com.descope.model.user.request.UserRequest;
1618
import com.descope.model.user.response.OTPTestUserResponse;
@@ -61,7 +63,12 @@ void testFunctionalFullCycle() {
6163
Assertions.assertThat(authInfo.getToken().getJwt()).isNotBlank();
6264
Token newJwt = jwtService.updateJWTWithCustomClaims(authInfo.getToken().getJwt(), mockCustomClaims);
6365
assertNotNull(newJwt.getClaims());
64-
assertEquals(newJwt.getClaims().get("test"), "claim");
66+
assertEquals("claim", newJwt.getClaims().get("test"));
6567
userService.delete(loginId);
68+
69+
AuthenticationInfo anonyUser = jwtService.anonymous(
70+
AnonymousUserRequest.builder().customClaims(mockCustomClaims).build());
71+
assertNotNull(anonyUser.getToken());
72+
assertNull(anonyUser.getUser());
6673
}
6774
}

0 commit comments

Comments
 (0)