public void AffinitizedRequest_AffinityKeyIsNotExtracted_SetKeyOnResponse() { var provider = new CustomHeaderSessionAffinityProvider(AffinityTestHelper.GetDataProtector().Object, AffinityTestHelper.GetLogger <CustomHeaderSessionAffinityProvider>().Object); var context = new DefaultHttpContext(); var chosenDestination = _destinations[1]; var expectedAffinityHeaderValue = chosenDestination.DestinationId.ToUTF8BytesInBase64(); provider.AffinitizeRequest(context, _defaultOptions, chosenDestination); Assert.True(context.Response.Headers.ContainsKey(AffinityHeaderName)); Assert.Equal(expectedAffinityHeaderValue, context.Response.Headers[AffinityHeaderName]); }
public void FindAffinitizedDestination_AffinityKeyIsNotSetOnRequest_ReturnKeyNotSet() { var provider = new CustomHeaderSessionAffinityProvider(AffinityTestHelper.GetDataProtector().Object, AffinityTestHelper.GetLogger <CustomHeaderSessionAffinityProvider>().Object); Assert.Equal(SessionAffinityConstants.Modes.CustomHeader, provider.Mode); var context = new DefaultHttpContext(); context.Request.Headers["SomeHeader"] = new[] { "SomeValue" }; var affinityResult = provider.FindAffinitizedDestinations(context, _destinations, "cluster-1", _defaultOptions); Assert.Equal(AffinityStatus.AffinityKeyNotSet, affinityResult.Status); Assert.Null(affinityResult.Destinations); }
public void FindAffinitizedDestination_AffinityKeyIsSetOnRequest_Success() { var provider = new CustomHeaderSessionAffinityProvider(AffinityTestHelper.GetDataProtector().Object, AffinityTestHelper.GetLogger <CustomHeaderSessionAffinityProvider>().Object); var context = new DefaultHttpContext(); context.Request.Headers["SomeHeader"] = new[] { "SomeValue" }; var affinitizedDestination = _destinations[1]; context.Request.Headers[AffinityHeaderName] = new[] { affinitizedDestination.DestinationId.ToUTF8BytesInBase64() }; var affinityResult = provider.FindAffinitizedDestinations(context, _destinations, "cluster-1", _defaultOptions); Assert.Equal(AffinityStatus.OK, affinityResult.Status); Assert.Equal(1, affinityResult.Destinations.Count); Assert.Same(affinitizedDestination, affinityResult.Destinations[0]); }
public void AffinitizedRequest_AffinityKeyIsExtracted_DoNothing() { var provider = new CustomHeaderSessionAffinityProvider(AffinityTestHelper.GetDataProtector().Object, AffinityTestHelper.GetLogger <CustomHeaderSessionAffinityProvider>().Object); var context = new DefaultHttpContext(); context.Request.Headers["SomeHeader"] = new[] { "SomeValue" }; var affinitizedDestination = _destinations[1]; context.Request.Headers[AffinityHeaderName] = new[] { affinitizedDestination.DestinationId.ToUTF8BytesInBase64() }; var affinityResult = provider.FindAffinitizedDestinations(context, _destinations, "cluster-1", _defaultOptions); Assert.Equal(AffinityStatus.OK, affinityResult.Status); provider.AffinitizeRequest(context, _defaultOptions, affinitizedDestination); Assert.False(context.Response.Headers.ContainsKey(AffinityHeaderName)); }
public void FindAffinitizedDestination_CustomHeaderNameIsNotSpecified_UseDefaultName(Dictionary <string, string> settings) { var options = new SessionAffinityOptions { Enabled = true, Mode = "CustomHeader", FailurePolicy = "Return503", Settings = settings, }; var provider = new CustomHeaderSessionAffinityProvider(AffinityTestHelper.GetDataProtector().Object, AffinityTestHelper.GetLogger <CustomHeaderSessionAffinityProvider>().Object); var context = new DefaultHttpContext(); var affinitizedDestination = _destinations[1]; context.Request.Headers[CustomHeaderSessionAffinityProvider.DefaultCustomHeaderName] = new[] { affinitizedDestination.DestinationId.ToUTF8BytesInBase64() }; var affinityResult = provider.FindAffinitizedDestinations(context, _destinations, "cluster-1", options); Assert.Equal(AffinityStatus.OK, affinityResult.Status); Assert.Equal(1, affinityResult.Destinations.Count); Assert.Same(affinitizedDestination, affinityResult.Destinations[0]); }