public async Task GetRelayStateFromFormDataTest() { //ARRANGE var relayState = new Dictionary <string, object> { { "relayState", "Test state" } }; var form = new Dictionary <string, string>(); var compressor = new DeflateCompressor(); var messageEncoder = new MessageEncoding(compressor); var jsonSerialiser = new NSJsonSerializer(new DefaultSettingsProvider()); var logger = new LogProviderMock(); var serialiser = new RelaystateSerialiser(jsonSerialiser, messageEncoder, logger) as IRelayStateSerialiser; var handler = new RelayStateHandler(serialiser, logger); //ACT var serialised = await serialiser.Serialize(relayState); form.Add("RelayState", serialised); var deserialised = await handler.GetRelayStateFromFormData(form) as Dictionary <string, object>; //ASSERT Assert.AreEqual(relayState.Count, deserialised.Count); Assert.AreEqual(relayState["relayState"], deserialised["relayState"]); }
public async Task DecodeTest() { //ARRANGE var inResponseTo = Guid.NewGuid().ToString(); var response = ResponseFactoryMock.GetTokenResponseSuccess(inResponseTo, StatusCodes.Success); var logger = new LogProviderMock(); var serialised = ResponseFactoryMock.Serialize(response); var responseToBase64 = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(serialised)); var relayState = new Dictionary <string, object> { { "relayState", "Test state" } }; var compressor = new DeflateCompressor(); var messageEncoder = new MessageEncoding(compressor); var jsonSerialiser = new NSJsonSerializer(new DefaultSettingsProvider()); var serialiser = new RelaystateSerialiser(jsonSerialiser, messageEncoder, logger) as IRelayStateSerialiser; var serialisedRelaySatate = await serialiser.Serialize(relayState); var relayStateHandler = new RelayStateHandler(serialiser, logger); var form = new Dictionary <string, string> { { HttpRedirectBindingConstants.SamlResponse, responseToBase64 }, { HttpRedirectBindingConstants.RelayState, serialisedRelaySatate } }; var decoder = new PostBindingDecoder(logger); //ACT var message = await decoder.Decode(form); var stateFromResult = message.Elements[HttpRedirectBindingConstants.RelayState]; //ASSERT Assert.IsNotNull(stateFromResult); Assert.AreEqual(serialised, message.Elements[HttpRedirectBindingConstants.SamlResponse]); Assert.AreEqual(serialisedRelaySatate, message.Elements[HttpRedirectBindingConstants.RelayState]); }