public async Task ValidateLogoutUri_SucceedsForOtherUrisOnTheSameDomain(string logoutUri)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            // Act
            var result = await validator.ValidateLogoutUriAsync(manager, application, logoutUri);

            // Assert
            Assert.True(result.Succeeded);
        }
        public async Task ValidateLogoutUri_FailsIfTheUriIsRelative()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.InvalidLogoutUri("/signout-oidc")
            };

            // Act
            var result = await validator.ValidateLogoutUriAsync(manager, application, "/signout-oidc");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateLogoutUri_FailsIfTheUriIsNotInTheSameDomainAsTheOthers()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.DifferentDomains()
            };

            // Act
            var result = await validator.ValidateLogoutUriAsync(manager, application, "https://www.contoso.com/signout-oidc");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateLogoutUri_FailsIfTheApplicationAlreadyContainsTheUri(string logoutUri)
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.DuplicateLogoutUri(logoutUri)
            };

            // Act
            var result = await validator.ValidateLogoutUriAsync(manager, application, logoutUri);

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }
        public async Task ValidateLogoutUri_FailsFailsForOtherNonHttpsUris()
        {
            // Arrange
            var validator   = new ApplicationValidator <TestApplication>(new ApplicationErrorDescriber());
            var application = CreateApplication();
            var manager     = CreateTestManager();

            var expectedError = new List <IdentityServiceError> {
                errorDescriber.NoHttpsUri("urn:self:aspnet:identity:integrated"),
                errorDescriber.DifferentDomains()
            };

            // Act
            var result = await validator.ValidateLogoutUriAsync(manager, application, "urn:self:aspnet:identity:integrated");

            // Assert
            Assert.False(result.Succeeded);
            Assert.Equal(expectedError, result.Errors, ErrorsComparer.Instance);
        }