package no.difi.sdp.client2.internal;
import no.difi.begrep.sdp.schema_v10.SDPFeiltype;
import no.difi.begrep.sdp.schema_v10.SDPVarslingskanal;
import no.difi.sdp.client2.ObjectMother;
import no.difi.sdp.client2.domain.Prioritet;
import no.difi.sdp.client2.domain.kvittering.AapningsKvittering;
import no.difi.sdp.client2.domain.kvittering.Feil;
import no.difi.sdp.client2.domain.kvittering.KvitteringForespoersel;
import no.difi.sdp.client2.domain.kvittering.LeveringsKvittering;
import no.difi.sdp.client2.domain.kvittering.MottaksKvittering;
import no.difi.sdp.client2.domain.kvittering.ReturpostKvittering;
import no.difi.sdp.client2.domain.kvittering.VarslingFeiletKvittering;
import no.digipost.api.representations.EbmsApplikasjonsKvittering;
import no.digipost.api.representations.EbmsOutgoingMessage;
import no.digipost.api.representations.EbmsPullRequest;
import no.digipost.api.representations.Organisasjonsnummer;
import org.junit.Test;
import static no.difi.sdp.client2.ObjectMother.createEbmsAapningsKvittering;
import static no.difi.sdp.client2.ObjectMother.createEbmsFeil;
import static no.difi.sdp.client2.ObjectMother.createEbmsLeveringsKvittering;
import static no.difi.sdp.client2.ObjectMother.createEbmsVarslingFeiletKvittering;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
public class KvitteringBuilderTest {
private final KvitteringBuilder kvitteringBuilder = new KvitteringBuilder();
@Test
public void should_build_pull_request_with_standard_priority_and_mpc() {
KvitteringForespoersel kvitteringForespoersel = KvitteringForespoersel.builder(Prioritet.NORMAL).mpcId("mpcId").build();
Organisasjonsnummer organisasjonsnummer = Organisasjonsnummer.of("988015814");
EbmsPullRequest ebmsPullRequest = kvitteringBuilder.buildEbmsPullRequest(organisasjonsnummer, kvitteringForespoersel);
assertThat(ebmsPullRequest.getEbmsMottaker().orgnr, equalTo(organisasjonsnummer));
assertThat(ebmsPullRequest.prioritet, equalTo(EbmsOutgoingMessage.Prioritet.NORMAL));
assertThat(ebmsPullRequest.mpcId, equalTo("mpcId"));
}
@Test
public void should_build_pull_request_with_standard_high_priority_and_null_mpc() {
KvitteringForespoersel kvitteringForespoersel = KvitteringForespoersel.builder(Prioritet.PRIORITERT).build();
Organisasjonsnummer organisasjonsnummer = Organisasjonsnummer.of("988015814");
EbmsPullRequest ebmsPullRequest = kvitteringBuilder.buildEbmsPullRequest(organisasjonsnummer, kvitteringForespoersel);
assertThat(ebmsPullRequest.getEbmsMottaker().orgnr, equalTo(organisasjonsnummer));
assertThat(ebmsPullRequest.prioritet, equalTo(EbmsOutgoingMessage.Prioritet.PRIORITERT));
assertThat(ebmsPullRequest.mpcId, is(nullValue()));
}
@Test
public void should_build_aapnings_kvittering() {
EbmsApplikasjonsKvittering ebmsKvittering = createEbmsAapningsKvittering();
AapningsKvittering aapningKvittering = (AapningsKvittering) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(aapningKvittering.getKonversasjonsId());
assertNotNull(aapningKvittering.getTidspunkt());
}
@Test
public void builds_leverings_kvittering() {
EbmsApplikasjonsKvittering ebmsKvittering = createEbmsLeveringsKvittering();
LeveringsKvittering leveringsKvittering = (LeveringsKvittering) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(leveringsKvittering.getKonversasjonsId());
assertNotNull(leveringsKvittering.getTidspunkt());
assertNotNull(leveringsKvittering.getReferanseTilMeldingId());
assertNotNull(leveringsKvittering.getMeldingsId());
assertNotNull(leveringsKvittering.getReferanseTilMeldingSomKvitteres());
}
@Test
public void builds_mottaks_kvittering() {
EbmsApplikasjonsKvittering ebmsKvittering = ObjectMother.createEbmsMottaksKvittering();
MottaksKvittering mottaksKvittering = (MottaksKvittering) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(mottaksKvittering.getKonversasjonsId());
assertNotNull(mottaksKvittering.getTidspunkt());
assertNotNull(mottaksKvittering.getReferanseTilMeldingId());
assertNotNull(mottaksKvittering.getMeldingsId());
assertNotNull(mottaksKvittering.getReferanseTilMeldingSomKvitteres());
}
@Test
public void builds_returpost_kvittering() {
EbmsApplikasjonsKvittering ebmsKvittering = ObjectMother.createEbmsReturpostKvittering();
ReturpostKvittering returpostKvittering = (ReturpostKvittering) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(returpostKvittering.getKonversasjonsId());
assertNotNull(returpostKvittering.getTidspunkt());
assertNotNull(returpostKvittering.getReferanseTilMeldingId());
assertNotNull(returpostKvittering.getMeldingsId());
assertNotNull(returpostKvittering.getReferanseTilMeldingSomKvitteres());
}
@Test
public void builds_varsling_feilet_epost_kvittering() {
EbmsApplikasjonsKvittering ebmsKvittering = createEbmsVarslingFeiletKvittering(SDPVarslingskanal.EPOST);
VarslingFeiletKvittering varslingFeiletKvittering = (VarslingFeiletKvittering) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(varslingFeiletKvittering.getKonversasjonsId());
assertNotNull(varslingFeiletKvittering.getTidspunkt());
assertNotNull(varslingFeiletKvittering.getReferanseTilMeldingId());
assertNotNull(varslingFeiletKvittering.getMeldingsId());
assertNotNull(varslingFeiletKvittering.getReferanseTilMeldingSomKvitteres());
assertThat(varslingFeiletKvittering.getBeskrivelse(), equalTo("Varsling feilet 'Viktig brev'"));
assertThat(varslingFeiletKvittering.getVarslingskanal(), equalTo(VarslingFeiletKvittering.Varslingskanal.EPOST));
}
@Test
public void builds_varsling_feilet_sms_kvittering() {
EbmsApplikasjonsKvittering ebmsKvittering = createEbmsVarslingFeiletKvittering(SDPVarslingskanal.SMS);
VarslingFeiletKvittering varslingFeiletKvittering = (VarslingFeiletKvittering) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(varslingFeiletKvittering.getKonversasjonsId());
assertNotNull(varslingFeiletKvittering.getTidspunkt());
assertNotNull(varslingFeiletKvittering.getReferanseTilMeldingId());
assertNotNull(varslingFeiletKvittering.getMeldingsId());
assertNotNull(varslingFeiletKvittering.getReferanseTilMeldingSomKvitteres());
assertThat((varslingFeiletKvittering).getBeskrivelse(), equalTo("Varsling feilet 'Viktig brev'"));
assertThat((varslingFeiletKvittering).getVarslingskanal(), equalTo(VarslingFeiletKvittering.Varslingskanal.SMS));
}
@Test
public void builds_klient_feil() {
EbmsApplikasjonsKvittering ebmsKvittering = createEbmsFeil(SDPFeiltype.KLIENT);
Feil feil = (Feil) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(feil.getKonversasjonsId());
assertNotNull(feil.getTidspunkt());
assertNotNull(feil.getReferanseTilMeldingId());
assertNotNull(feil.getMeldingsId());
assertNotNull(feil.getReferanseTilMeldingSomKvitteres());
assertThat(feil.getFeiltype(), equalTo(Feil.Feiltype.KLIENT));
assertThat(feil.getDetaljer(), equalTo("Feilinformasjon"));
}
@Test
public void builds_server_feil() {
EbmsApplikasjonsKvittering ebmsKvittering = createEbmsFeil(SDPFeiltype.SERVER);
Feil feil = (Feil) kvitteringBuilder.buildForretningsKvittering(ebmsKvittering);
assertNotNull(feil.getKonversasjonsId());
assertNotNull(feil.getTidspunkt());
assertNotNull(feil.getReferanseTilMeldingId());
assertNotNull(feil.getMeldingsId());
assertNotNull(feil.getReferanseTilMeldingSomKvitteres());
assertThat(feil.getFeiltype(), equalTo(Feil.Feiltype.SERVER));
assertThat(feil.getDetaljer(), equalTo("Feilinformasjon"));
}
}