package no.difi.sdp.client2.internal;
import no.difi.begrep.sdp.schema_v10.SDPManifest;
import no.difi.sdp.client2.domain.AktoerOrganisasjonsnummer;
import no.difi.sdp.client2.domain.Avsender;
import no.difi.sdp.client2.domain.Dokument;
import no.difi.sdp.client2.domain.Dokumentpakke;
import no.difi.sdp.client2.domain.Forsendelse;
import no.difi.sdp.client2.domain.Mottaker;
import no.difi.sdp.client2.domain.digital_post.DigitalPost;
import no.digipost.api.representations.Organisasjonsnummer;
import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
import javax.xml.bind.Marshaller;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Collections;
import static java.nio.charset.StandardCharsets.UTF_8;
import static no.difi.sdp.client2.ObjectMother.mottakerSertifikat;
import static org.hamcrest.Matchers.equalToIgnoringWhiteSpace;
import static org.junit.Assert.assertThat;
public class SDPBuilderManifestTest {
private static final Jaxb2Marshaller marshaller;
static {
marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(SDPManifest.class);
marshaller.setMarshallerProperties(Collections.singletonMap(Marshaller.JAXB_FORMATTED_OUTPUT, true));
}
private SDPBuilder sdpBuilder;
@Before
public void set_up() throws Exception {
sdpBuilder = new SDPBuilder();
}
@Test
public void build_expected_manifest() throws Exception {
String expectedXml = IOUtils.toString(this.getClass().getResourceAsStream("/asic/expected-asic-manifest.xml"), UTF_8);
Avsender avsender = Avsender.builder(AktoerOrganisasjonsnummer.of("123456789").forfremTilAvsender()).fakturaReferanse("ØK1").avsenderIdentifikator("0123456789").build();
Mottaker mottaker = Mottaker.builder("11077941012", "123456", mottakerSertifikat(), Organisasjonsnummer.of("984661185")).build();
Forsendelse forsendelse = Forsendelse.digital(avsender,
DigitalPost.builder(mottaker, "Ikke sensitiv tittel").build(),
Dokumentpakke.builder(Dokument.builder("Vedtak", "vedtak_2398324.pdf", new ByteArrayInputStream("vedtak".getBytes())).mimeType("application/pdf").build()).
vedlegg(
Dokument.builder("informasjon", "info.html", new ByteArrayInputStream("info".getBytes())).mimeType("text/html").build(),
Dokument.builder("journal", "journal.txt", new ByteArrayInputStream("journal".getBytes())).mimeType("text/plain").build())
.build())
.build();
SDPManifest manifest = sdpBuilder.createManifest(forsendelse);
ByteArrayOutputStream xmlBytes = new ByteArrayOutputStream();
marshaller.marshal(manifest, new StreamResult(xmlBytes));
assertThat(xmlBytes.toString("UTF-8"), equalToIgnoringWhiteSpace(expectedXml));
}
}