public void ShouldPopulateCorrectlyFromXml()
        {
            const string xml =
                @"<sourceControl type=""external"">
    <args>arg1 ""arg2 has blanks"" arg3</args>
    <autoGetSource>true</autoGetSource>
    <executable>banana.bat</executable>
    <labelOnSuccess>true</labelOnSuccess>
    <environment>
        <variable name=""name1"" value=""value1""/>
        <variable><name>name2</name></variable>
        <variable name=""name3""><value>value3</value></variable>
    </environment>
</sourceControl>";

            ExternalSourceControl externalSC = new ExternalSourceControl();

            NetReflector.Read(xml, externalSC);
            Assert.AreEqual(@"arg1 ""arg2 has blanks"" arg3", externalSC.ArgString);
            Assert.AreEqual(true, externalSC.AutoGetSource);
            Assert.AreEqual(3, externalSC.EnvironmentVariables.Length);
            Assert.AreEqual("name1", externalSC.EnvironmentVariables[0].name);
            Assert.AreEqual("value1", externalSC.EnvironmentVariables[0].value);
            Assert.AreEqual("name2", externalSC.EnvironmentVariables[1].name);
            Assert.AreEqual("", externalSC.EnvironmentVariables[1].value);
            Assert.AreEqual("name3", externalSC.EnvironmentVariables[2].name);
            Assert.AreEqual("value3", externalSC.EnvironmentVariables[2].value);
            Assert.AreEqual("banana.bat", externalSC.Executable);
            Assert.AreEqual(true, externalSC.LabelOnSuccess);
        }
        public void ShouldGetSourceIfAutoGetSourceTrue()
        {
            DynamicMock           executor   = new DynamicMock(typeof(ProcessExecutor));
            ExternalSourceControl externalSC = new ExternalSourceControl((ProcessExecutor)executor.MockInstance);

            externalSC.AutoGetSource = true;
            externalSC.Executable    = "banana.bat";
            externalSC.ArgString     = @"arg1 ""arg2 is longer"" arg3";

            IntegrationResult intResult = new IntegrationResult();

            intResult.StartTime        = new DateTime(1959, 9, 11, 7, 53, 0);
            intResult.WorkingDirectory = @"C:\SomeDir\Or\Other";
            intResult.ProjectName      = "MyProject";

            ProcessInfo expectedProcessRequest = new ProcessInfo(
                "banana.bat",
                @"GETSOURCE ""C:\SomeDir\Or\Other"" ""1959-09-11 07:53:00"" arg1 ""arg2 is longer"" arg3",
                @"C:\SomeDir\Or\Other"
                );

            expectedProcessRequest.TimeOut = Timeout.DefaultTimeout.Millis;

            executor.ExpectAndReturn("Execute", new ProcessResult("foo", null, 0, false), expectedProcessRequest);
            externalSC.GetSource(intResult);
            executor.Verify();
        }
        public void ExternalSourceControlTest( )
        {
            ExternalSourceControl esc = new ExternalSourceControl( );
            EnvironmentVariable   ev  = new EnvironmentVariable( );

            ev.Name  = "Foo";
            ev.Value = "Blah";
            esc.Environment.Add(ev);
            ev       = new EnvironmentVariable( );
            ev.Name  = "Bar";
            ev.Value = "Water";
            esc.Environment.Add(ev);
            esc.Arguments  = "/f /b";
            esc.Executable = "cmd.exe";
            XmlElement node = esc.Serialize( );

            Assert.IsNotNull(node, "Serialize failed for ExternalSourceControl");
            Assert.AreEqual(node.SelectSingleNode("executable").InnerText, esc.Executable);
            Assert.AreEqual(node.SelectSingleNode("args").InnerText, esc.Arguments);

            esc = new ExternalSourceControl( );
            esc.Deserialize(node);

            Assert.AreEqual(node.SelectSingleNode("executable").InnerText, esc.Executable);
            Assert.AreEqual(node.SelectSingleNode("args").InnerText, esc.Arguments);
        }
        public void ShouldFailToPopulateFromConfigurationMissingRequiredFields()
        {
            const string          xml        = @"<sourceControl type=""external""></sourceControl>";
            ExternalSourceControl externalSC = new ExternalSourceControl();

            Assert.That(delegate { NetReflector.Read(xml, externalSC); },
                        Throws.TypeOf <NetReflectorException>());
        }
        public void VerifyDefaultValues()
        {
            ExternalSourceControl externalSC = new ExternalSourceControl();

            Assert.AreEqual(string.Empty, externalSC.ArgString);
            Assert.AreEqual(false, externalSC.AutoGetSource);
            Assert.AreEqual(0, externalSC.EnvironmentVariables.Length);
            Assert.AreEqual(false, externalSC.LabelOnSuccess);
        }
        public void ShouldNotGetSourceIfAutoGetSourceFalse()
        {
            DynamicMock           executor   = new DynamicMock(typeof(ProcessExecutor));
            ExternalSourceControl externalSC = new ExternalSourceControl((ProcessExecutor)executor.MockInstance);

            externalSC.AutoGetSource = false;

            executor.ExpectNoCall("Execute", typeof(ProcessInfo));
            externalSC.GetSource(new IntegrationResult());
            executor.Verify();
        }
        public void ShouldNotGetSourceIfAutoGetSourceFalse()
        {
            var executor = new Mock <ProcessExecutor>();
            ExternalSourceControl externalSC = new ExternalSourceControl((ProcessExecutor)executor.Object);

            externalSC.AutoGetSource = false;

            externalSC.GetSource(new IntegrationResult());
            executor.Verify();
            executor.VerifyNoOtherCalls();
        }
        public void ShouldPopulateCorrectlyFromMinimalXml()
        {
            const string xml =
                @"<sourceControl type=""external"">
    <executable>banana.bat</executable>
</sourceControl>";
            ExternalSourceControl externalSC = new ExternalSourceControl();

            NetReflector.Read(xml, externalSC);
            Assert.AreEqual(string.Empty, externalSC.ArgString);
            Assert.AreEqual(false, externalSC.AutoGetSource);
            Assert.AreEqual(0, externalSC.EnvironmentVariables.Length);
            Assert.AreEqual("banana.bat", externalSC.Executable);
            Assert.AreEqual(false, externalSC.LabelOnSuccess);
        }
        public void ExternalSourceControlSerializerTest( )
        {
            Serializer <ExternalSourceControl> ser = new Serializer <ExternalSourceControl> ( );
            ExternalSourceControl esc = new ExternalSourceControl( );

            esc.Executable = "esc.exe";
            EnvironmentVariable ev = new EnvironmentVariable( );

            ev.Name  = "Foo";
            ev.Value = "Blah";
            esc.Environment.Add(ev);
            ev       = new EnvironmentVariable( );
            ev.Name  = "Bar";
            ev.Value = "Water";
            esc.Environment.Add(ev);

            esc.Arguments = "/f /b";

            XmlElement ele = ser.Serialize(esc);

            Assert.IsNotNull(ele);
            Console.WriteLine(ele.OuterXml);
        }