Пример #1
0
 public void IfThereIsAnExceptionBuildMessageShouldPublishExceptionMessage()
 {
     DynamicMock mock = new DynamicMock(typeof(IMessageBuilder));
     mock.ExpectAndThrow("BuildMessage", new Exception("oops"), new IsAnything());
     publisher = new EmailPublisher((IMessageBuilder) mock.MockInstance);
     string message = publisher.CreateMessage(new IntegrationResult());
     AssertContains("oops", message);
 }
		public void ShouldNotSendMessageIfRecipientIsNotSpecifiedAndBuildIsSuccessful()
		{
            mockGateway.ExpectNoCall("Send", typeof(MailMessage));
			publisher = new EmailPublisher();
			publisher.EmailGateway = (EmailGateway) mockGateway.MockInstance;
            publisher.IndexedEmailUsers.Add("bar", new EmailUser("bar", "foo", "*****@*****.**"));
            publisher.IndexedEmailGroups.Add("foo", new EmailGroup("foo", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Change }));
			publisher.Run(IntegrationResultMother.CreateStillSuccessful());
            mockGateway.Verify();
		}
		public void ShouldSendMessageIfBuildFailed()
		{
            mockGateway.Expect("Send", new MailMessageRecipientValidator(1));

            publisher = new EmailPublisher();
            publisher.FromAddress = "*****@*****.**";
			publisher.EmailGateway = (EmailGateway) mockGateway.MockInstance;
            publisher.IndexedEmailUsers.Add("bar", new EmailUser("bar", "foo", "*****@*****.**"));
            publisher.IndexedEmailGroups.Add("foo", new EmailGroup("foo", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Failed }));
			publisher.Run(IntegrationResultMother.CreateFailed() );
            mockGateway.Verify();
        }
Пример #4
0
 protected void CreatePublisher()
 {
     publisher = new EmailPublisher();
     publisher.IndexedEmailGroups.Add(alwaysGroup.Name, alwaysGroup);
     publisher.IndexedEmailGroups.Add(changedGroup.Name, changedGroup);
     publisher.IndexedEmailGroups.Add(failedGroup.Name, failedGroup);
     publisher.IndexedEmailGroups.Add(successGroup.Name, successGroup);
     publisher.IndexedEmailUsers.Add(always.Name, always);
     publisher.IndexedEmailUsers.Add(failed.Name, failed);
     publisher.IndexedEmailUsers.Add(changed.Name, changed);
     publisher.IndexedEmailUsers.Add(success.Name, success);
     publisher.IndexedEmailUsers.Add(modifier.Name, modifier);
 }
Пример #5
0
        /// <summary>
        /// constructor
        /// </summary>
        /// <param name="result"></param>
        /// <param name="emailPublisher"></param>
        public EmailMessage(IIntegrationResult result, EmailPublisher emailPublisher)
        {
            this.result = result;
            this.emailPublisher = emailPublisher;


            // copy into own lookuptable for easier processing
            SetSubjects = new Hashtable();
            string mySubject;
            foreach (EmailSubject setValue in emailPublisher.SubjectSettings)
            {
                SetSubjects.Add(setValue.BuildResult, setValue.Value);
            }

            //add missing defaults for each notificationtype
            foreach (EmailSubject.BuildResultType item in System.Enum.GetValues(typeof(EmailSubject.BuildResultType)))
            {
                if (!SetSubjects.ContainsKey(item))
                {
                    switch (item)
                    {
                        case EmailSubject.BuildResultType.Broken:
                            mySubject =  "${CCNetProject} Build Failed";
                            break;

                        case EmailSubject.BuildResultType.Exception:
                            mySubject = "${CCNetProject} Exception in Build !";
                            break;

                        case EmailSubject.BuildResultType.Fixed:
                            mySubject = "${CCNetProject} Build Fixed: Build ${CCNetLabel}";
                            break;

                        case EmailSubject.BuildResultType.StillBroken:
                            mySubject = "${CCNetProject} is still broken";
                            break;

                        case EmailSubject.BuildResultType.Success:
                            mySubject = "${CCNetProject} Build Successful: Build ${CCNetLabel}";
                            break;

                        default:
                            throw new CruiseControlException("Unknown BuildResult : " + item);
                    }

                    SetSubjects.Add(item, mySubject);
                }
            }

        }
		public void ShouldSendMessageIfBuildFailedAndPreviousFailed()
		{
            mockGateway.Expect("Send", new MailMessageRecipientValidator(1));
            
            publisher = new EmailPublisher();
            publisher.FromAddress = "*****@*****.**";
            publisher.EmailGateway = (EmailGateway)mockGateway.MockInstance;

            publisher.IndexedEmailUsers.Add("dev", new EmailUser("dev", "changing", "*****@*****.**"));
            publisher.IndexedEmailUsers.Add("admin", new EmailUser("admin", "failing", "*****@*****.**"));

            publisher.IndexedEmailGroups.Add("changing", new EmailGroup("changing", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Change }));
            publisher.IndexedEmailGroups.Add("failing", new EmailGroup("failing", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Failed }));

			publisher.Run(IntegrationResultMother.CreateFailed(IntegrationStatus.Failure) );
            mockGateway.Verify();
		}
Пример #7
0
        public void PopulateFromConfiguration()
        {
            publisher = EmailPublisherMother.Create();

            Assert.AreEqual("smtp.telus.net", publisher.MailHost);
            Assert.AreEqual(26, publisher.MailPort);
            Assert.AreEqual("mailuser", publisher.MailhostUsername);
            Assert.IsNotNull(publisher.MailhostPassword);
            Assert.AreEqual("mailpassword", publisher.MailhostPassword.PrivateValue);
            Assert.AreEqual("*****@*****.**", publisher.FromAddress);
            Assert.AreEqual(2, publisher.ModifierNotificationTypes.Length);
            Assert.AreEqual(EmailGroup.NotificationType.Failed, publisher.ModifierNotificationTypes[0]);
            Assert.AreEqual(EmailGroup.NotificationType.Fixed, publisher.ModifierNotificationTypes[1]);

            Assert.AreEqual(1, publisher.Converters.Length);
            Assert.AreEqual("$", ((EmailRegexConverter) publisher.Converters[0]).Find);
            Assert.AreEqual("@TheCompany.com", ((EmailRegexConverter) publisher.Converters[0]).Replace);

            Assert.AreEqual(6, publisher.EmailUsers.Count);
            ArrayList expected = new ArrayList();
            expected.Add(new EmailUser("buildmaster", "buildmaster", "*****@*****.**"));
            expected.Add(new EmailUser("orogers", "developers", "*****@*****.**"));
            expected.Add(new EmailUser("manders", "developers", "*****@*****.**"));
            expected.Add(new EmailUser("dmercier", "developers", "*****@*****.**"));
            expected.Add(new EmailUser("rwan", "developers", "*****@*****.**"));
            expected.Add(new EmailUser("owjones", "successdudes", "*****@*****.**"));
            for (int i = 0; i < expected.Count; i++)
            {
                Assert.IsTrue(publisher.EmailUsers.ContainsValue(expected[i]));
            }

            Assert.AreEqual(3, publisher.EmailGroups.Count);
            EmailGroup developers = new EmailGroup("developers", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Change });
            EmailGroup buildmaster = new EmailGroup("buildmaster", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Always });
            EmailGroup successdudes = new EmailGroup("successdudes", new EmailGroup.NotificationType[] { EmailGroup.NotificationType.Success });
            Assert.AreEqual(developers, publisher.EmailGroups["developers"]);
            Assert.AreEqual(buildmaster, publisher.EmailGroups["buildmaster"]);
            Assert.AreEqual(successdudes, publisher.EmailGroups["successdudes"]);
        }
Пример #8
0
 public EmailMessage(IIntegrationResult result, EmailPublisher emailPublisher)
 {
     this.result = result;
     this.emailPublisher = emailPublisher;
 }
Пример #9
0
        public void ShouldSendToModifiersAndFailureUsers()
        {
            mockGateway.Expect("Send", new MailMessageRecipientValidator(2));

            publisher = new EmailPublisher();
            publisher.FromAddress = "*****@*****.**";
            publisher.EmailGateway = (EmailGateway)mockGateway.MockInstance;

            publisher.EmailUsers.Add("user1", new EmailUser("user1", null, "*****@*****.**"));
            publisher.EmailUsers.Add("user2", new EmailUser("user2", null, "*****@*****.**"));

            IntegrationResult result;
            Modification modification;

            result = IntegrationResultMother.CreateFailed();
            result.FailureUsers.Add("user1");

            modification = new Modification();
            modification.UserName = "******";
            modification.ModifiedTime = new DateTime(1973, 12, 24, 2, 30, 00);
            result.Modifications = new Modification[] { modification };

            publisher.Run(result);
            mockGateway.Verify();
        }
Пример #10
0
 public EmailMessage(IIntegrationResult result, EmailPublisher emailPublisher)
 {
     this.result         = result;
     this.emailPublisher = emailPublisher;
 }
Пример #11
0
        public void ShouldPopulateFromMinimalConfiguration()
        {
            string configXml = @"<email from=""*****@*****.**"" mailhost=""smtp.example.com""> <users/> <groups/> </email>";
            XmlDocument configXmlDocument = XmlUtil.CreateDocument(configXml);
            publisher = EmailPublisherMother.Create(configXmlDocument.DocumentElement);

            Assert.AreEqual("smtp.example.com", publisher.MailHost);
            Assert.AreEqual(25, publisher.MailPort);
            Assert.AreEqual(null, publisher.MailhostUsername);
            Assert.AreEqual(null, publisher.MailhostPassword);
            Assert.AreEqual(null, publisher.ReplyToAddress);
            Assert.AreEqual(false, publisher.IncludeDetails);
            Assert.AreEqual("*****@*****.**", publisher.FromAddress);
            Assert.AreEqual(1, publisher.ModifierNotificationTypes.Length);
            Assert.AreEqual(EmailGroup.NotificationType.Always, publisher.ModifierNotificationTypes[0]);

            Assert.AreEqual(0, publisher.Converters.Length);
            Assert.AreEqual(0, publisher.EmailUsers.Count);
            Assert.AreEqual(0, publisher.EmailGroups.Count);
        }
Пример #12
0
        public void ShouldPopulateXslFiles()
        {
            string configXml = @"<email from=""*****@*****.**"" mailhost=""smtp.example.com""> <users/> <groups/>
                      <xslFiles>
                        <file>xsl\NCover.xsl</file>
                       <file>xsl\NCoverExplorer.xsl</file>
                    </xslFiles>
                </email>";
            XmlDocument configXmlDocument = XmlUtil.CreateDocument(configXml);
            publisher = EmailPublisherMother.Create(configXmlDocument.DocumentElement);

            Assert.AreEqual(2, publisher.XslFiles.Length);
            Assert.AreEqual(@"xsl\NCover.xsl", publisher.XslFiles[0]);
            Assert.AreEqual(@"xsl\NCoverExplorer.xsl", publisher.XslFiles[1]);
        }
Пример #13
0
 public void SetUp()
 {
     publisher = EmailPublisherMother.Create();
     mockGateway = new DynamicMock(typeof(EmailGateway));
     publisher.EmailGateway = (EmailGateway) mockGateway.MockInstance;
 }
Пример #14
0
 public void SerializeToXml()
 {
     publisher = EmailPublisherMother.Create();
     string xml = NetReflector.Write(publisher);
     XmlUtil.VerifyXmlIsWellFormed(xml);
 }
Пример #15
0
 public void HandleEmailUserWithUnspecifiedGroup()
 {
     publisher = new EmailPublisher();
     publisher.EmailUsers.Add(modifier.Name, modifier);
     publisher.EmailUsers.Add("foo", new EmailUser("foo", null, "*****@*****.**"));
     IIntegrationResult result = AddModification(IntegrationResultMother.CreateFailed());
     Assert.AreEqual(ExpectedRecipients(modifier), new EmailMessage(result, publisher).Recipients);
 }
Пример #16
0
 public void OnlyEmailModifierRecipientsOnBuildFailure()
 {
     publisher = new EmailPublisher();
     publisher.EmailUsers.Add(modifier.Name, modifier);
     publisher.EmailUsers.Add(changed.Name, changed);
     IIntegrationResult result = AddModification(IntegrationResultMother.CreateFailed());
     Assert.AreEqual(ExpectedRecipients(modifier), new EmailMessage(result, publisher).Recipients);
 }
Пример #17
0
        public void ShouldConvertUsernamesToEmailAddresses()
        {
            EmailPublisher myPublisher = new EmailPublisher();

            myPublisher.Converters = new IEmailConverter[1];
            myPublisher.Converters[0] = new EmailRegexConverter("^([^@]*)$", @"[email protected]");

            IIntegrationResult result = IntegrationResultMother.CreateFailed();
            Modification modification = new Modification();
            modification.UserName = "******";
            result.Modifications = new Modification[1] { modification };

            EmailMessage message = new EmailMessage(result, myPublisher);
            Assert.AreEqual("*****@*****.**", message.Recipients);
        }