public void Saml2RedirectBinding_Bind_WithQueryIn_destinationUrl() { var message = new Saml2MessageImplementation { XmlData = ExampleXmlData, DestinationUrl = new Uri("http://www.example.com/acs?aQueryParam=QueryParamValue"), MessageName = "SAMLRequest" }; var result = Saml2Binding.Get(Saml2BindingType.HttpRedirect).Bind(message); var expected = new CommandResult() { Location = new Uri("http://www.example.com/acs?aQueryParam=QueryParamValue&SAMLRequest=" + ExampleSerializedData), HttpStatusCode = System.Net.HttpStatusCode.SeeOther, }; result.ShouldBeEquivalentTo(expected); }
public void Saml2RedirectBinding_Bind_With_RelayState() { var message = new Saml2MessageImplementation { XmlData = "Data", RelayState = "SomeState that needs escaping #%=3", DestinationUrl = new Uri("http://host"), MessageName = "SAMLRequest" }; var expected = new CommandResult() { Location = new Uri("http://host?SAMLRequest=c0ksSQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D" + "&RelayState=" + Uri.EscapeDataString(message.RelayState)), HttpStatusCode = System.Net.HttpStatusCode.SeeOther }; var result = Saml2Binding.Get(Saml2BindingType.HttpRedirect).Bind(message); result.ShouldBeEquivalentTo(expected); }
private static CommandResult CreateAndBindMessageWithSignature( string issuer = "https://idp.example.com", string messageName = "SAMLRequest", bool includeRelayState = true ) { var message = new Saml2MessageImplementation { XmlData = "<Data/>", RelayState = includeRelayState ? "SomeState that needs escaping #%=3" : null, DestinationUrl = new Uri("http://host"), MessageName = messageName, SigningCertificate = SignedXmlHelper.TestCert }; if (!string.IsNullOrEmpty(issuer)) { message.XmlData = $"<Data><Issuer xmlns=\"{Saml2Namespaces.Saml2Name}\">{issuer}</Issuer></Data>"; } var result = Saml2Binding.Get(Saml2BindingType.HttpRedirect).Bind(message); return(result); }