package no.kommune.bergen.soa.svarut.dao;
import static no.kommune.bergen.soa.svarut.dto.ShipmentPolicy.ALTINN_OG_APOST;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.security.AccessControlException;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.Date;
import java.util.List;
import java.util.Map;
import junit.framework.Assert;
import no.kommune.bergen.soa.common.calendar.BusinessCalendar;
import no.kommune.bergen.soa.common.calendar.CalendarHelper;
import no.kommune.bergen.soa.common.pdf.PdfGeneratorImpl;
import no.kommune.bergen.soa.svarut.AltinnFacade;
import no.kommune.bergen.soa.svarut.JdbcHelper;
import no.kommune.bergen.soa.svarut.ServiceContext;
import no.kommune.bergen.soa.svarut.altinn.correspondence.CorrespondenceClient;
import no.kommune.bergen.soa.svarut.altinn.correspondence.CorrespondenceSettings;
import no.kommune.bergen.soa.svarut.domain.Fodselsnr;
import no.kommune.bergen.soa.svarut.domain.Forsendelse;
import no.kommune.bergen.soa.svarut.domain.JuridiskEnhet;
import no.kommune.bergen.soa.svarut.domain.Orgnr;
import no.kommune.bergen.soa.svarut.domain.PrintReceipt;
import no.kommune.bergen.soa.svarut.domain.Printed;
import no.kommune.bergen.soa.svarut.dto.ShipmentPolicy;
import no.kommune.bergen.soa.svarut.util.FilHenter;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ForsendelsesArkivTest {
private static final int MOCK_RECEIPT_ID = 123456;
public static final String fnr = "12345678901";
public static final String orgnr = "987654321";
private static final String navn = "navn";
private static final String adresse1 = "adresse1";
private static final String adresse2 = "adresse2";
private static final String adresse3 = "adresse3";
private static final String postnr = "9999";
private static final String poststed = "poststed";
private static final String avsender_navn = "avsender_navn";
private static final String avsender_adresse1 = "avsender_adresse1";
private static final String avsender_adresse2 = "avsender_adresse2";
private static final String avsender_adresse3 = "avsender_adresse3";
private static final String avsender_postnr = "9998";
private static final String avsender_poststed = "avsender_poststed";
private static final String land = "land";
private static final String tittel = "tittel";
private static final String melding = "melding";
private static final String appid = "appid";
private ForsendelsesArkiv forsendelsesArkiv;
public static final String testPdf = "test.pdf";
@Before
public void init() {
// forsendelsesArkiv = createForsendesesArkivOracle();
forsendelsesArkiv = createForsendesesArkiv();
}
public static ForsendelsesArkiv createForsendesesArkiv() {
JdbcHelper jdbcHelper = new JdbcHelper();
jdbcHelper.createTable( "FORSENDELSESARKIV" );
FileStore fileStore = new FileStore("target", new PdfGeneratorImpl("target"));
CorrespondenceClient correspondenceClient = new CorrespondenceClient(new CorrespondenceSettings());
AltinnFacade altinnFacade = new AltinnFacade(null, correspondenceClient, null, null);
return new ForsendelsesArkiv( fileStore, jdbcHelper.getJdbcTemplate(), altinnFacade );
}
@Test
public void testTestPdf() {
File fil = FilHenter.getFileAsFile( ForsendelsesArkivTest.testPdf );
assertTrue( fil.exists() );
}
@Test
public void retrieveYoungerThan() {
int numberOfDays = 3;
Forsendelse f = createOldForsendelse( numberOfDays );
assertNotNull( f );
assertEquals(0, forsendelsesArkiv.retrieveYoungerThan(0, null).size());
assertEquals(0, forsendelsesArkiv.retrieveYoungerThan(1, null).size());
assertEquals(0, forsendelsesArkiv.retrieveYoungerThan(2, null).size());
assertEquals(0, forsendelsesArkiv.retrieveYoungerThan(3, null).size());
assertEquals(1, forsendelsesArkiv.retrieveYoungerThan(4, null).size());
assertEquals(1, forsendelsesArkiv.retrieveYoungerThan(5, null).size());
}
@Test
public void retrieveYoungerThanAgain() {
for (int numberOfDays = 0; numberOfDays < 4; numberOfDays++) {
createOldForsendelse( numberOfDays );
}
assertEquals(0, forsendelsesArkiv.retrieveYoungerThan(0, null).size());
assertEquals(1, forsendelsesArkiv.retrieveYoungerThan(1, null).size());
assertEquals(2, forsendelsesArkiv.retrieveYoungerThan(2, null).size());
assertEquals(3, forsendelsesArkiv.retrieveYoungerThan(3, null).size());
assertEquals(4, forsendelsesArkiv.retrieveYoungerThan(4, null).size());
assertEquals(4, forsendelsesArkiv.retrieveYoungerThan(5, null).size());
}
@Test
public void testAtRetrieveSentToAltinnButNotPrintedYoungerThanFinnerAlleAltinnForsendelser() {
for (int numberOfDays = 0; numberOfDays < 4; numberOfDays++) {
createOldSentToAltinnForsendelse( numberOfDays );
}
assertEquals(4, forsendelsesArkiv.retrieveSentToAltinnButNotPrinted(null).size());
}
private Forsendelse createOldForsendelse( int numberOfDays ) {
String id = forsendelsesArkiv.save(createForsendelse(numberOfDays), getTestDocument());
assertNotNull( id );
forsendelsesArkiv.jdbcTemplate.update("UPDATE FORSENDELSESARKIV SET SENDT=? WHERE ID=?", new Object[]{daysAgo(numberOfDays), id}, new int[]{Types.DATE, Types.VARCHAR});
return forsendelsesArkiv.retrieve( id );
}
private Forsendelse createOldSentToAltinnForsendelse( int numberOfDays ) {
String id = forsendelsesArkiv.save(createForsendelse(numberOfDays), getTestDocument());
assertNotNull( id );
forsendelsesArkiv.jdbcTemplate.update("UPDATE FORSENDELSESARKIV SET SENDT=?, ALTINN_SENDT=? WHERE ID=?", new Object[]{daysAgo(numberOfDays), daysAgo(numberOfDays), id}, new int[]{Types.DATE, Types.DATE, Types.VARCHAR});
return forsendelsesArkiv.retrieve( id );
}
private java.sql.Date daysAgo( int numberOfDays ) {
final long dayInMillis = 1000 * 60 * 60 * 24;
long now = System.currentTimeMillis();
return new java.sql.Date( now - (dayInMillis * numberOfDays) );
}
@Test
public void saveThenRetrieve() {
int variant = 1;
String id = forsendelsesArkiv.save( createForsendelse( variant ), getTestDocument() );
assertNotNull( id );
Forsendelse f = forsendelsesArkiv.retrieve( id );
validateForsendelse( f, variant );
}
@Test
public void saveThenRetrieveSeveralOrg() {
saveThenRetrieveSeveral( new Orgnr( orgnr ) );
}
@Test
public void saveThenRetrieveSeveralFnr() {
saveThenRetrieveSeveral( new Fodselsnr( fnr ) );
}
private void saveThenRetrieveSeveral( JuridiskEnhet juridiskEnhet ) {
final int count = 4;
for (int variant = 1; variant <= count; variant++) {
String id = forsendelsesArkiv.save( createForsendelse( variant ), getTestDocument() );
assertNotNull( id );
}
List<Forsendelse> forsendelser = forsendelsesArkiv.retrieveList( juridiskEnhet );
assertEquals( count, forsendelser.size() );
for (Forsendelse f : forsendelser) {
validateForsendelse( f, getVariant( f ) );
}
}
public static int getVariant( Forsendelse f ) {
return Integer.parseInt(f.getNavn().substring(navn.length()));
}
@Test
public void setPrinted() {
int variant = 1;
String id = forsendelsesArkiv.save( createForsendelse( variant ), getTestDocument() );
assertNotNull( id );
PrintReceipt printReceipt = newPrintReceipt();
forsendelsesArkiv.setPrinted( id, printReceipt );
Forsendelse forsendelse = forsendelsesArkiv.retrieve( id );
assertEquals( printReceipt.getPrintId(), forsendelse.getPrintId() );
assertEquals( printReceipt.getPageCount(), forsendelse.getAntallSider() );
}
@Test
public void readUnsent() {
int[] variants = { 0, 1, 2, 3, 4 };
String ids[] = new String[variants.length];
for (int i = 0; i < variants.length; i++) {
ids[i] = forsendelsesArkiv.save( createForsendelse( i ), getTestDocument() );
}
List<String> list = forsendelsesArkiv.readUnsent( null );
assertEquals( variants.length, list.size() );
PrintReceipt printReceipt = newPrintReceipt();
forsendelsesArkiv.setPrinted( ids[0], printReceipt );
list = forsendelsesArkiv.readUnsent( null );
assertEquals( variants.length - 1, list.size() );
forsendelsesArkiv.setSentAltinn(ids[1], MOCK_RECEIPT_ID);
list = forsendelsesArkiv.readUnsent( null );
assertEquals( variants.length - 2, list.size() );
}
@Test
public void readThenSetUnRead() {
String id = forsendelsesArkiv.save( createForsendelse( 1 ), getTestDocument() );
Map<?, ?> row = forsendelsesArkiv.retrieveRow( id );
assertNull( row.get( "LEST" ) );
forsendelsesArkiv.confirm( id );
row = forsendelsesArkiv.retrieveRow( id );
assertNotNull( row.get( "LEST" ) );
forsendelsesArkiv.setUnread( id );
row = forsendelsesArkiv.retrieveRow( id );
assertNull( row.get( "LEST" ) );
}
@Test
public void calculateTimeLimit() {
long days = 365 * 10;
long now = System.currentTimeMillis();
long daysInMillis = days * 1000 * 60 * 60 * 24;
long expect = now - daysInMillis;
Timestamp timeLimit = forsendelsesArkiv.calculateTimeLimit( days );
expectWithinRange( expect, expect + 1000, timeLimit.getTime() );
}
private void expectWithinRange( long lower, long upper, long compareTo ) {
Assert.assertTrue( compareTo >= lower );
Assert.assertTrue( compareTo <= upper );
}
@Test
@Ignore
public void readThenRemove() {
String id = forsendelsesArkiv.save( createForsendelse( 1 ), getTestDocument() );
Map<?, ?> row = forsendelsesArkiv.retrieveRow( id );
assertNull( row.get( "LEST" ) );
forsendelsesArkiv.confirm( id );
assertEquals( 0, forsendelsesArkiv.removeOlderThan( 1 ) );
assertEquals( 1, forsendelsesArkiv.removeOlderThan( -1 ) );
try {
forsendelsesArkiv.retrieveRow( id );
fail( "Remove failed" );
} catch (Exception e) {
assertTrue( true );
}
}
@Test
@Ignore
public void removeUnreachable() {
Forsendelse f = createForsendelse( 1 );
f.setFnr( null );
f.setOrgnr( null );
String id = forsendelsesArkiv.save( f, getTestDocument() );
Map<?, ?> row = forsendelsesArkiv.retrieveRow( id );
assertNotNull( row );
forsendelsesArkiv.confirm( id );
assertEquals( 0, forsendelsesArkiv.removeUnreachable( 1 ) );
assertEquals( 1, forsendelsesArkiv.removeUnreachable( -1 ) );
try {
forsendelsesArkiv.retrieveRow( id );
fail( "Remove failed" );
} catch (Exception e) {
assertTrue( true );
}
id = forsendelsesArkiv.save( f, getTestDocument() );
row = forsendelsesArkiv.retrieveRow( id );
assertNotNull( row );
forsendelsesArkiv.stop( id );
assertEquals( 0, forsendelsesArkiv.removeUnreachable( 1 ) );
assertEquals( 1, forsendelsesArkiv.removeUnreachable( -1 ) );
try {
forsendelsesArkiv.retrieveRow( id );
fail( "Remove failed" );
} catch (Exception e) {
assertTrue( true );
}
}
@Test
public void authorizeFodselsnrOk() {
Forsendelse f = createForsendelse( 1 );
String id = forsendelsesArkiv.save( f, getTestDocument() );
try {
forsendelsesArkiv.authorize( id, new Fodselsnr( f.getFnr() ) );
} catch (AccessControlException e) {
fail( e.getMessage() );
}
}
@Test(expected = AccessControlException.class)
public void authorizeFodselsnrFail() {
Forsendelse f = createForsendelse( 1 );
String id = forsendelsesArkiv.save( f, getTestDocument() );
forsendelsesArkiv.authorize( id, new Fodselsnr( "00000000000" ) );
}
@Test
public void authorizeOrgnrOk() {
Forsendelse f = createForsendelse( 1 );
String id = forsendelsesArkiv.save( f, getTestDocument() );
assertNotNull( id );
}
@Test(expected = AccessControlException.class)
public void authorizeOrgnrFail() {
Forsendelse f = createForsendelse( 1 );
String id = forsendelsesArkiv.save( f, getTestDocument() );
forsendelsesArkiv.authorize( id, new Orgnr( "000000000" ) );
}
@Test
public void sequence() {
System.setProperty( "CONSTRETTO_TAGS", "DEV" );
ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml" );
ServiceContext serviceContext = (ServiceContext)context.getBean( "serviceContext" );
ForsendelsesArkiv forsendelsesArkiv2 = serviceContext.getForsendelsesArkiv();
String nextVal = forsendelsesArkiv2.getIdentifier();
assertEquals( 36, nextVal.length() );
}
@Test
public void updatePrinted() {
Printed printed = newPrinted( storeNewForsendelse() );
forsendelsesArkiv.updatePrinted( printed );
Forsendelse forsendelse = forsendelsesArkiv.retrieve( printed.getForsendelsesId() );
assertEquals( printed.getTidspunktPostlagt().getTime(), forsendelse.getTidspunktPostlagt().getTime() );
int antallSiderPostlagt = printed.getAntallSortHvitSider() + printed.getAntallFargeSider();
assertEquals( antallSiderPostlagt, forsendelse.getAntallSiderPostlagt() );
assertEquals(1 , forsendelse.getAntallSortHvitSider() );
assertEquals(2 , forsendelse.getAntallFargeSider() );
assertEquals(3 , forsendelse.getAntallArkKonvoluttertAutomatisk() );
assertEquals(4 , forsendelse.getAntallEkstraArkKonvoluttertAutomatisk() );
assertEquals(5 , forsendelse.getAntallArkKonvoluttertManuelt() );
assertEquals(6 , forsendelse.getAntallEkstraArkKonvoluttertManuelt() );
assertEquals(20 , forsendelse.getVekt() );
assertEquals(5.55 , forsendelse.getProduksjonskostnader(), 0.01 );
assertEquals(10.10 , forsendelse.getPorto(), 0.01 );
}
@Test
public void failedToPrintAlertWindowStartDayOverWeekend() {
Date now = CalendarHelper.toDate( 2011, 11, 14 );
int failedToPrintAlertWindowStartDay = 1;
Date failedToPrintAlertWindowStart = BusinessCalendar.getPreviousWorkday( now, failedToPrintAlertWindowStartDay );
Assert.assertEquals( "2011-11-11", CalendarHelper.formatAsDate( failedToPrintAlertWindowStart ) );
}
@Test
public void testAnsvarsstedInsert() throws Exception {
Forsendelse f = new Forsendelse();
f.setNavn("Test Testesen");
f.setMeldingsTekst("Hei fra SvarUtItest");
f.setTittel("Viktig melding!");
f.setEmail("test@hudson.iktofu.no");
f.setAnsvarsSted("EnKulPlass");
f.setKonteringkode("kontkode123");
String id = forsendelsesArkiv.save(f, new ByteArrayInputStream(new byte[]{}));
Forsendelse f2 = forsendelsesArkiv.retrieve(id);
assertEquals("EnKulPlass", f2.getAnsvarsSted());
assertEquals("kontkode123", f2.getKonteringkode());
}
private PrintReceipt newPrintReceipt() {
PrintReceipt printReceipt = new PrintReceipt();
printReceipt.setPrintId( "MyPrintId" );
printReceipt.setPageCount( 123 );
return printReceipt;
}
private String storeNewForsendelse() {
Forsendelse f = createForsendelse( 1 );
return forsendelsesArkiv.save( f, getTestDocument() );
}
private Printed newPrinted( String forsendelsesId ) {
Printed printed = new Printed();
printed.setTidspunktPostlagt( new Date() );
printed.setAntallSortHvitSider(999);
printed.setAntallFargeSider(0);
printed.setForsendelsesId( forsendelsesId );
printed.setAntallSortHvitSider(1);
printed.setAntallFargeSider(2);
printed.setAntallArkKonvoluttertAutomatisk(3);
printed.setAntallEkstraArkKonvoluttertAutomatisk(4);
printed.setAntallArkKonvoluttertManuelt(5);
printed.setAntallEkstraArkKonvoluttertManuelt(6);
printed.setVekt(20);
printed.setProduksjonskostnader(5.55);
printed.setPorto(10.10);
return printed;
}
public static Forsendelse createForsendelse( int variant ) {
return createForsendelse( variant, fnr, orgnr );
}
public static Forsendelse createForsendelse( int variant, String fnr, String orgnr ) {
Forsendelse f = new Forsendelse();
f.setFnr( fnr );
f.setOrgnr( orgnr );
f.setNavn( navn + variant );
f.setAdresse1( adresse1 + variant );
f.setAdresse2( adresse2 + variant );
f.setAdresse3( adresse3 + variant );
f.setPostnr( postnr + variant );
f.setPoststed( poststed + variant );
f.setLand( land + variant );
f.setAvsenderNavn( avsender_navn + variant );
f.setAvsenderAdresse1( avsender_adresse1 + variant );
f.setAvsenderAdresse2( avsender_adresse2 + variant );
f.setAvsenderAdresse3( avsender_adresse3 + variant );
f.setAvsenderPostnr( avsender_postnr + variant );
f.setAvsenderPoststed( avsender_poststed + variant );
f.setTittel( tittel + variant );
f.setMeldingsTekst( melding + variant );
f.setAppid( appid + variant );
f.setShipmentPolicy( ALTINN_OG_APOST.value() );
return f;
}
public static Forsendelse createForsendelse( int variant, String fnr, String orgnr, String id ) {
Forsendelse f = new Forsendelse();
f.setFnr( fnr );
f.setId(id);
f.setOrgnr( orgnr );
f.setNavn( navn + variant );
f.setAdresse1( adresse1 + variant );
f.setAdresse2( adresse2 + variant );
f.setAdresse3( adresse3 + variant );
f.setPostnr( postnr + variant );
f.setPoststed( poststed + variant );
f.setLand( land + variant );
f.setAvsenderNavn( avsender_navn + variant );
f.setAvsenderAdresse1( avsender_adresse1 + variant );
f.setAvsenderAdresse2( avsender_adresse2 + variant );
f.setAvsenderAdresse3( avsender_adresse3 + variant );
f.setAvsenderPostnr( avsender_postnr + variant );
f.setAvsenderPoststed( avsender_poststed + variant );
f.setTittel( tittel + variant );
f.setMeldingsTekst( melding + variant );
f.setAppid( appid + variant );
f.setShipmentPolicy( ALTINN_OG_APOST.value() );
return f;
}
public static void validateForsendelse( Forsendelse f, int variant ) {
validateForsendelse( f, variant, fnr, orgnr );
}
public static void validateForsendelse( Forsendelse f, int variant, String fnr, String orgnr ) {
assertEquals( "fnr", fnr, f.getFnr() );
assertEquals( "orgnr", orgnr, f.getOrgnr() );
assertEquals( "navn", (navn + variant), f.getNavn() );
assertEquals( "adresse1", (adresse1 + variant), f.getAdresse1() );
assertEquals( "adresse2", (adresse2 + variant), f.getAdresse2() );
assertEquals( "adresse3", (adresse3 + variant), f.getAdresse3() );
assertEquals( "postnr", (postnr + variant), f.getPostnr() );
assertEquals( "poststed", (poststed + variant), f.getPoststed() );
assertEquals( "land", (land + variant), f.getLand() );
assertEquals( "avsender_navn", (avsender_navn + variant), f.getAvsenderNavn() );
assertEquals( "avsender_adresse1", (avsender_adresse1 + variant), f.getAvsenderAdresse1() );
assertEquals( "avsender_adresse2", (avsender_adresse2 + variant), f.getAvsenderAdresse2() );
assertEquals( "avsender_adresse3", (avsender_adresse3 + variant), f.getAvsenderAdresse3() );
assertEquals( "avsender_postnr", (avsender_postnr + variant), f.getAvsenderPostnr() );
assertEquals( "avsender_poststed", (avsender_poststed + variant), f.getAvsenderPoststed() );
assertEquals( "tittel", (tittel + variant), f.getTittel() );
assertEquals( "melding", (melding + variant), f.getMeldingsTekst() );
assertEquals( "appid", (appid + variant), f.getAppid() );
assertNotNull( "file == null", f.getFile().getName() );
}
public static InputStream getTestDocument() {
return FilHenter.getFileAsInputStream( testPdf );
}
@Test
public void testMarkMessageFailed() throws Exception {
Forsendelse f = createForsendelse( 1, "999", null );
f = forsendelsesArkiv.retrieve( forsendelsesArkiv.save( f, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) ) );
Date nesteforsok = new Date( f.getSendt().getTime() + 5000L );
forsendelsesArkiv.markForsendelseFailed( f, nesteforsok );
Forsendelse f2 = forsendelsesArkiv.retrieve( f.getId() );
assertTrue( "", f.getSendt().before( f2.getNesteForsok() ) );
List<String> forsendelser = forsendelsesArkiv.readUnsent( new ShipmentPolicy[] { ShipmentPolicy.fromValue( f.getShipmentPolicy() ) } );
assertFalse( forsendelser.contains( f2.getId() ) );
forsendelsesArkiv.markForsendelseFailed( f, new Date( f.getSendt().getTime() - 1000L ) );
List<String> forsendelser2 = forsendelsesArkiv.readUnsent( new ShipmentPolicy[] { ShipmentPolicy.fromValue( f.getShipmentPolicy() ) } );
assertTrue( forsendelser2.contains( f2.getId() ) );
}
@Test
public void testReadUnsentReturnererForsendelseSomIkkeErSendt() {
Forsendelse f = createForsendelse(1, "12345678910", "123456789");
String forsendelseId = forsendelsesArkiv.save( f, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
ShipmentPolicy[] shipmentPolicies = {ALTINN_OG_APOST};
List<String> unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
boolean funnet = false;
for(String id : unsent) {
if(id.equals(forsendelseId))
funnet = true;
}
assertTrue("Forsendelsen ikke funnet.", funnet);
}
@Test
public void testAtLesteForsendelserTilOrgDukkerOppISentToAltinn() {
Forsendelse f1 = createForsendelse(1, "12345678910", null);
Forsendelse f2 = createForsendelse(1, "12345678910", "123456789");
String forsendelseId1 = forsendelsesArkiv.save( f1, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
String forsendelseId2 = forsendelsesArkiv.save( f2, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
// Sett som lest
forsendelsesArkiv.confirm(forsendelseId1);
forsendelsesArkiv.confirm(forsendelseId2);
// Sett som sendt til Altinn
forsendelsesArkiv.setSentAltinn(forsendelseId2, MOCK_RECEIPT_ID);
ShipmentPolicy[] shipmentPolicies = {ALTINN_OG_APOST};
List<String> unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
boolean funnet1 = false;
boolean funnet2 = false;
for(String id : unsent) {
if(id.equals(forsendelseId1)) {
funnet1 = true;
} else if(id.equals(forsendelseId2)) {
funnet2 = true;
}
}
assertFalse("Forsendelsen uten orgnr funnet i readUnsent. Skal ikke være der.", funnet1);
assertFalse("Forsendelsen uten orgnr funne i readUnsent. Skal ikke være der.", funnet2);
assertEquals("Forsendelse ikke funnet i retrieveSentToAltinnButNotPrinted.", 1, forsendelsesArkiv.retrieveSentToAltinnButNotPrinted(shipmentPolicies).size());
}
@Test
public void testAtLesteForsendelserTilOrgIkkeDukkerOppISentToAltinnEtterPrint() {
Forsendelse f1 = createForsendelse(1, "12345678910", null);
Forsendelse f2 = createForsendelse(1, "12345678910", "123456789");
// Arkiver forsendelse
String forsendelseId1 = forsendelsesArkiv.save( f1, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
String forsendelseId2 = forsendelsesArkiv.save( f2, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
// Sett som lest
forsendelsesArkiv.confirm(forsendelseId1);
forsendelsesArkiv.confirm(forsendelseId2);
// Sett som sendt til Altinn
forsendelsesArkiv.setSentAltinn(forsendelseId2, MOCK_RECEIPT_ID);
ShipmentPolicy[] shipmentPolicies = {ALTINN_OG_APOST};
List<String> unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
boolean funnet1 = false;
boolean funnet2 = false;
for(String id : unsent) {
if(id.equals(forsendelseId1)) {
funnet1 = true;
} else if(id.equals(forsendelseId2)) {
funnet2 = true;
}
}
assertFalse("Forsendelsen uten orgnr funnet i readUnsent. Skal ikke være der.", funnet1);
assertFalse("Forsendelsen uten orgnr funnet i readUnsent. Skal ikke være der.", funnet2);
assertEquals("Forsendelse ikke funnet i retrieveSentToAltinnButNotPrinted.", 1, forsendelsesArkiv.retrieveSentToAltinnButNotPrinted(shipmentPolicies).size());
// Sjekk at de ikke blir funnet etter print
PrintReceipt printReceipt1 = newPrintReceipt();
forsendelsesArkiv.setPrinted( forsendelseId1, printReceipt1 );
PrintReceipt printReceipt2 = newPrintReceipt();
forsendelsesArkiv.setPrinted( forsendelseId2, printReceipt2 );
unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
funnet1 = false;
funnet2 = false;
for(String id : unsent) {
if(id.equals(forsendelseId1)) {
funnet1 = true;
} else if(id.equals(forsendelseId2)) {
funnet2 = true;
}
}
assertFalse("Forsendelsen uten orgnr funnet etter print. Skal ikke være der etter print eller lest.", funnet1);
assertFalse("Forsendelsen med orgnr funnet etter print. Skal ikke være der etter print eller lest", funnet2);
assertTrue("Forsendelse funnet i retrieveSentToAltinnButNotPrinted.", forsendelsesArkiv.retrieveSentToAltinnButNotPrinted(shipmentPolicies).size() < 1);
}
@Test
@Ignore
public void testReadUnsentReturnererForsendelserTilOrgEtterLestOgSattUlest() {
Forsendelse f1 = createForsendelse(1, "12345678910", null);
Forsendelse f2 = createForsendelse(1, "12345678910", "123456789");
String forsendelseId1 = forsendelsesArkiv.save( f1, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
String forsendelseId2 = forsendelsesArkiv.save( f2, ForsendelsesArkivTest.class.getClassLoader().getResourceAsStream( "test.pdf" ) );
// Sett som lest
forsendelsesArkiv.confirm(forsendelseId1);
forsendelsesArkiv.confirm(forsendelseId2);
ShipmentPolicy[] shipmentPolicies = {ALTINN_OG_APOST};
List<String> unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
boolean funnet1 = false;
boolean funnet2 = false;
for(String id : unsent) {
if(id.equals(forsendelseId1)) {
funnet1 = true;
} else if(id.equals(forsendelseId2)) {
funnet2 = true;
}
}
assertFalse("Forsendelsen uten orgnr funnet. Skal ikke være der.", funnet1);
assertTrue("Forsendelsen med orgnr ikke funnet.", funnet2);
// Sjekk at de ikke blir funnet etter print
PrintReceipt printReceipt1 = newPrintReceipt();
forsendelsesArkiv.setPrinted( forsendelseId1, printReceipt1 );
PrintReceipt printReceipt2 = newPrintReceipt();
forsendelsesArkiv.setPrinted( forsendelseId2, printReceipt2 );
unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
funnet1 = false;
funnet2 = false;
for(String id : unsent) {
if(id.equals(forsendelseId1)) {
funnet1 = true;
} else if(id.equals(forsendelseId2)) {
funnet2 = true;
}
}
assertFalse("Forsendelsen uten orgnr funnet. Skal ikke være der. Heller ikke etter print.", funnet1);
assertFalse("Forsendelsen med orgnr funnet. Skal ikke være der etter print", funnet2);
forsendelsesArkiv.setUnread(forsendelseId1);
forsendelsesArkiv.setUnread(forsendelseId2);
unsent = forsendelsesArkiv.readUnsent(shipmentPolicies);
funnet1 = false;
funnet2 = false;
for(String id : unsent) {
if(id.equals(forsendelseId1)) {
funnet1 = true;
} else if(id.equals(forsendelseId2)) {
funnet2 = true;
}
}
assertFalse("Forsendelsen uten orgnr funnet etter satt til unread og er printet. Skal ikke finnes og kunne sendes til print 2 ganger. ", funnet1);
assertFalse("Forsendelsen med orgnr funnet etter satt til unread og er printet. Skal ikke finnes og kunne sendes til print 2 ganger.", funnet2);
}
}