public void IdentityProvider_ScheduledReloadOfMetadata_RetriesIfLoadFails() { MetadataRefreshScheduler.minInterval = new TimeSpan(0, 0, 0, 0, 1); var subject = CreateSubjectForMetadataRefresh(); StubServer.IdpAndFederationShortCacheDurationAvailable = false; SpinWaiter.While(() => subject.MetadataValidUntil != DateTime.MinValue, "Timed out waiting for failed metadata load to occur."); var metadataEnabledTime = DateTime.UtcNow; StubServer.IdpAndFederationShortCacheDurationAvailable = true; SpinWaiter.While(() => { var mvu = subject.MetadataValidUntil; return(!mvu.HasValue || mvu == DateTime.MinValue); }, "Timed out waiting for successful reload of metadata."); }
public void Federation_ReloadOfMetadata_RemovesAllIdpsIfMetadataIsNoLongerValid() { MetadataRefreshScheduler.minInterval = new TimeSpan(0, 0, 0, 0, 1); var options = StubFactory.CreateOptions(); var subject = new Federation( "http://localhost:13428/federationMetadataVeryShortCacheDuration", false, options); IdentityProvider idp; options.IdentityProviders.TryGetValue(new EntityId("http://idp1.federation.example.com/metadata"), out idp) .Should().BeTrue(); StubServer.IdpAndFederationShortCacheDurationAvailable = false; SpinWaiter.WhileNotEqual(() => subject.MetadataValidUntil, () => DateTime.MinValue); options.IdentityProviders.TryGetValue(new EntityId("http://idp1.federation.example.com/metadata"), out idp) .Should().BeFalse("idp should be removed if metadata is no longer valid"); }
public void Federation_ReloadOfMetadata_RetriesAfterFailedInitialLoad() { MetadataRefreshScheduler.minInterval = new TimeSpan(0, 0, 0, 0, 1); StubServer.IdpAndFederationShortCacheDurationAvailable = false; var options = StubFactory.CreateOptions(); var subject = new Federation( "http://localhost:13428/federationMetadataVeryShortCacheDuration", false, options); subject.MetadataValidUntil.Should().Be(DateTime.MinValue); StubServer.IdpAndFederationShortCacheDurationAvailable = true; SpinWaiter.WhileEqual(() => subject.MetadataValidUntil, () => DateTime.MinValue); IdentityProvider idp; options.IdentityProviders.TryGetValue(new EntityId("http://idp1.federation.example.com/metadata"), out idp) .Should().BeTrue(); }