public void TestProcessedTimeOutToDSNFail() { // // Sample data // MdnManager target = CreateManager(); InitMdnRecords(); CleanMessages(PickupFolder); //timespan and max records set var mdns = target.GetExpiredProcessed(TimeSpan.FromMinutes(10), 40); Assert.Equal(20, mdns.Count()); MdnProcessedTimeout processedTimeout = new MdnProcessedTimeout(); //Execute unprocessed records over 11 minutes old. JobExecutionContext context = CreateProcessedJobExecutionContext(11, 10); processedTimeout.Execute(context); //Nothing was processed mdns = target.GetExpiredProcessed(TimeSpan.FromMinutes(10), 40); Assert.Equal(20, mdns.Count()); //Execute unprocessed records over 10 minutes old. context = CreateProcessedJobExecutionContext(10, 10); processedTimeout.Execute(context); //10 records left mdns = target.GetExpiredProcessed(TimeSpan.FromMinutes(10), 40); Assert.Equal(10, mdns.Count()); var files = Directory.GetFiles(PickupFolder); Assert.Equal(10, files.Count()); //Do it again processedTimeout.Execute(context); mdns = target.GetExpiredProcessed(TimeSpan.FromMinutes(10), 40); Assert.Equal(0, mdns.Count()); files = Directory.GetFiles(PickupFolder); Assert.Equal(20, files.Count()); foreach (var file in files) { Message loadedMessage = Message.Load(File.ReadAllText(file)); Assert.True(loadedMessage.IsDSN()); Assert.Equal("multipart/report", loadedMessage.ParsedContentType.MediaType); Assert.Equal("Rejected:To dispatch or not dispatch", loadedMessage.SubjectValue); var dsnActual = DSNParser.Parse(loadedMessage); Assert.Equal(DSNStandard.DSNAction.Failed, dsnActual.PerRecipient.First().Action); Assert.Equal("5.4.71", dsnActual.PerRecipient.First().Status); } }