Skip to main content

Metody do diagnozowania odpowiedzi od ASPSP i mockowania odpowiedzi z PSD2HUB API

Maxime avatar
Written by Maxime
Updated over 4 months ago

Metoda GET api/bank/##{{bankId}}/diagnose

Istnieje możliwość przetestowania calli do poszczególnych endpointów ASPSP poprzez wywołanie metody /diagnose dla istniejącego użytkownika w bazie (z aktywną zgodą oraz aktywnym access_tokenem).

Wywołanie metody odpyta poszczególne metody (rachunki, szczegóły rachunków, transakcje, szczegóły transakcji, refresh token) i wypisze błędy, jeżeli takie są. Dane biznesowe zwrócone przez API nie zostaną zapisane do bazy (oprócz strzału o refresh_token, który w przypadku wygaśnięcia access_tokena umożliwi wywołanie metod o resource).

image-20200130-091409__1_.png

Przykładowy strzał (CURL):

  • -header 'api-clientId: sandbox' \

  • -header 'Accept-Language: en-gb' \

  • -header 'IP: 121.1.0.1' \

  • -header 'api-userId: regression_AISP_ALBPPLPW_2020-01-10T09:07:26.132Z'

Metoda GET /api/v2/callback/{flow}/{authType}/url (z parametrem mock)

Metoda do testowania scenariuszy pozytywnych i negatywnych.

  • Dla endpointu

    GET api/callback/aisp/oAuth

    dla scenariusza testowego, gdzie state=XS2A_TEST_FAILURE

    zwracana jest odpowiedź success=false, (response)sessionId=(request)state i (response)sessionExternalId=sessionId(request)

image-20200410-122456__1_.png
  • Dla endpointu

    GET api/callback/aisp/oAuth

    dla scenariusza testowego, gdzie state=XS2A_TEST_SUCCESS

    zwracana jest odpowiedź success=true, (response)sessionId=(request)state i (response)sessionExternalId=sessionId(request)

image-20200410-122539__1_.png

W celu włączenia możliwości mockowania konkretnych eventów w aplikacji, należy:

  • W wybranych konektorach w docker-compose dodać wpis:

    • - Mockconfig__MocksEnabled=true

    • - MockMongoConfig__ConnectionString=${MOCK_CONNECTION_STRING}

  • W env:

    • MOCK_CONNECTION_STRING=MONGODB_MOCK_CONNECTION_STRING=analogiczna_ścieżka_mongo/Mock?replicaSet=xxx

  • W docker-compose w sekscji resta dodać wpis:

    • - MockMongoConfig__ConnectionString=${MOCK_CONNECTION_STRING}

Następnie należy zrestartować wybrane konektory i Rest’a.

Metoda api/mock/session/callback

Zwraca na wyjściu to co zostało podane w BODY na wejściu.

W Body przekazujemy treść callbacka jaki ma się wygenerować.

image-20200410-122204__1_.png

W rezultacie otrzymano taki sam callback na zarejestrowanym URL-u.

image-20200410-122238__1_.png

BAZA MOCK, użycie metod: ##{{api_url}}/mock/user/##{{userId}} i ##{{api_url}}/mock/session/##{{sessionId}}

Eventy które można zmockować:

  • IGetConsentAuthorizationUrls - odpowiada za autoryzacje w banku authorize

  • IAuthorizePsu - odpowiada za wymianę kodu na token token "grant_type": "authorization_code",

  • IRefreshPsuAuthorization - odpowiada za refresh tokenu token "grant_type": "refresh_token",

  • IFetchSingleAccountDetails - odpowiada za pobranie kont /getAccount

  • IFetchAccountTransactions - odpowiada za pobranie transakcji /getTransactions

  • IFetchSingleTransactionDetails - odpowiada za pobranie szczegółów transakcji /getTransactionDetail

  • IPaymentConfirm - odpowiada za inicjację płatności /domestic

  • IGetPaymentStatus - odpowiada za pobranie statusu płatności /getPayment

Wykorzystanie:

Przykład dla /getTransactions

endpoint: ##{{api_url}}/mock/user/##{{userId}}

1{ 2"Event":"IFetchSingleAccountDetails", 3"HttpStatus":500, 4"Body": 5{ 6 7 json jako zwrócona odpowiedź 8 9 10}

Response code : 200

Takie wykorzystanie spowoduje przy odpytaniu o transakcje dla wskazanego usera, odpowiedź taką jaką zapiszemy w body ze statusem HttpStatus: 500

Przykład dla /getPayment

1{ 2"Event":"IGetPaymentStatus", 3"HttpStatus":200, 4"Body": 5{ 6"paymentId":"test","generalStatus":"pending","detailedStatus":"Detailed status","executionMode":"Immediate"} 7} 8 9

Response code : 200

Takie wykorzystanie spowoduje przy odpytaniu o płatność dla wskazanego usera, odpowiedź taka jest w bodu HttpStatus: 200

Usuwanie mocka:

należy usunąć odpowiedni wpis w mongo w bazie <nazwa_bazy>_mock

Did this answer your question?