Skip to content

Commit

Permalink
Merge branch 'feature/AMU-use-partialyAuthorized-status-after-TAN-val…
Browse files Browse the repository at this point in the history
…idation' into 'hotfix-3.2.1'

#800 Adjust xs2a-connector-examples for using partiallyAuthorised field after TAN validation

See merge request adorsys/xs2a/xs2a-connector-examples!75
  • Loading branch information
Seregy committed May 6, 2019
2 parents 3024843 + b5e3ff5 commit f80c1ba
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
<!-- xs2a version -->
<xs2a.version>3.2</xs2a.version>
<!-- ledgers version -->
<ledgers.version>0.3.7</ledgers.version>
<ledgers.version>0.3.8</ledgers.version>
<!-- other properties -->
<spring-boot-dependencies.version>2.1.4.RELEASE</spring-boot-dependencies.version>
<spring-cloud-dependencies.version>Greenwich.RELEASE</spring-cloud-dependencies.version>
Expand Down
5 changes: 5 additions & 0 deletions xs2a-connector/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@
import de.adorsys.aspsp.xs2a.connector.spi.converter.AisConsentMapper;
import de.adorsys.aspsp.xs2a.connector.spi.converter.ScaLoginToConsentResponseMapper;
import de.adorsys.aspsp.xs2a.connector.spi.converter.ScaMethodConverter;
import de.adorsys.ledgers.middleware.api.domain.sca.OpTypeTO;
import de.adorsys.ledgers.middleware.api.domain.sca.SCAConsentResponseTO;
import de.adorsys.ledgers.middleware.api.domain.sca.SCALoginResponseTO;
import de.adorsys.ledgers.middleware.api.domain.sca.SCAResponseTO;
import de.adorsys.ledgers.middleware.api.domain.sca.*;
import de.adorsys.ledgers.middleware.api.domain.um.AisConsentTO;
import de.adorsys.ledgers.middleware.api.domain.um.BearerTokenTO;
import de.adorsys.ledgers.middleware.api.domain.um.ScaUserDataTO;
Expand Down Expand Up @@ -134,7 +131,8 @@ public SpiResponse<VoidResponse> revokeAisConsent(@NotNull SpiContextData contex
*/
@Override
public @NotNull SpiResponse<SpiVerifyScaAuthorisationResponse> verifyScaAuthorisation(@NotNull SpiContextData contextData,
@NotNull SpiScaConfirmation spiScaConfirmation, @NotNull SpiAccountConsent accountConsent,
@NotNull SpiScaConfirmation spiScaConfirmation,
@NotNull SpiAccountConsent accountConsent,
@NotNull AspspConsentData aspspConsentData) {
try {
SCAConsentResponseTO sca = consentDataService.response(aspspConsentData.getAspspConsentData(), SCAConsentResponseTO.class);
Expand All @@ -145,7 +143,8 @@ public SpiResponse<VoidResponse> revokeAisConsent(@NotNull SpiContextData contex
SCAConsentResponseTO consentResponse = authorizeConsentResponse.getBody();

// TODO use real sca status from Ledgers for resolving consent status https://git.adorsys.de/adorsys/xs2a/ledgers/issues/206
return SpiResponse.<SpiVerifyScaAuthorisationResponse>builder().payload(new SpiVerifyScaAuthorisationResponse(ConsentStatus.VALID))
return SpiResponse.<SpiVerifyScaAuthorisationResponse>builder().payload(
new SpiVerifyScaAuthorisationResponse(getConsentStatus(consentResponse)))
.aspspConsentData(aspspConsentData.respondWith(consentDataService.store(consentResponse)))
.message(consentResponse.getScaStatus().name()).success();
} finally {
Expand Down Expand Up @@ -246,6 +245,15 @@ public SpiResponse<List<SpiAuthenticationObject>> requestAvailableScaMethods(@No
}
}

ConsentStatus getConsentStatus(SCAConsentResponseTO consentResponse) {
if (consentResponse != null
&& consentResponse.isMultilevelScaRequired()
&& consentResponse.isPartiallyAuthorised()
&& FINALISED.equals(consentResponse.getScaStatus())) {
return ConsentStatus.PARTIALLY_AUTHORISED;
}
return ConsentStatus.VALID;
}

private <T extends SpiInitiateAisConsentResponse> SpiResponse<T> firstCallInstantiatingConsent(
@NotNull SpiAccountConsent accountConsent,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package de.adorsys.aspsp.xs2a.connector.spi.impl;

import de.adorsys.aspsp.xs2a.connector.spi.converter.AisConsentMapper;
import de.adorsys.aspsp.xs2a.connector.spi.converter.ScaLoginToConsentResponseMapper;
import de.adorsys.aspsp.xs2a.connector.spi.converter.ScaMethodConverter;
import de.adorsys.ledgers.middleware.api.domain.sca.SCAConsentResponseTO;
import de.adorsys.ledgers.middleware.api.domain.sca.ScaStatusTO;
import de.adorsys.ledgers.middleware.api.service.TokenStorageService;
import de.adorsys.ledgers.rest.client.AuthRequestInterceptor;
import de.adorsys.ledgers.rest.client.ConsentRestClient;
import de.adorsys.psd2.xs2a.core.consent.ConsentStatus;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.Assert.assertEquals;

@RunWith(MockitoJUnitRunner.class)
public class AisConsentSpiImplTest {

@InjectMocks
private AisConsentSpiImpl spi;

@Mock private ConsentRestClient consentRestClient;
@Mock private TokenStorageService tokenStorageService;
@Mock private AisConsentMapper aisConsentMapper;
@Mock private AuthRequestInterceptor authRequestInterceptor;
@Mock private AspspConsentDataService consentDataService;
@Mock private GeneralAuthorisationService authorisationService;
@Mock private ScaMethodConverter scaMethodConverter;
@Mock private ScaLoginToConsentResponseMapper scaLoginToConsentResponseMapper;

@Test
public void getConsentStatus() {
assertEquals(ConsentStatus.VALID, spi.getConsentStatus(null));

SCAConsentResponseTO consentResponse = new SCAConsentResponseTO();
assertEquals(ConsentStatus.VALID, spi.getConsentStatus(consentResponse));

consentResponse.setMultilevelScaRequired(true);
assertEquals(ConsentStatus.VALID, spi.getConsentStatus(consentResponse));

consentResponse.setPartiallyAuthorised(true);
assertEquals(ConsentStatus.VALID, spi.getConsentStatus(consentResponse));

consentResponse.setScaStatus(ScaStatusTO.FINALISED);
assertEquals(ConsentStatus.PARTIALLY_AUTHORISED, spi.getConsentStatus(consentResponse));
}
}

0 comments on commit f80c1ba

Please sign in to comment.