Skip to content

Commit bc5f7a4

Browse files
committed
Refactor AaregClient: improve environment variable handling and enhance request mapping logic #deploy-test-dolly-backend
1 parent 1f063e3 commit bc5f7a4

6 files changed

Lines changed: 36 additions & 84 deletions

File tree

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/aareg/AaregClient.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@
3131

3232
import static java.util.Objects.isNull;
3333
import static java.util.Objects.nonNull;
34-
import static no.nav.dolly.bestilling.aareg.util.AaregUtility.*;
34+
import static no.nav.dolly.bestilling.aareg.util.AaregUtility.appendPermisjonPermitteringId;
35+
import static no.nav.dolly.bestilling.aareg.util.AaregUtility.doEksistenssjekk;
36+
import static no.nav.dolly.bestilling.aareg.util.AaregUtility.isEqualArbeidsforhold;
3537
import static no.nav.dolly.errorhandling.ErrorStatusDecoder.getInfoVenter;
3638
import static no.nav.dolly.util.EnvironmentsCrossConnect.Type.Q1_AND_Q2;
37-
import static no.nav.dolly.util.EnvironmentsCrossConnect.Type.Q4_TO_Q1;
3839
import static no.nav.dolly.util.EnvironmentsCrossConnect.crossConnect;
3940
import static org.apache.commons.lang3.StringUtils.isBlank;
4041
import static org.apache.commons.lang3.StringUtils.isNotBlank;
@@ -44,6 +45,7 @@
4445
@RequiredArgsConstructor
4546
public class AaregClient implements ClientRegister {
4647

48+
public static final Set<String> MILJOER_SUPPORTED = Set.of("q1", "q2", "q4");
4749
public static final String IDENT = "Ident";
4850
private static final String SYSTEM = "AAREG";
4951

@@ -56,9 +58,12 @@ public class AaregClient implements ClientRegister {
5658
@Override
5759
public Flux<ClientFuture> gjenopprett(RsDollyUtvidetBestilling bestilling, DollyPerson dollyPerson, BestillingProgress progress, boolean isOpprettEndre) {
5860

59-
if (!bestilling.getAareg().isEmpty()) {
61+
if (!bestilling.getAareg().isEmpty() &&
62+
bestilling.getAareg().stream().anyMatch(aareg -> nonNull(aareg.getArbeidsgiver()))) {
63+
64+
var miljoer = bestilling.getEnvironments();
65+
miljoer.retainAll(MILJOER_SUPPORTED);
6066

61-
var miljoer = crossConnect(bestilling.getEnvironments(), Q4_TO_Q1);
6267
if (dollyPerson.getBruker().getBrukertype() == Bruker.Brukertype.BANKID) {
6368
miljoer = crossConnect(miljoer, Q1_AND_Q2);
6469
}
@@ -108,7 +113,11 @@ private Mono<String> sendArbeidsforhold(RsDollyUtvidetBestilling bestilling, Dol
108113

109114
MappingContext context = new MappingContext.Factory().getContext();
110115
context.setProperty(IDENT, dollyPerson.getIdent());
111-
var arbeidsforholdRequest = mapperFacade.mapAsList(bestilling.getAareg(), Arbeidsforhold.class, context);
116+
117+
var arbeidsforholdRequest = bestilling.getAareg().stream()
118+
.filter(aareg -> nonNull(aareg.getArbeidsgiver()))
119+
.map(aareg -> mapperFacade.map(bestilling.getAareg(), Arbeidsforhold.class, context))
120+
.toList();
112121

113122
return aaregConsumer.getAccessToken()
114123
.flatMapMany(token -> Flux.fromIterable(miljoer)

apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/organisasjonforvalter/OrganisasjonClient.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
import static java.util.Objects.isNull;
3030
import static java.util.Objects.nonNull;
3131
import static java.util.Objects.requireNonNull;
32-
import static no.nav.dolly.util.EnvironmentsCrossConnect.Type.Q4_TO_Q1;
33-
import static no.nav.dolly.util.EnvironmentsCrossConnect.crossConnect;
3432
import static org.apache.commons.lang3.StringUtils.isNotBlank;
3533

3634
@Slf4j
@@ -56,7 +54,7 @@ public void opprett(RsOrganisasjonBestilling request, OrganisasjonBestilling bes
5654

5755
Set<String> orgnumre = new HashSet<>();
5856

59-
var miljoer = crossConnect(request.getEnvironments(), Q4_TO_Q1);
57+
var miljoer = request.getEnvironments();
6058

6159
bestillingRequest.getOrganisasjoner().forEach(organisasjon -> {
6260

@@ -67,7 +65,7 @@ public void opprett(RsOrganisasjonBestilling request, OrganisasjonBestilling bes
6765
orgnumre.addAll(requireNonNull(response.getBody()).getOrgnummer());
6866
if (!organisasjonProgressService.fetchOrganisasjonBestillingProgressByBestillingsId(bestilling.getId()).isEmpty()) {
6967
List<OrganisasjonBestillingProgress> organisasjonBestillingProgresses = organisasjonProgressService.fetchOrganisasjonBestillingProgressByBestillingsId(bestilling.getId());
70-
OrganisasjonBestillingProgress organisasjonBestillingProgress = organisasjonBestillingProgresses.get(0);
68+
OrganisasjonBestillingProgress organisasjonBestillingProgress = organisasjonBestillingProgresses.getFirst();
7169
organisasjonBestillingProgress.setBestilling(bestilling);
7270
organisasjonBestillingProgress.setOrganisasjonsnummer(requireNonNull(response.getBody().getOrgnummer().iterator().next()));
7371
organisasjonBestillingProgress.setOrganisasjonsforvalterStatus(miljoer.stream().map(env -> env + ":Deployer").collect(Collectors.joining(",")));
@@ -88,7 +86,7 @@ public void opprett(RsOrganisasjonBestilling request, OrganisasjonBestilling bes
8886
@Async
8987
public void gjenopprett(DeployRequest request, OrganisasjonBestilling bestilling) {
9088

91-
var miljoer = crossConnect(request.getEnvironments(), Q4_TO_Q1);
89+
var miljoer = request.getEnvironments();
9290
organisasjonProgressService.save(OrganisasjonBestillingProgress.builder()
9391
.bestilling(bestilling)
9492
.organisasjonsnummer(request.getOrgnumre().iterator().next())
@@ -121,13 +119,13 @@ private void deployOrganisasjon(Set<String> orgnumre, OrganisasjonBestilling bes
121119

122120
if (!organisasjonProgressService.fetchOrganisasjonBestillingProgressByBestillingsId(bestilling.getId()).isEmpty()) {
123121
List<OrganisasjonBestillingProgress> organisasjonBestillingProgresses = organisasjonProgressService.fetchOrganisasjonBestillingProgressByBestillingsId(bestilling.getId());
124-
organisasjonBestillingProgress = organisasjonBestillingProgresses.get(0);
122+
organisasjonBestillingProgress = organisasjonBestillingProgresses.getFirst();
125123
}
126124

127-
if (deployResponse.getBody().getOrgStatus().get(organisasjonBestillingProgress.getOrganisasjonsnummer()).get(0).getStatus().name().contains("ERROR")) {
125+
if (deployResponse.getBody().getOrgStatus().get(organisasjonBestillingProgress.getOrganisasjonsnummer()).getFirst().getStatus().name().contains("ERROR")) {
128126
organisasjonBestillingService.setBestillingFeil(
129127
bestilling.getId(),
130-
deployResponse.getBody().getOrgStatus().get(organisasjonBestillingProgress.getOrganisasjonsnummer()).get(0).getDetails());
128+
deployResponse.getBody().getOrgStatus().get(organisasjonBestillingProgress.getOrganisasjonsnummer()).getFirst().getDetails());
131129
}
132130

133131
organisasjonBestillingProgress.setBestilling(bestilling);

apps/dolly-backend/src/main/java/no/nav/dolly/domain/resultset/BAFeilkoder.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
package no.nav.dolly.domain.resultset;
22

3-
import jakarta.persistence.Embeddable;
43
import lombok.AllArgsConstructor;
5-
import lombok.Builder;
64
import lombok.Getter;
75
import lombok.NoArgsConstructor;
8-
import lombok.Setter;
96

107
@Getter
11-
@Embeddable
128
@NoArgsConstructor
139
@AllArgsConstructor
1410
public enum BAFeilkoder {
11+
BA10("Arbeidsforholdet mangler virksomhet."),
1512
BA20("En verdi er utenfor det gyldige intervallet for feltet."),
1613
BA30("Et organisasjonsnummer har ugyldig format."),
1714
BA40("Et fødselsnummer har ugyldig format."),
@@ -39,15 +36,4 @@ public enum BAFeilkoder {
3936
BA194("Det skal kun være mulig å sette feltene Stillingsprosent og Antall timer i full stilling hvis arbeidsforholdet er sist endret av a-ordningen");
4037

4138
private String beskrivelse;
42-
43-
@Getter
44-
@Setter
45-
@Builder
46-
@NoArgsConstructor
47-
@AllArgsConstructor
48-
public static class BABeskrivelse {
49-
50-
private String baKode;
51-
private String beskrivelse;
52-
}
5339
}

apps/dolly-backend/src/main/java/no/nav/dolly/util/EnvironmentsCrossConnect.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,7 @@ public class EnvironmentsCrossConnect {
1212
public static Set<String> crossConnect(Set<String> environments, Type type) {
1313
var connected = new HashSet<>(environments);
1414
return switch (type) {
15-
case Q4_TO_Q1 -> {
16-
// Krysskobling av miljøer Q4 -> Q1 etter ønske fra pensjon
17-
log.info("Krysskobler miljøer Q4 -> Q1");
18-
if (connected.contains("q4")) {
19-
connected.add("q1");
20-
}
21-
yield connected;
22-
}
15+
2316
case Q1_AND_Q2 -> {
2417
if (connected.contains("q1")) {
2518
log.info("Krysskobler miljøer Q1 -> Q2");
@@ -34,8 +27,6 @@ public static Set<String> crossConnect(Set<String> environments, Type type) {
3427
}
3528

3629
public enum Type {
37-
Q4_TO_Q1,
3830
Q1_AND_Q2
3931
}
40-
4132
}

apps/dolly-backend/src/test/java/no/nav/dolly/bestilling/aareg/AaregClientTest.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package no.nav.dolly.bestilling.aareg;
22

33
import ma.glasnost.orika.MapperFacade;
4-
import ma.glasnost.orika.MappingContext;
54
import no.nav.dolly.bestilling.ClientFuture;
65
import no.nav.dolly.bestilling.aareg.domain.ArbeidsforholdRespons;
76
import no.nav.dolly.config.ApplicationConfig;
@@ -30,6 +29,8 @@
3029
import reactor.core.publisher.Mono;
3130
import reactor.test.StepVerifier;
3231

32+
import java.util.HashSet;
33+
3334
import static java.util.Collections.singleton;
3435
import static java.util.Collections.singletonList;
3536
import static org.hamcrest.CoreMatchers.equalTo;
@@ -46,7 +47,7 @@
4647
class AaregClientTest {
4748

4849
private static final String IDENT = "111111111111";
49-
private static final String ENV = "u2";
50+
private static final String ENV = "q2";
5051
private static final String ORGNUMMER = "222222222";
5152

5253
@Mock
@@ -78,9 +79,6 @@ class AaregClientTest {
7879

7980
@BeforeEach
8081
void setup() {
81-
when(applicationConfig.getClientTimeout()).thenReturn(30L);
82-
when(aaregConsumer.getAccessToken())
83-
.thenReturn(Mono.just(accessToken));
8482
statusCaptor = ArgumentCaptor.forClass(String.class);
8583
}
8684

@@ -112,14 +110,6 @@ private static ArbeidsforholdRespons buildArbeidsforhold(boolean isOrgnummer) {
112110

113111
@Test
114112
void gjenopprettArbeidsforhold_intetTidligereArbeidsforholdFinnes_OK() {
115-
when(mapperFacade.mapAsList(anyList(), eq(Arbeidsforhold.class), any()))
116-
.thenReturn(singletonList(new Arbeidsforhold()));
117-
when(aaregConsumer.hentArbeidsforhold(IDENT, ENV, accessToken))
118-
.thenReturn(Mono.just(new ArbeidsforholdRespons()));
119-
when(aaregConsumer.opprettArbeidsforhold(any(Arbeidsforhold.class), eq(ENV), eq(accessToken)))
120-
.thenReturn(Flux.just(new ArbeidsforholdRespons()));
121-
when(mapperFacade.mapAsList(anyList(), eq(Arbeidsforhold.class)))
122-
.thenReturn(buildArbeidsforhold(true).getEksisterendeArbeidsforhold());
123113

124114
var request = new RsDollyBestillingRequest();
125115
request.setAareg(singletonList(RsAareg.builder().build()));
@@ -134,6 +124,9 @@ void gjenopprettArbeidsforhold_intetTidligereArbeidsforholdFinnes_OK() {
134124

135125
@Test
136126
void gjenopprettArbeidsforhold_tidligereArbeidsforholdFinnesAktoerPerson_returnsOK() {
127+
when(applicationConfig.getClientTimeout()).thenReturn(30L);
128+
when(aaregConsumer.getAccessToken())
129+
.thenReturn(Mono.just(accessToken));
137130
var request = new RsDollyBestillingRequest();
138131
request.setAareg(singletonList(RsAareg.builder()
139132
.arbeidsgiver(RsAktoerPerson.builder().ident(IDENT).build())
@@ -144,9 +137,6 @@ void gjenopprettArbeidsforhold_tidligereArbeidsforholdFinnesAktoerPerson_returns
144137
when(aaregConsumer.hentArbeidsforhold(IDENT, ENV, accessToken))
145138
.thenReturn(Mono.just(
146139
buildArbeidsforhold(false)));
147-
when(mapperFacade.mapAsList(anyList(), eq(Arbeidsforhold.class), any(MappingContext.class)))
148-
.thenReturn(buildArbeidsforhold(false)
149-
.getEksisterendeArbeidsforhold());
150140
when(aaregConsumer.endreArbeidsforhold(any(Arbeidsforhold.class), eq(ENV), eq(accessToken)))
151141
.thenReturn(Flux.just(ArbeidsforholdRespons.builder()
152142
.miljo(ENV)
@@ -163,27 +153,27 @@ void gjenopprettArbeidsforhold_tidligereArbeidsforholdFinnesAktoerPerson_returns
163153
.assertNext(status -> {
164154
verify(transactionHelperService, times(2))
165155
.persister(any(BestillingProgress.class), any(), any(), statusCaptor.capture());
166-
assertThat(statusCaptor.getAllValues().get(0), is(equalTo("u2:Info= Oppretting startet mot AAREG ...")));
167-
assertThat(statusCaptor.getAllValues().get(1), is(equalTo("u2: arbforhold=1$OK")));
156+
assertThat(statusCaptor.getAllValues().get(0), is(equalTo("q2:Info= Oppretting startet mot AAREG ...")));
157+
assertThat(statusCaptor.getAllValues().get(1), is(equalTo("q2: arbforhold=1$OK")));
168158
})
169159
.verifyComplete();
170160
}
171161

172162
@Test
173163
void gjenopprettArbeidsforhold_tidligereArbeidsforholdFinnesAktoerOrganisasjon_returnsOK() {
164+
when(applicationConfig.getClientTimeout()).thenReturn(30L);
165+
when(aaregConsumer.getAccessToken())
166+
.thenReturn(Mono.just(accessToken));
174167
var request = new RsDollyBestillingRequest();
175168
request.setAareg(singletonList(RsAareg.builder()
176169
.arbeidsgiver(RsOrganisasjon.builder().orgnummer(ORGNUMMER).build())
177170
.arbeidsforholdId("1")
178171
.isOppdatering(true)
179172
.build()));
180-
request.setEnvironments(singleton(ENV));
173+
request.setEnvironments(new HashSet<>(singleton(ENV)));
181174

182175
when(aaregConsumer.hentArbeidsforhold(IDENT, ENV, accessToken))
183176
.thenReturn(Mono.just(buildArbeidsforhold(true)));
184-
when(mapperFacade.mapAsList(anyList(), eq(Arbeidsforhold.class), any(MappingContext.class)))
185-
.thenReturn(buildArbeidsforhold(true)
186-
.getEksisterendeArbeidsforhold());
187177
when(aaregConsumer.endreArbeidsforhold(any(Arbeidsforhold.class), eq(ENV), eq(accessToken)))
188178
.thenReturn(Flux.just(ArbeidsforholdRespons.builder()
189179
.miljo(ENV)
@@ -199,8 +189,8 @@ void gjenopprettArbeidsforhold_tidligereArbeidsforholdFinnesAktoerOrganisasjon_r
199189
.assertNext(status -> {
200190
verify(transactionHelperService, times(2))
201191
.persister(any(BestillingProgress.class), any(), any(), statusCaptor.capture());
202-
assertThat(statusCaptor.getAllValues().get(0), is(equalTo("u2:Info= Oppretting startet mot AAREG ...")));
203-
assertThat(statusCaptor.getAllValues().get(1), is(equalTo("u2: arbforhold=1$OK")));
192+
assertThat(statusCaptor.getAllValues().get(0), is(equalTo("q2:Info= Oppretting startet mot AAREG ...")));
193+
assertThat(statusCaptor.getAllValues().get(1), is(equalTo("q2: arbforhold=1$OK")));
204194
})
205195
.verifyComplete();
206196
}

apps/dolly-backend/src/test/java/no/nav/dolly/util/EnvironmentsCrossConnectTest.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,11 @@
77
import java.util.Set;
88

99
import static no.nav.dolly.util.EnvironmentsCrossConnect.Type.Q1_AND_Q2;
10-
import static no.nav.dolly.util.EnvironmentsCrossConnect.Type.Q4_TO_Q1;
1110
import static no.nav.dolly.util.EnvironmentsCrossConnect.crossConnect;
1211
import static org.assertj.core.api.Assertions.assertThat;
1312

1413
class EnvironmentsCrossConnectTest {
1514

16-
@Test
17-
@DisplayName("Manglende Q4 fører til at Q1 ikke blir lagt til")
18-
void nothingAddedIfMissingQ4() {
19-
var environments = Set.of("q2", "q3");
20-
assertThat(crossConnect(environments, Q4_TO_Q1)).containsAll(List.of("q2", "q3"));
21-
}
22-
23-
@Test
24-
@DisplayName("Q4 fører til at Q1 blir lagt til")
25-
void q1AddedFromQ4() {
26-
var environments = Set.of("q3", "q4");
27-
assertThat(crossConnect(environments, Q4_TO_Q1)).containsAll(List.of("q1", "q3", "q4"));
28-
}
29-
30-
@Test
31-
@DisplayName(("Q4 fører ikke til at Q1 blir duplisert"))
32-
void q1NotDuplicatedFromQ4() {
33-
var environments = Set.of("q1", "q3", "q4");
34-
assertThat(crossConnect(environments, Q4_TO_Q1)).containsAll(List.of("q1", "q3", "q4"));
35-
}
36-
3715
@Test
3816
@DisplayName("Manglende Q1 og manglende Q2 fører til ikke til krysskobling")
3917
void q1AndQ2AddedFromQ1() {

0 commit comments

Comments
 (0)