Exemplo n.º 1
0
        public void NotAvailableShouldAlwaysProduceNotAvailableWhenCombined()
        {
            ConditionalGetFingerprint testFingerprint = new ConditionalGetFingerprint(testDate, testETag);

            Assert.AreSame(ConditionalGetFingerprint.NOT_AVAILABLE, ConditionalGetFingerprint.NOT_AVAILABLE.Combine(testFingerprint));
            Assert.AreSame(ConditionalGetFingerprint.NOT_AVAILABLE, testFingerprint.Combine(ConditionalGetFingerprint.NOT_AVAILABLE));
        }
Exemplo n.º 2
0
        public void ShouldBeEqualIfDateAndETagAreEqual()
        {
            ConditionalGetFingerprint firstFingerprint  = new ConditionalGetFingerprint(testDate, testETag);
            ConditionalGetFingerprint secondFingerprint = new ConditionalGetFingerprint(testDate, testETag);

            Assert.AreEqual(firstFingerprint, secondFingerprint);
            Assert.AreNotSame(firstFingerprint, secondFingerprint);
        }
        public ConditionalGetFingerprint GetFingerprint(IRequest request)
        {
            ConditionalGetFingerprint mostRecentTemplateFingerprint =
                fingerprintFactory.BuildFromFileNames(@"FarmSideBar.vm", @"ServerSideBar.vm", @"ProjectSideBar.vm", @"BuildSideBar.vm");

            return(((IConditionalGetFingerprintProvider)recentBuildsViewBuilder).GetFingerprint(request).Combine(
                       mostRecentTemplateFingerprint));
        }
Exemplo n.º 4
0
        public void ShouldThrowExceptionIfFingerprintsAreCombinedWhichHaveDifferentETags()
        {
            ConditionalGetFingerprint testFingerprint = new ConditionalGetFingerprint(testDate, testETag);
            ConditionalGetFingerprint fingerprintWithDifferentETag = new ConditionalGetFingerprint(testDate, testETag + "different");

            Assert.That(delegate { testFingerprint.Combine(fingerprintWithDifferentETag); },
                        Throws.TypeOf <UncombinableFingerprintException>());
        }
Exemplo n.º 5
0
        public void ShouldNotBeEqualIfDatesDiffer()
        {
            ConditionalGetFingerprint firstFingerprint = new ConditionalGetFingerprint(testDate, testETag);

            DateTime differentDate = new DateTime(2007, 3, 22, 22, 50, 29, DateTimeKind.Utc);
            ConditionalGetFingerprint secondFingerprint = new ConditionalGetFingerprint(differentDate, testETag);

            Assert.AreNotEqual(firstFingerprint, secondFingerprint);
        }
Exemplo n.º 6
0
        public ConditionalGetFingerprint GetFingerprint(IRequest request)
        {
            // TODO - Maybe should get date from Build type rather than LogFile?
            ICruiseRequest            cruiseRequest       = new NameValueCruiseRequestFactory().CreateCruiseRequest(request, urlBuilder, retriever);
            LogFile                   logFile             = new LogFile(cruiseRequest.BuildSpecifier.BuildName);
            DateTime                  buildDate           = logFile.Date;
            ConditionalGetFingerprint logFingerprint      = fingerprintFactory.BuildFromDate(buildDate);
            ConditionalGetFingerprint templateFingerprint = fingerprintFactory.BuildFromFileNames(TEMPLATE_NAME);

            return(logFingerprint.Combine(templateFingerprint));
        }
Exemplo n.º 7
0
        public void ShouldUseMostRecentDateWhenCombined()
        {
            DateTime olderDate  = new DateTime(2006, 12, 1);
            DateTime recentDate = new DateTime(2007, 2, 1);

            ConditionalGetFingerprint olderFingerprint = new ConditionalGetFingerprint(olderDate, testETag);
            ConditionalGetFingerprint newerFingerprint = new ConditionalGetFingerprint(recentDate, testETag);

            ConditionalGetFingerprint expectedFingerprint = newerFingerprint;

            Assert.AreEqual(expectedFingerprint, olderFingerprint.Combine(newerFingerprint));
        }
        public ConditionalGetFingerprint GetFingerprint(IRequest request)
        {
            ICruiseRequest  cruiseRequest            = new NameValueCruiseRequestFactory().CreateCruiseRequest(request, urlBuilder, retriever);
            IBuildSpecifier mostRecentBuildSpecifier =
                farmService.GetMostRecentBuildSpecifiers(cruiseRequest.ProjectSpecifier, 1, cruiseRequest.RetrieveSessionToken())[0];
            DateTime mostRecentBuildDate = new LogFile(mostRecentBuildSpecifier.BuildName).Date;
            ConditionalGetFingerprint mostRecentBuildFingerprint =
                fingerprintFactory.BuildFromDate(mostRecentBuildDate);
            ConditionalGetFingerprint mostRecentTemplateFingerprint =
                fingerprintFactory.BuildFromFileNames(@"BuildRows.vm", @"RecentBuilds.vm", @"AllBuilds.vm");

            return(mostRecentBuildFingerprint.Combine(mostRecentTemplateFingerprint));
        }
Exemplo n.º 9
0
        public void ShouldReturnFingerprintBasedOnLogFileDateAndTemplateDate()
        {
            const string TEST_TOKEN   = "test token";
            DateTime     logFileDate  = new DateTime(2006, 12, 2, 1, 4, 5);
            DateTime     templateDate = new DateTime(2005, 1, 2);

            var requestMock = new Mock <IRequest>();

            requestMock.SetupGet(_request => _request.SubFolders).Returns(new string[] { "server", "testServer", "project", "testProject", "build", "testBuild" });

            ConditionalGetFingerprint expectedFingerprint = new ConditionalGetFingerprint(logFileDate, TEST_TOKEN);

            Assert.AreEqual(expectedFingerprint, buildLogAction.GetFingerprint((IRequest)requestMock.Object));
        }
        public void ShouldReturnFingerprintBasedOnLogFileDateAndTemplateDate()
        {
            const string TEST_TOKEN   = "test token";
            DateTime     logFileDate  = new DateTime(2006, 12, 2, 1, 4, 5);
            DateTime     templateDate = new DateTime(2005, 1, 2);

            DynamicMock requestMock = new DynamicMock(typeof(IRequest));

            requestMock.SetupResult("SubFolders", new string[] { "server", "testServer", "project", "testProject", "build", "testBuild" });

            ConditionalGetFingerprint expectedFingerprint = new ConditionalGetFingerprint(logFileDate, TEST_TOKEN);

            Assert.AreEqual(expectedFingerprint, buildLogAction.GetFingerprint((IRequest)requestMock.MockInstance));
        }
        public void ShouldReturnNotModifiedResponseIfClientFingerprintMatchesServerFingerprint()
        {
            ConditionalGetFingerprint sharedFingerprint = new ConditionalGetFingerprint(new DateTime(1980, 10, 30), "None-Match-String");

            mockActionFactory.ExpectAndReturn("CreateFingerprintProvider", fingerprintableContentProvider, request);
            mockFingerprintFactory.ExpectAndReturn("BuildFromRequest", sharedFingerprint, request);
            mockActionFactory.ExpectAndReturn("Create", action, request);

            mockAction.ExpectAndReturn("Execute", response, request);
            mockFingerprintableContentProvider.ExpectAndReturn("GetFingerprint", sharedFingerprint, request);

            IResponse actualResponse = controller.Do();

            Assert.IsAssignableFrom(typeof(NotModifiedResponse), actualResponse);
            Assert.AreEqual(sharedFingerprint, actualResponse.ServerFingerprint);
        }
Exemplo n.º 12
0
        public void ShouldReturnNormalResponseWithServerProvidedFingerprintIfClientDidNotProvideFingerprint()
        {
            mockActionFactory.Setup(factory => factory.CreateFingerprintProvider(request)).Returns(fingerprintableContentProvider).Verifiable();
            mockFingerprintFactory.Setup(factory => factory.BuildFromRequest(request)).Returns(ConditionalGetFingerprint.NOT_AVAILABLE).Verifiable();
            mockActionFactory.Setup(factory => factory.Create(request)).Returns(action).Verifiable();

            mockAction.Setup(_action => _action.Execute(request)).Returns(response).Verifiable();
            ConditionalGetFingerprint fingerprint = new ConditionalGetFingerprint(DateTime.Now, "test token");

            mockFingerprintableContentProvider.Setup(provider => provider.GetFingerprint(request)).Returns(fingerprint).Verifiable();

            IResponse actualResponse = controller.Do();

            Assert.IsAssignableFrom(typeof(HtmlFragmentResponse), actualResponse);
            Assert.AreEqual(fingerprint, actualResponse.ServerFingerprint);
        }
        public IResponse Do()
        {
            ConditionalGetFingerprint serverFingerprint = GetServerFingerprint();
            ConditionalGetFingerprint clientFingerprint = fingerprintFactory.BuildFromRequest(request);

            if (serverFingerprint.Equals(clientFingerprint))
            {
                return(new NotModifiedResponse(serverFingerprint));
            }

            IAction   action   = actionFactory.Create(request);
            IResponse response = action.Execute(request);

            response.ServerFingerprint = serverFingerprint;
            return(response);
        }
Exemplo n.º 14
0
        public void ShouldReturnNotModifiedResponseIfClientFingerprintMatchesServerFingerprint()
        {
            ConditionalGetFingerprint sharedFingerprint = new ConditionalGetFingerprint(new DateTime(1980, 10, 30), "None-Match-String");

            mockActionFactory.Setup(factory => factory.CreateFingerprintProvider(request)).Returns(fingerprintableContentProvider).Verifiable();
            mockFingerprintFactory.Setup(factory => factory.BuildFromRequest(request)).Returns(sharedFingerprint).Verifiable();
            mockActionFactory.Setup(factory => factory.Create(request)).Returns(action).Verifiable();

            mockAction.Setup(_action => _action.Execute(request)).Returns(response).Verifiable();
            mockFingerprintableContentProvider.Setup(provider => provider.GetFingerprint(request)).Returns(sharedFingerprint).Verifiable();

            IResponse actualResponse = controller.Do();

            Assert.IsAssignableFrom(typeof(NotModifiedResponse), actualResponse);
            Assert.AreEqual(sharedFingerprint, actualResponse.ServerFingerprint);
        }
        public void ShouldReturnNormalResponseWithServerProvidedFingerprintIfClientDidNotProvideFingerprint()
        {
            mockActionFactory.ExpectAndReturn("CreateFingerprintProvider", fingerprintableContentProvider, request);
            mockFingerprintFactory.ExpectAndReturn("BuildFromRequest", ConditionalGetFingerprint.NOT_AVAILABLE, request);
            mockActionFactory.ExpectAndReturn("Create", action, request);

            mockAction.ExpectAndReturn("Execute", response, request);
            ConditionalGetFingerprint fingerprint = new ConditionalGetFingerprint(DateTime.Now, "test token");

            mockFingerprintableContentProvider.ExpectAndReturn("GetFingerprint", fingerprint, request);

            IResponse actualResponse = controller.Do();

            Assert.IsAssignableFrom(typeof(HtmlFragmentResponse), actualResponse);
            Assert.AreEqual(fingerprint, actualResponse.ServerFingerprint);
        }
Exemplo n.º 16
0
        public void ShouldReturnFingerprintBasedOnLatestBuildDateAndVelocityTemplates()
        {
            // TODO: Had to change content of build2specifier so that lister.GetFingerprint could new LogFile().Date
            // Would be nice to have a cleaner way of getting the date. Possibly from the specifier directly?
            const string testToken = "test token";

            var      requestMock = new Mock <IRequest>();
            IRequest request     = (IRequest)requestMock.Object;

            DateTime olderDate      = new DateTime(2007, 1, 1, 1, 1, 1);
            DateTime mostRecentDate = new DateTime(2007, 4, 21, 1, 7, 8);

            fingerprintFactoryMock.Setup(factory => factory.BuildFromDate(It.IsAny <DateTime>())).Returns(new ConditionalGetFingerprint(olderDate, testToken)).Verifiable();
            fingerprintFactoryMock.Setup(factory => factory.BuildFromFileNames(It.IsAny <string[]>())).Returns(new ConditionalGetFingerprint(mostRecentDate, testToken)).Verifiable();

            requestMock.SetupGet(_request => _request.SubFolders).Returns(new string[] { "server", "testServer", "project", "testProject", "build", "testBuild" }).Verifiable();

            farmServiceMock.Setup(service => service.GetMostRecentBuildSpecifiers(It.IsAny <IProjectSpecifier>(), It.IsAny <int>(), null)).Returns(new IBuildSpecifier[] { build2Specifier, build1Specifier }).Verifiable();

            ConditionalGetFingerprint expectedFingerprint = new ConditionalGetFingerprint(mostRecentDate, testToken);

            Assert.AreEqual(expectedFingerprint, lister.GetFingerprint(request));
        }
        public void ShouldReturnFingerprintBasedOnLatestBuildDateAndVelocityTemplates()
        {
            // TODO: Had to change content of build2specifier so that lister.GetFingerprint could new LogFile().Date
            // Would be nice to have a cleaner way of getting the date. Possibly from the specifier directly?
            const string testToken = "test token";

            DynamicMock requestMock = new DynamicMock(typeof(IRequest));
            IRequest    request     = (IRequest)requestMock.MockInstance;

            DateTime olderDate      = new DateTime(2007, 1, 1, 1, 1, 1);
            DateTime mostRecentDate = new DateTime(2007, 4, 21, 1, 7, 8);

            fingerprintFactoryMock.SetupResult("BuildFromDate", new ConditionalGetFingerprint(olderDate, testToken), typeof(DateTime));
            fingerprintFactoryMock.SetupResult("BuildFromFileNames", new ConditionalGetFingerprint(mostRecentDate, testToken), typeof(string[]));

            requestMock.SetupResult("SubFolders", new string[] { "server", "testServer", "project", "testProject", "build", "testBuild" });

            farmServiceMock.SetupResult("GetMostRecentBuildSpecifiers", new IBuildSpecifier[] { build2Specifier, build1Specifier }, typeof(IProjectSpecifier), typeof(int), null);

            ConditionalGetFingerprint expectedFingerprint = new ConditionalGetFingerprint(mostRecentDate, testToken);

            Assert.AreEqual(expectedFingerprint, lister.GetFingerprint(request));
        }
Exemplo n.º 18
0
 public NotModifiedResponse(ConditionalGetFingerprint serverFingerprint)
 {
     this.serverFingerprint = serverFingerprint;
 }
Exemplo n.º 19
0
        public ConditionalGetFingerprint GetFingerprint(IRequest request)
        {
            ConditionalGetFingerprint fingerprint = CalculateLocalFingerprint(request);

            return(fingerprint.Combine(((IConditionalGetFingerprintProvider)decoratedAction).GetFingerprint(request)));
        }
Exemplo n.º 20
0
        public void ShouldNeverEqualNotAvailable()
        {
            ConditionalGetFingerprint testFingerprint = new ConditionalGetFingerprint(testDate, testETag);

            Assert.AreNotEqual(testFingerprint, ConditionalGetFingerprint.NOT_AVAILABLE);
        }