Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Opplegg for behandlingsnummer inn til PDL #1283

Merged
merged 1 commit into from
May 8, 2023
Merged
Show file tree
Hide file tree
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 @@ -3,6 +3,7 @@
import java.net.HttpURLConnection;
import java.net.http.HttpRequest;
import java.util.List;
import java.util.Optional;

import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLOperationRequest;
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequest;
Expand Down Expand Up @@ -37,6 +38,7 @@ public abstract class AbstractPersonKlient implements Persondata {

private final PdlDefaultErrorHandler errorHandler;
private final Tema tema;
private final Ytelse defaultYtelse;
private final RestClient restKlient;
private final RestConfig restConfig;

Expand All @@ -49,9 +51,14 @@ protected AbstractPersonKlient(Tema tema) {
}

protected AbstractPersonKlient(RestClient restKlient, Tema tema) {
this(restKlient, tema, Ytelse.FORELDREPENGER);
}

protected AbstractPersonKlient(RestClient restKlient, Tema tema, Ytelse ytelse) {
this.restKlient = restKlient;
this.restConfig = RestConfig.forClient(this.getClass());
this.tema = tema;
this.defaultYtelse = ytelse;
this.errorHandler = new PdlDefaultErrorHandler();
}

Expand All @@ -62,7 +69,7 @@ public GeografiskTilknytning hentGT(HentGeografiskTilknytningQueryRequest q, Geo

@Override
public Person hentPerson(HentPersonQueryRequest q, PersonResponseProjection p) {
return query(q, p, HentPersonQueryResponse.class).hentPerson();
return query(defaultYtelse, q, p, HentPersonQueryResponse.class).hentPerson();
}

@Override
Expand All @@ -79,7 +86,29 @@ public Person hentPerson(HentPersonQueryRequest q, PersonResponseProjection p, b

@Override
public List<HentPersonBolkResult> hentPersonBolk(HentPersonBolkQueryRequest q, HentPersonBolkResultResponseProjection p) {
return query(q, p, HentPersonBolkQueryResponse.class).hentPersonBolk();
return query(defaultYtelse, q, p, HentPersonBolkQueryResponse.class).hentPersonBolk();
}

@Override
public Person hentPerson(Ytelse ytelse, HentPersonQueryRequest q, PersonResponseProjection p) {
return query(ytelse, q, p, HentPersonQueryResponse.class).hentPerson();
}

@Override
public Person hentPerson(Ytelse ytelse, HentPersonQueryRequest q, PersonResponseProjection p, boolean ignoreNotFound) {
try {
return hentPerson(ytelse, q, p);
} catch (PdlException e) {
if (e.getStatus() == HttpURLConnection.HTTP_NOT_FOUND && ignoreNotFound) {
return null;
}
throw e;
}
}

@Override
public List<HentPersonBolkResult> hentPersonBolk(Ytelse ytelse, HentPersonBolkQueryRequest q, HentPersonBolkResultResponseProjection p) {
return query(ytelse, q, p, HentPersonBolkQueryResponse.class).hentPersonBolk();
}

@Override
Expand All @@ -94,12 +123,18 @@ public List<HentIdenterBolkResult> hentIdenterBolkResults(HentIdenterBolkQueryRe

@Override
public <T extends GraphQLResult<?>> T query(GraphQLOperationRequest q, GraphQLResponseProjection p, Class<T> clazz) {
return query(new GraphQLRequest(q, p), clazz);
return query(null, new GraphQLRequest(q, p), clazz);
}

@Override
public <T extends GraphQLResult<?>> T query(Ytelse ytelse, GraphQLOperationRequest q, GraphQLResponseProjection p, Class<T> clazz) {
return query(ytelse, new GraphQLRequest(q, p), clazz);
}

private <T extends GraphQLResult<?>> T query(GraphQLRequest req, Class<T> clazz) {
private <T extends GraphQLResult<?>> T query(Ytelse ytelse, GraphQLRequest req, Class<T> clazz) {
var method = new RestRequest.Method(RestRequest.WebMethod.POST, HttpRequest.BodyPublishers.ofString(req.toHttpJsonBody()));
var restRequest = RestRequest.newRequest(method, restConfig.endpoint(), restConfig).header("TEMA", tema.name());
Optional.ofNullable(ytelse).ifPresent(bnr -> restRequest.header("behandlingsnummer", bnr.getBehandlingsnummer()));
var res = restKlient.send(restRequest, clazz);
if (res.hasErrors()) {
return errorHandler.handleError(res.getErrors(), restConfig.endpoint(), PDL_ERROR_RESPONSE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,18 @@ public interface Persondata {

List<HentPersonBolkResult> hentPersonBolk(HentPersonBolkQueryRequest q, HentPersonBolkResultResponseProjection p);

Person hentPerson(Ytelse ytelse, HentPersonQueryRequest q, PersonResponseProjection p);

Person hentPerson(Ytelse ytelse, HentPersonQueryRequest q, PersonResponseProjection p, boolean ignoreNotFound);

List<HentPersonBolkResult> hentPersonBolk(Ytelse ytelse, HentPersonBolkQueryRequest q, HentPersonBolkResultResponseProjection p);

GeografiskTilknytning hentGT(HentGeografiskTilknytningQueryRequest q, GeografiskTilknytningResponseProjection p);

<T extends GraphQLResult<?>> T query(GraphQLOperationRequest q, GraphQLResponseProjection p, Class<T> clazz);

<T extends GraphQLResult<?>> T query(Ytelse ytelse, GraphQLOperationRequest q, GraphQLResponseProjection p, Class<T> clazz);

private Optional<String> hentId(String id, IdentGruppe gruppe, boolean ignoreNotFound) {
var query = new HentIdenterQueryRequest();
query.setIdent(id);
Expand All @@ -87,4 +95,23 @@ private Optional<String> hentId(String id, IdentGruppe gruppe, boolean ignoreNot
throw e;
}
}

enum Ytelse { // Persondata innhentes for ytelse. Default = Foreldrepenger
// Utelatt TILBAKEKREVING("B323") Bruk aktuell ytelse
ENGANGSSTØNAD("B321"),
FORELDREPENGER("B271"),
SVANGERSKAPSPENGER("B322"),
PLEIEPENGER("B249"); // PGA fptilbake

private final String behandlingsnummer;

Ytelse(String behandlingsnummer) {
this.behandlingsnummer = behandlingsnummer;
}

public String getBehandlingsnummer() {
return behandlingsnummer;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,17 @@ void skal_returnere_person() {
assertThat(person.getNavn().get(0).getFornavn()).isNotEmpty();
var rq = captor.getValue();
rq.validateRequest(r -> assertThat(r.headers().map().get("TEMA")).contains("FOR"));
rq.validateRequest(r -> assertThat(r.headers().map().get("behandlingsnummer")).contains(Persondata.Ytelse.FORELDREPENGER.getBehandlingsnummer()));
assertThat(rq.validateDelayedHeaders(Set.of("Authorization", "Nav-Consumer-Token", "Nav-Consumer-Id"))).isTrue();
}

@Test
void skal_returnere_bolk_med_person() {
var resource = getClass().getClassLoader().getResource("pdl/personBolkResponse.json");
var response = DefaultJsonMapper.fromJson(resource, HentPersonBolkQueryResponse.class);
when(restClient.send(any(RestRequest.class), any())).thenReturn(response);
var captor = ArgumentCaptor.forClass(RestRequest.class);

when(restClient.send(captor.capture(), any(Class.class))).thenReturn(response);


var query = new HentPersonBolkQueryRequest();
Expand All @@ -98,12 +101,15 @@ void skal_returnere_bolk_med_person() {
.navn(new NavnResponseProjection().fornavn())
.adressebeskyttelse(new AdressebeskyttelseResponseProjection().gradering()));

var personer = pdlKlient.hentPersonBolk(query, projection);
var personer = pdlKlient.hentPersonBolk(Persondata.Ytelse.SVANGERSKAPSPENGER, query, projection);

assertThat(personer).hasSize(1);
assertThat(personer.get(0).getIdent()).isEqualTo("12345678901");
assertThat(personer.get(0).getPerson().getAdressebeskyttelse()).hasSize(1);
assertThat(personer.get(0).getPerson().getAdressebeskyttelse().get(0).getGradering()).isEqualTo(AdressebeskyttelseGradering.UGRADERT);
var rq = captor.getValue();
rq.validateRequest(r -> assertThat(r.headers().map().get("TEMA")).contains("FOR"));
rq.validateRequest(r -> assertThat(r.headers().map().get("behandlingsnummer")).contains(Persondata.Ytelse.SVANGERSKAPSPENGER.getBehandlingsnummer()));
}

@Test
Expand Down