public async Task FailsToCreateAuthorizationRequest_Prompt_IncludesUnknownValue() { // Arrange var parameters = new Dictionary <string, string[]> { [OpenIdConnectParameterNames.ClientId] = new[] { "a" }, [OpenIdConnectParameterNames.RedirectUri] = new[] { "http://www.example.com/callback" }, [OpenIdConnectParameterNames.ResponseType] = new[] { "code" }, [OpenIdConnectParameterNames.ResponseMode] = new[] { "form_post" }, [OpenIdConnectParameterNames.Nonce] = new[] { "asdf" }, [OpenIdConnectParameterNames.Scope] = new[] { " openid profile " }, [OpenIdConnectParameterNames.State] = new[] { "state" }, [OpenIdConnectParameterNames.Prompt] = new[] { "login consent select_account unknown" } }; var expectedError = new AuthorizationRequestError(ProtocolErrorProvider.InvalidPromptValue("unknown"), null, null); expectedError.Message.State = "state"; var factory = CreateAuthorizationRequestFactory(); // Act var result = await factory.CreateAuthorizationRequestAsync(parameters); // Assert Assert.False(result.IsValid); Assert.Equal(expectedError, result.Error, IdentityServiceErrorComparer.Instance); Assert.Equal("http://www.example.com/callback", result.Error.RedirectUri); Assert.Equal(OpenIdConnectResponseMode.FormPost, result.Error.ResponseMode); }
private OpenIdConnectMessage ValidatePrompt(string[] parsedPrompt) { for (int i = 0; i < parsedPrompt.Length; i++) { var prompt = parsedPrompt[i]; if (string.Equals(prompt, PromptValues.None, StringComparison.Ordinal)) { if (parsedPrompt.Length > 1) { return(_errorProvider.PromptNoneMustBeTheOnlyValue(string.Join(" ", parsedPrompt))); } continue; } if (string.Equals(prompt, PromptValues.Login, StringComparison.Ordinal) || string.Equals(prompt, PromptValues.Consent, StringComparison.Ordinal) || string.Equals(prompt, PromptValues.SelectAccount, StringComparison.Ordinal)) { continue; } return(_errorProvider.InvalidPromptValue(prompt)); } return(null); }