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)); }
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)); }
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>()); }
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); }
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)); }
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)); }
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); }
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); }
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); }
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)); }
public NotModifiedResponse(ConditionalGetFingerprint serverFingerprint) { this.serverFingerprint = serverFingerprint; }
public ConditionalGetFingerprint GetFingerprint(IRequest request) { ConditionalGetFingerprint fingerprint = CalculateLocalFingerprint(request); return(fingerprint.Combine(((IConditionalGetFingerprintProvider)decoratedAction).GetFingerprint(request))); }
public void ShouldNeverEqualNotAvailable() { ConditionalGetFingerprint testFingerprint = new ConditionalGetFingerprint(testDate, testETag); Assert.AreNotEqual(testFingerprint, ConditionalGetFingerprint.NOT_AVAILABLE); }