package no.difi.sdp.client2.domain;
import no.difi.begrep.sdp.schema_v10.SDPDigitalPost;
import no.difi.sdp.client2.ObjectMother;
import no.difi.sdp.client2.domain.digital_post.DigitalPost;
import no.difi.sdp.client2.domain.digital_post.Sikkerhetsnivaa;
import no.difi.sdp.client2.domain.fysisk_post.FysiskPost;
import no.difi.sdp.client2.domain.fysisk_post.KonvoluttAdresse;
import no.difi.sdp.client2.domain.fysisk_post.Landkoder;
import no.difi.sdp.client2.domain.fysisk_post.Posttype;
import no.difi.sdp.client2.domain.fysisk_post.Returhaandtering;
import no.difi.sdp.client2.domain.fysisk_post.Utskriftsfarge;
import no.difi.sdp.client2.internal.SDPBuilder;
import no.digipost.api.representations.Organisasjonsnummer;
import org.junit.Before;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import static no.difi.sdp.client2.ObjectMother.mottaker;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
public class ForsendelseTest {
private DigitalPost digitalPost;
private Dokumentpakke dokumentpakke;
private Forsendelse forsendelse;
@Before
public void setup() {
Mottaker mottaker = mottaker();
digitalPost = DigitalPost.builder(mottaker, "Denne tittelen er ikke sensitiv")
.build();
Dokument hovedDokument = Dokument.builder("Sensitiv brevtittel", "faktura.pdf", new ByteArrayInputStream("hei".getBytes()))
.mimeType("application/pdf")
.build();
dokumentpakke = Dokumentpakke.builder(hovedDokument)
.vedlegg(new ArrayList<Dokument>())
.build();
Avsender avsender = ObjectMother.avsender();
forsendelse = Forsendelse.digital(avsender, digitalPost, dokumentpakke)
.build();
}
@Test
public void default_sikkerhetsnivaa_er_satt_til_4() {
assertThat(forsendelse.getDigitalPost().getSikkerhetsnivaa(), equalTo(Sikkerhetsnivaa.NIVAA_4));
}
@Test
public void default_prioritet_er_satt_til_NORMAL() {
assertThat(forsendelse.getPrioritet(), equalTo(Prioritet.NORMAL));
}
@Test
public void default_konversasjonsId_er_satt() {
assertThat(forsendelse.getKonversasjonsId(), notNullValue());
}
@Test
public void fysisk_post_faar_land_eller_landkode() {
FysiskPost adresse = FysiskPost.builder()
.adresse(KonvoluttAdresse.build("Rall").iUtlandet("Sweden Main Street", null, null, null, Landkoder.Predefinert.SVERIGE).build())
.retur(Returhaandtering.MAKULERING_MED_MELDING, KonvoluttAdresse.build("Rall").iUtlandet("Hungary street 2", null, null, null, "Ungarn").build())
.sendesMed(Posttype.A_PRIORITERT)
.utskrift(Utskriftsfarge.FARGE, new TekniskMottaker(Organisasjonsnummer.of("988015814"), null)).build();
Forsendelse fysiskForsendelse = Forsendelse.fysisk(ObjectMother.avsender(), adresse,
Dokumentpakke.builder(Dokument.builder("Sensitiv brevtittel", "faktura.pdf", new ByteArrayInputStream("hei".getBytes())).build()).build()).build();
assertThat(fysiskForsendelse.type, equalTo(Forsendelse.Type.FYSISK));
assertThat(fysiskForsendelse.getFysiskPost().getAdresse().getLandkode(), equalTo("SE"));
assertThat(fysiskForsendelse.getFysiskPost().getAdresse().getLand(), is(nullValue()));
assertThat(fysiskForsendelse.getFysiskPost().getReturadresse().getLand(), equalTo("Ungarn"));
assertThat(fysiskForsendelse.getFysiskPost().getReturadresse().getLandkode(), is(nullValue()));
SDPDigitalPost sdpDigitalPost = new SDPBuilder().buildDigitalPost(fysiskForsendelse);
assertThat(sdpDigitalPost.getFysiskPostInfo().getMottaker().getUtenlandskAdresse().getLand(), is(nullValue()));
assertThat(sdpDigitalPost.getFysiskPostInfo().getMottaker().getUtenlandskAdresse().getLandkode(), equalTo("SE"));
assertThat(sdpDigitalPost.getFysiskPostInfo().getRetur().getMottaker().getUtenlandskAdresse().getLandkode(), is(nullValue()));
assertThat(sdpDigitalPost.getFysiskPostInfo().getRetur().getMottaker().getUtenlandskAdresse().getLand(), equalTo("Ungarn"));
}
}