Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import org.assertj.vavr.api.VavrAssertions;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import com.auth0.jwt.JWT;
Expand Down Expand Up @@ -45,6 +46,27 @@ void givenNoUserTokenAndXsuaaTenantThenExceptionIsReturned()
VavrAssertions.assertThat(tenantTry).isFailure().failBecauseOf(TenantAccessException.class);
}

@Test
@DisplayName( "Subdomains don't resolve from issuers without an http prefix" )
void givenIssuerWithoutSchemeThenExceptionIsReturned()
{
final String userTenant = "someUserTenant";
final String issuerWithoutScheme = "foo.accounts.sap.com";
final AuthToken jwtWithTenant = createJwtWithTenantAndIssuer(userTenant, issuerWithoutScheme);

final DefaultAuthTokenFacade mockedFacade = mock(DefaultAuthTokenFacade.class);
when(mockedFacade.tryGetCurrentToken()).thenReturn(Try.success(jwtWithTenant));
AuthTokenAccessor.setAuthTokenFacade(mockedFacade);

final Try<Tenant> tenantTry = new DefaultTenantFacade().tryGetCurrentTenant();

VavrAssertions
.assertThat(tenantTry)
.describedAs("issuers without an https:// prefix should lead to a failure")
.isFailure()
.failBecauseOf(TenantAccessException.class);
}

private DefaultAuthTokenFacade mockCurrentTenant( final String userTenant )
{
final AuthToken jwtWithTenant = createJwtWithTenant(userTenant);
Expand All @@ -57,13 +79,14 @@ private DefaultAuthTokenFacade mockCurrentTenant( final String userTenant )
}

private AuthToken createJwtWithTenant( final String tenantId )
{
return createJwtWithTenantAndIssuer(tenantId, "https://sudomain-of-" + tenantId + ".localhost:8080");
}

private AuthToken createJwtWithTenantAndIssuer( final String tenantId, final String issuer )
{
final String encodedJwt =
JWT
.create()
.withClaim("zid", tenantId)
.withClaim("iss", "https://sudomain-of-" + tenantId + ".localhost:8080")
.sign(Algorithm.none());
JWT.create().withClaim("zid", tenantId).withClaim("iss", issuer).sign(Algorithm.none());
final DecodedJWT decodedJwt = JWT.decode(encodedJwt);
return new AuthToken(decodedJwt);
}
Expand Down