public void ShouldOnlyDisposeOnce()
		{
			string configFile = CreateTemporaryConfigurationFile();
			IMock mockCruiseManager = new RemotingMock(typeof (ICruiseManager));
			IMock mockCruiseServer = new DynamicMock(typeof (ICruiseServer));
			mockCruiseServer.ExpectAndReturn("CruiseManager", mockCruiseManager.MockInstance);
			mockCruiseServer.ExpectAndReturn("CruiseManager", mockCruiseManager.MockInstance);
			mockCruiseServer.Expect("Dispose");

			RemoteCruiseServer server = new RemoteCruiseServer((ICruiseServer) mockCruiseServer.MockInstance, configFile);
			((IDisposable)server).Dispose();

			mockCruiseServer.ExpectNoCall("Dispose");
			((IDisposable)server).Dispose();
			mockCruiseServer.Verify();
		}
        public void ForceBuildProcessedWiredCorrectly()
        {
            var mocks = new MockRepository();
            var innerServer = mocks.DynamicMock<ICruiseServer>();
            var raiser = Expect.Call(() => { innerServer.ForceBuildProcessed += null; })
                .IgnoreArguments()
                .GetEventRaiser();
            mocks.ReplayAll();

            var configFile = this.CreateTemporaryConfigurationFile();
            var eventFired = false;
            using (var server = new RemoteCruiseServer(innerServer, configFile, true))
            {
                server.ForceBuildProcessed += (o, e) => { eventFired = true; };
                raiser.Raise(innerServer, new ProjectEventArgs<string>("test", "data"));
            }

            Assert.IsTrue(eventFired);
            mocks.VerifyAll();
        }
Beispiel #3
0
        public RemoteCruiseServer(ICruiseServer server, string configFile)
        {
            _self   = this;
            _server = server;
            RegisterForRemoting(configFile);

            XmlDocument document = new XmlDocument();

            document.Load(configFile); XPathNavigator Navigator = document.CreateNavigator();
            string RestUri = Navigator.SelectSingleNode("/cruisecontrol/@restUri").ToString();

            if (string.IsNullOrEmpty(RestUri))
            {
                throw new InvalidProgramException(@"Please set the attribute ""restUri"" on the root node ""cruisecontrol"" in the ccnet project file.");
            }

            Uri uri = new Uri(RestUri);

            Host = new WebServiceHost(typeof(CIFactoryServer), uri);

            Host.AddServiceEndpoint(typeof(ICIFactoryServer), new WebHttpBinding(), uri);
            Host.Open();
        }
        public void IntegrationCompletedWiredCorrectly()
        {
            var mocks = new MockRepository();
            var innerServer = mocks.DynamicMock<ICruiseServer>();
            var raiser = Expect.Call(() => { innerServer.IntegrationCompleted += null; })
                .IgnoreArguments()
                .GetEventRaiser();
            mocks.ReplayAll();

            var configFile = this.CreateTemporaryConfigurationFile();
            var eventFired = false;
            using (var server = new RemoteCruiseServer(innerServer, configFile, true))
            {
                server.IntegrationCompleted += (o, e) => { eventFired = true; };
                raiser.Raise(innerServer, new IntegrationCompletedEventArgs(null, "test", IntegrationStatus.Success));
            }

            Assert.IsTrue(eventFired);
            mocks.VerifyAll();
        }
        public void GetFinalBuildStatusPassesOnCall()
        {
            var mocks = new MockRepository();
            var innerServer = mocks.DynamicMock<ICruiseServer>();
            var request = new BuildRequest();
            var response = new StatusSnapshotResponse();
            Expect.Call(innerServer.GetFinalBuildStatus(request))
                .Return(response);
            mocks.ReplayAll();

            var configFile = this.CreateTemporaryConfigurationFile();
            using (var server = new RemoteCruiseServer(innerServer, configFile, true))
            {
                var actual = server.GetFinalBuildStatus(request);
                Assert.AreSame(response, actual);
            }

            mocks.VerifyAll();
        }