Skip to content

Commit d05ef22

Browse files
authored
Merge pull request #50 from openfga/fix/token-exp-check
fix: fix token validity check for expiry
2 parents 2b4dec3 + 04e564e commit d05ef22

File tree

3 files changed

+47
-3
lines changed

3 files changed

+47
-3
lines changed

.openapi-generator/FILES

+1
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ src/test-integration/resources/auth-model.json
254254
src/test-integration/resources/example1-auth-model.json
255255
src/test/java/dev/openfga/sdk/api/OpenFgaApiTest.java
256256
src/test/java/dev/openfga/sdk/api/OpenFgaApiTest.java
257+
src/test/java/dev/openfga/sdk/api/auth/AccessTokenTest.java
257258
src/test/java/dev/openfga/sdk/api/auth/OAuth2ClientTest.java
258259
src/test/java/dev/openfga/sdk/api/client/OpenFgaClientTest.java
259260
src/test/java/dev/openfga/sdk/api/configuration/ClientCredentialsTest.java

src/main/java/dev/openfga/sdk/api/auth/AccessToken.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ class AccessToken {
3030
public boolean isValid() {
3131
return !isNullOrWhitespace(token)
3232
&& (expiresAt == null
33-
|| expiresAt.isBefore(Instant.now()
34-
.plusSeconds(TOKEN_EXPIRY_BUFFER_THRESHOLD_IN_SEC)
35-
.plusSeconds(random.nextLong() % TOKEN_EXPIRY_JITTER_IN_SEC)));
33+
|| expiresAt.isAfter(Instant.now()
34+
.minusSeconds(TOKEN_EXPIRY_BUFFER_THRESHOLD_IN_SEC)
35+
.minusSeconds(random.nextLong() % TOKEN_EXPIRY_JITTER_IN_SEC)));
3636
}
3737

3838
public String getToken() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* OpenFGA
3+
* A high performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar.
4+
*
5+
* The version of the OpenAPI document: 0.1
6+
* Contact: [email protected]
7+
*
8+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9+
* https://openapi-generator.tech
10+
* Do not edit the class manually.
11+
*/
12+
13+
package dev.openfga.sdk.api.auth;
14+
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
17+
import java.time.Instant;
18+
import java.time.temporal.ChronoUnit;
19+
import java.util.stream.Stream;
20+
import org.junit.jupiter.params.ParameterizedTest;
21+
import org.junit.jupiter.params.provider.Arguments;
22+
import org.junit.jupiter.params.provider.MethodSource;
23+
24+
class AccessTokenTest {
25+
26+
private static Stream<Arguments> expTimeAndResults() {
27+
return Stream.of(
28+
Arguments.of(Instant.now().plus(1, ChronoUnit.HOURS), true),
29+
Arguments.of(Instant.now().minus(1, ChronoUnit.HOURS), false),
30+
Arguments.of(Instant.now().minus(10, ChronoUnit.MINUTES), false),
31+
Arguments.of(Instant.now().plus(10, ChronoUnit.MINUTES), true),
32+
Arguments.of(Instant.now(), true));
33+
}
34+
35+
@MethodSource("expTimeAndResults")
36+
@ParameterizedTest
37+
public void testTokenValid(Instant exp, boolean valid) {
38+
AccessToken accessToken = new AccessToken();
39+
accessToken.setToken("token");
40+
accessToken.setExpiresAt(exp);
41+
assertEquals(valid, accessToken.isValid());
42+
}
43+
}

0 commit comments

Comments
 (0)