Skip to content

Commit

Permalink
feat(jans-auth-server): added test for online_access scope implementa…
Browse files Browse the repository at this point in the history
…tion #3012
  • Loading branch information
yuriyz committed Mar 10, 2023
1 parent f65ae03 commit 95f5614
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,11 @@ public List<TokenEntity> getGrantsBySessionDn(String sessionDn) {

public void logout(String sessionDn) {
final List<TokenEntity> tokens = getGrantsBySessionDn(sessionDn);
filterOutRefreshTokenForLogout(tokens);
filterOutRefreshTokenFromDeletion(tokens);
removeSilently(tokens);
}

public void filterOutRefreshTokenForLogout(List<TokenEntity> tokens) {
public void filterOutRefreshTokenFromDeletion(List<TokenEntity> tokens) {
if (BooleanUtils.isTrue(appConfiguration.getRemoveRefreshTokensForClientOnLogout())) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package io.jans.as.server.service;

import io.jans.as.model.config.StaticConfiguration;
import io.jans.as.model.configuration.AppConfiguration;
import io.jans.as.server.model.ldap.TokenEntity;
import io.jans.as.server.model.ldap.TokenType;
import io.jans.orm.PersistenceEntryManager;
import io.jans.service.CacheService;
import io.jans.service.cache.CacheConfiguration;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.testng.MockitoTestNGListener;
import org.slf4j.Logger;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;

import static org.testng.Assert.*;

/**
* @author Yuriy Z
*/
@Listeners(MockitoTestNGListener.class)
public class GrantServiceTest {

@InjectMocks
private GrantService grantService;

@Mock
private Logger log;

@Mock
private PersistenceEntryManager persistenceEntryManager;

@Mock
private ClientService clientService;

@Mock
private CacheService cacheService;

@Mock
private StaticConfiguration staticConfiguration;

@Mock
private AppConfiguration appConfiguration;

@Mock
private CacheConfiguration cacheConfiguration;

@Test
public void filterOutRefreshTokenFromDeletion_forTokenWithoutOnlineAccess_shouldFilterOut() {
Mockito.doReturn(false).when(appConfiguration).getRemoveRefreshTokensForClientOnLogout();

TokenEntity token = new TokenEntity();
token.setTokenTypeEnum(TokenType.REFRESH_TOKEN);
token.getAttributes().setOnlineAccess(false);

List<TokenEntity> tokens = new ArrayList<>();
tokens.add(token);

grantService.filterOutRefreshTokenFromDeletion(tokens);
assertTrue(tokens.isEmpty());
}

@Test
public void filterOutRefreshTokenFromDeletion_forTokenWithOnlineAccess_shouldNotFilterOut() {
Mockito.doReturn(false).when(appConfiguration).getRemoveRefreshTokensForClientOnLogout();

TokenEntity token = new TokenEntity();
token.setTokenTypeEnum(TokenType.REFRESH_TOKEN);
token.getAttributes().setOnlineAccess(true);

List<TokenEntity> tokens = new ArrayList<>();
tokens.add(token);

grantService.filterOutRefreshTokenFromDeletion(tokens);
assertFalse(tokens.isEmpty());
}

@Test
public void filterOutRefreshTokenFromDeletion_whenConfigurationRemoveRefreshTokensForClientOnLogoutIsTrue_shouldNotFilterOut() {
Mockito.doReturn(true).when(appConfiguration).getRemoveRefreshTokensForClientOnLogout();

TokenEntity token = new TokenEntity();
token.setTokenTypeEnum(TokenType.REFRESH_TOKEN);
token.getAttributes().setOnlineAccess(false);

TokenEntity another = new TokenEntity();
another.setTokenTypeEnum(TokenType.REFRESH_TOKEN);
another.getAttributes().setOnlineAccess(true);

List<TokenEntity> tokens = new ArrayList<>();
tokens.add(token);
tokens.add(another);

grantService.filterOutRefreshTokenFromDeletion(tokens);
assertEquals(tokens.size(), 2);
}
}
1 change: 1 addition & 0 deletions jans-auth-server/server/src/test/resources/testng.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<class name="io.jans.as.server.service.external.ExternalAuthenticationServiceTest" />
<class name="io.jans.as.server.servlet.OpenIdConfigurationTest" />
<class name="io.jans.as.server.service.net.UriServiceTest" />
<class name="io.jans.as.server.service.GrantServiceTest" />

<class name="io.jans.as.server.token.ws.rs.TokenExchangeServiceTest" />
<class name="io.jans.as.server.token.ws.rs.TokenRestWebServiceValidatorTest" />
Expand Down

0 comments on commit 95f5614

Please sign in to comment.