Exemplo n.º 1
0
        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();
        }