Example #1
0
        public void AffinitizeRequest_AffinityOptionSettingNotFound_Throw()
        {
            var provider = new ProviderStub(GetDataProtector().Object, AffinityTestHelper.GetLogger <BaseSessionAffinityProvider <string> >().Object);
            var options  = GetOptionsWithUnknownSetting();

            Assert.Throws <ArgumentException>(() => provider.AffinitizeRequest(new DefaultHttpContext(), options, new DestinationInfo("dest-A")));
        }
Example #2
0
        public void AffinitizeRequest_AffinitiDisabled_DoNothing()
        {
            var dataProtector = GetDataProtector();
            var provider      = new ProviderStub(dataProtector.Object, AffinityTestHelper.GetLogger <BaseSessionAffinityProvider <string> >().Object);

            Assert.Throws <InvalidOperationException>(() => provider.AffinitizeRequest(new DefaultHttpContext(), new SessionAffinityOptions(), new DestinationInfo("id")));
        }
        public void FindAffinitizedDestination_AffinityDisabledOnCluster_ReturnsAffinityDisabled()
        {
            var provider = new ProviderStub(GetDataProtector().Object, AffinityTestHelper.GetLogger <BaseSessionAffinityProvider <string> >().Object);
            var options  = new ClusterSessionAffinityOptions(false, _defaultOptions.Mode, _defaultOptions.FailurePolicy, _defaultOptions.Settings);

            Assert.Throws <InvalidOperationException>(() => provider.FindAffinitizedDestinations(new DefaultHttpContext(), new[] { new DestinationInfo("1") }, "cluster-1", options));
        }
Example #4
0
        public void AffinitizeRequest_RequestIsAffinitized_DoNothing()
        {
            var dataProtector = GetDataProtector();
            var provider      = new ProviderStub(dataProtector.Object, AffinityTestHelper.GetLogger <BaseSessionAffinityProvider <string> >().Object);
            var context       = new DefaultHttpContext();

            provider.DirectlySetExtractedKeyOnContext(context, "ExtractedKey");
            provider.AffinitizeRequest(context, _defaultOptions, new DestinationInfo("id"));
            Assert.Null(provider.LastSetEncryptedKey);
            dataProtector.Verify(p => p.Protect(It.IsAny <byte[]>()), Times.Never);
        }
Example #5
0
        public void TestGetUnsupportedMethods()
        {
            var provider = new ProviderStub();
            List<UnsupportedMethod> unsupportedMethods = provider.GetUnsupportedMethods().ToList();

            UnsupportedMethod dropTable = unsupportedMethods.Find(m => m.Name == "DropTable");
            Assert.IsNotNull(dropTable, "DropTable should be one of the unsupported methods.");
            Assert.AreEqual(ProviderStub.NotSupportedMessageForDropTable, dropTable.Message);

            Assert.IsNull(unsupportedMethods.Find(m => m.Name == "CreateTable"), "CreateTable should be one of the supported methods.");
        }
Example #6
0
        public void AffinitizeRequest_RequestIsNotAffinitized_SetAffinityKey()
        {
            var dataProtector = GetDataProtector();
            var provider      = new ProviderStub(dataProtector.Object, AffinityTestHelper.GetLogger <BaseSessionAffinityProvider <string> >().Object);
            var destination   = new DestinationInfo("dest-A");

            provider.AffinitizeRequest(new DefaultHttpContext(), _defaultOptions, destination);
            Assert.Equal("ZGVzdC1B", provider.LastSetEncryptedKey);
            var keyBytes = Encoding.UTF8.GetBytes(destination.DestinationId);

            dataProtector.Verify(p => p.Protect(It.Is <byte[]>(b => b.SequenceEqual(keyBytes))), Times.Once);
        }
Example #7
0
        public void TestGetUnsupportedMethods() // CLEAN: move to test class of its own
        {
            var provider = new ProviderStub();
            List <UnsupportedMethod> unsupportedMethods = provider.GetUnsupportedMethods().ToList();

            UnsupportedMethod dropTable = unsupportedMethods.Find(m => m.Name == "DropTable");

            Assert.IsNotNull(dropTable, "DropTable should be one of the unsupported methods.");
            Assert.AreEqual(ProviderStub.NotSupportedMessageForDropTable, dropTable.Message);

            Assert.IsNull(unsupportedMethods.Find(m => m.Name == "CreateTable"), "CreateTable should be one of the supported methods.");
        }
    public void FindAffinitizedDestination_AffinityDisabledOnCluster_ReturnsAffinityDisabled()
    {
        var provider = new ProviderStub(GetDataProtector().Object, AffinityTestHelper.GetLogger <BaseSessionAffinityPolicy <string> >().Object);
        var options  = new SessionAffinityConfig
        {
            Enabled         = false,
            Policy          = _defaultOptions.Policy,
            FailurePolicy   = _defaultOptions.FailurePolicy,
            AffinityKeyName = _defaultOptions.AffinityKeyName
        };
        var cluster = new ClusterState("cluster");

        Assert.Throws <InvalidOperationException>(() => provider.FindAffinitizedDestinations(new DefaultHttpContext(), cluster, options, new[] { new DestinationState("1") }));
    }
Example #9
0
        private static MigrationOptions GetOptions(out IEnumerable <ProviderInfo> providerInfos)
        {
            IProviderMetadata metadata = A.Fake <IProviderMetadata>();

            A.CallTo(() => metadata.MaximumDbObjectNameLength).Returns(MaximumSupportedLength);
            A.CallTo(() => metadata.MajorVersion).Returns(Platform.MajorVersion);
            A.CallTo(() => metadata.InvariantName).Returns("System.Data.Odbc"); // for the Odbc specific tests

            IProvider provider = new ProviderStub();

            IProviderRegistry providerRegistry = A.Fake <IProviderRegistry>();

            A.CallTo(() => providerRegistry.GetProvider(metadata)).Returns(provider);
            providerInfos = new[] { new ProviderInfo(provider, metadata) };

            var options = new MigrationOptions();

            options.SupportedPlatforms.AddOrReplaceMinimumRequirement(Platform);
            return(options);
        }
    public void Request_FindAffinitizedDestinations(
        HttpContext context,
        DestinationState[] allDestinations,
        AffinityStatus expectedStatus,
        DestinationState expectedDestination,
        byte[] expectedEncryptedKey,
        bool unprotectCalled,
        LogLevel?expectedLogLevel,
        EventId expectedEventId)
    {
        var dataProtector  = GetDataProtector();
        var logger         = AffinityTestHelper.GetLogger <BaseSessionAffinityPolicy <string> >();
        var provider       = new ProviderStub(dataProtector.Object, logger.Object);
        var cluster        = new ClusterState("cluster");
        var affinityResult = provider.FindAffinitizedDestinations(context, cluster, _defaultOptions, allDestinations);

        if (unprotectCalled)
        {
            dataProtector.Verify(p => p.Unprotect(It.Is <byte[]>(b => b.SequenceEqual(expectedEncryptedKey))), Times.Once);
        }

        Assert.Equal(expectedStatus, affinityResult.Status);
        Assert.Same(expectedDestination, affinityResult.Destinations?.FirstOrDefault());

        if (expectedLogLevel != null)
        {
            logger.Verify(
                l => l.Log(expectedLogLevel.Value, expectedEventId, It.IsAny <It.IsAnyType>(), It.IsAny <Exception>(), (Func <It.IsAnyType, Exception, string>)It.IsAny <object>()),
                Times.Once);
        }

        if (expectedDestination != null)
        {
            Assert.Equal(1, affinityResult.Destinations.Count);
        }
        else
        {
            Assert.Null(affinityResult.Destinations);
        }
    }
Example #11
0
        private static MigrationOptions GetOptions()
        {
            IProviderMetadata returnedMetadata = MockRepository.GenerateStub <IProviderMetadata>();

            returnedMetadata.Expect(m => m.MaximumDbObjectNameLength).Return(MaximumSupportedLength);
            returnedMetadata.Expect(m => m.Name).Return(ProviderName);
            returnedMetadata.Expect(m => m.InvariantName).Return("System.Data.Odbc"); // for the Odbc specific tests

            IProvider provider = new ProviderStub();

            IProviderFactory  providerFactory = MockRepository.GenerateStub <IProviderFactory>();
            IProviderMetadata passedMetadata;

            providerFactory.Expect(f => f.GetProvider(ProviderName, out passedMetadata)).OutRef(returnedMetadata).Return(provider);

            var supportedProviders = new SupportedProviders(providerFactory);

            supportedProviders.Add(ProviderName);

            var options = new MigrationOptions();

            options.SupportedProviders = supportedProviders;
            return(options);
        }
Example #12
0
        private static MigrationOptions GetOptions()
        {
            IProviderMetadata returnedMetadata = MockRepository.GenerateStub<IProviderMetadata>();
            returnedMetadata.Expect(m => m.MaximumDbObjectNameLength).Return(MaximumSupportedLength);
            returnedMetadata.Expect(m => m.Name).Return(ProviderName);
            returnedMetadata.Expect(m => m.InvariantName).Return("System.Data.Odbc"); // for the Odbc specific tests

            IProvider provider = new ProviderStub();

            IProviderFactory providerFactory = MockRepository.GenerateStub<IProviderFactory>();
            IProviderMetadata passedMetadata;
            providerFactory.Expect(f => f.GetProvider(ProviderName, out passedMetadata)).OutRef(returnedMetadata).Return(provider);

            var supportedProviders = new SupportedProviders(providerFactory);
            supportedProviders.Add(ProviderName);

            var options = new MigrationOptions();
            options.SupportedProviders = supportedProviders;
            return options;
        }
Example #13
0
        private static MigrationOptions GetOptions(out IEnumerable<ProviderInfo> providerInfos)
        {
            IProviderMetadata metadata = A.Fake<IProviderMetadata>();
            A.CallTo(() => metadata.MaximumDbObjectNameLength).Returns(MaximumSupportedLength);
            A.CallTo(() => metadata.MajorVersion).Returns(Platform.MajorVersion);
            A.CallTo(() => metadata.InvariantName).Returns("System.Data.Odbc"); // for the Odbc specific tests

            IProvider provider = new ProviderStub();

            IProviderFactory providerFactory = A.Fake<IProviderFactory>();
            A.CallTo(() => providerFactory.GetProvider(metadata)).Returns(provider);
            providerInfos = new[] { new ProviderInfo(provider, metadata) };

            var options = new MigrationOptions();
            options.SupportedPlatforms.AddOrReplaceMinimumRequirement(Platform);
            return options;
        }