Ejemplo n.º 1
0
        When_resolving_services_from_container_SNAP_should_load_dynamicproxygenassebmly2_in_appdomain_only_once()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespaceOf <IBadCode>();
                c.Bind <SecondInterceptor>().To <SecondAttribute>();
                c.Bind <FirstInterceptor>().To <FirstAttribute>();
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>
                    ();
            });

            container.Kernel.Bind <IOrderedCode>().To <OrderedCode>();
            container.Kernel.Bind <IBadCode>().To <BadCode>();

            var orderedCode = container.Kernel.Get <IOrderedCode>();
            var badCode     = container.Kernel.Get <IBadCode>();

            orderedCode.RunInOrder();
            Assert.AreEqual("First", OrderedCode.Actions[1]);
            Assert.AreEqual("Second", OrderedCode.Actions[0]);

            Assert.DoesNotThrow(badCode.GiddyUp);

            var dynamicProxyGenerationAssemblies = AppDomain.CurrentDomain
                                                   .GetAssemblies()
                                                   .Where(assembly => assembly.GetName().Name == "DynamicProxyGenAssembly2")
                                                   .ToList();

            Assert.That(dynamicProxyGenerationAssemblies.Count, Is.EqualTo(2));
            // both signed and unsigned.
            Assert.IsNotNull(dynamicProxyGenerationAssemblies.FirstOrDefault(a => a.GetName().GetPublicKey().Length > 0));
            Assert.IsNotNull(dynamicProxyGenerationAssemblies.FirstOrDefault(a => a.GetName().GetPublicKey().Length == 0));
        }
Ejemplo n.º 2
0
        public void Ninject_Supports_Resolving_Only_Selected_Aspects_From_Container()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests.*");
                c.Bind <FirstInterceptor>().To <FirstAttribute>();
                c.Bind <SecondInterceptor>().To <SecondAttribute>();
                c.Aspects(typeof(FirstInterceptor)).KeepInContainer();
            });

            container.Kernel.Bind <IOrderedCode>().To <OrderedCode>();
            container.Kernel.Bind <FirstInterceptor>().ToConstant(new FirstInterceptor("first_kept_in_container"));
            container.Kernel.Bind <SecondInterceptor>().ToConstant(new SecondInterceptor("second_kept_in_container"));

            var orderedCode = container.Kernel.Get <IOrderedCode>();

            orderedCode.RunInOrder();

            // first interceptor is resolved from container, while second one is via new()
            CollectionAssert.AreEquivalent(
                OrderedCode.Actions,
                new[] { "first_kept_in_container", "Second" });
        }
Ejemplo n.º 3
0
        public void Ninject_Supports_Types_Without_Interfaces()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests.Fakes*");
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>
                    ();
            });

            container.Kernel.Bind <IDependency>().To <DummyDependency>();

            container.Kernel.Bind <TypeWithoutInterface>().To <TypeWithoutInterface>();
            var typeWithoutInterface = container.Kernel.Get <TypeWithoutInterface>();

            Assert.DoesNotThrow(typeWithoutInterface.Foo);
            Assert.IsTrue(typeWithoutInterface.GetType().Name.Equals("TypeWithoutInterfaceProxy"));

            container.Kernel.Bind <TypeWithInterfaceInBaseClass>().To <TypeWithInterfaceInBaseClass>();
            var typeWithInterfaceInBaseClass = container.Kernel.Get <TypeWithInterfaceInBaseClass>();

            Assert.DoesNotThrow(typeWithInterfaceInBaseClass.Foo);
            Assert.IsTrue(typeWithInterfaceInBaseClass.GetType().Name.Equals("TypeWithInterfaceInBaseClassProxy"));
        }
Ejemplo n.º 4
0
        public void Namespace_Inclusion_Adds_Wildcards()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests");
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>();
            });

            container.Kernel.Bind <IBadCode>().To <BadCode>();
            Assert.DoesNotThrow(() => container.Kernel.Get <IBadCode>());
        }
Ejemplo n.º 5
0
        public void Type_Inclusion_Adds_Type_By_Generic()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeType <IBadCode>();
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>();
            });

            container.Kernel.Bind <IBadCode>().To <BadCode>();
            Assert.DoesNotThrow(() => container.Kernel.Get <IBadCode>());
        }
Ejemplo n.º 6
0
        public void Namespace_Inclusion_Adds_Namespace_and_Nested_Namespaces_Of_A_Given_Type()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                // AspectConfiguration have the same namespace prefix as IBadCode's namespace
                c.IncludeNamespaceOf <AspectConfiguration>(true);
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>();
            });

            container.Kernel.Bind <IBadCode>().To <BadCode>();
            Assert.DoesNotThrow(() => container.Kernel.Get <IBadCode>());
        }
Ejemplo n.º 7
0
        public void Ninject_Container_Fails_Without_Match()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("Does.Not.Work");
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>
                    ();
            });

            container.Kernel.Bind <IBadCode>().To <BadCode>();
            Assert.Throws <NullReferenceException>(() => container.Kernel.Get <IBadCode>());
        }
Ejemplo n.º 8
0
        public void Ninject_Container_Allow_Strict_Matching()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests.Fakes.IBadCode");
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>
                    ();
            });

            container.Kernel.Bind <IBadCode>().To <BadCode>();
            Assert.DoesNotThrow(() => container.Kernel.Get <IBadCode>());
        }
Ejemplo n.º 9
0
        public void Ninject_Container_Ignores_Types_Without_Decoration()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests*");
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>
                    ();
            });

            container.Kernel.Bind <INotInterceptable>().To <NotInterceptable>();
            var code = container.Kernel.Get <INotInterceptable>();

            Assert.IsFalse(code.GetType().Name.Equals("INotInterceptableProxy"));
        }
Ejemplo n.º 10
0
        public void Ninject_Container_Supports_Method_Aspects()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests*");
                c.Bind <HandleErrorInterceptor>().To <HandleErrorAttribute>
                    ();
            });

            container.Kernel.Bind <IBadCode>().To <BadCode>();
            var badCode = container.Kernel.Get <IBadCode>();

            Assert.DoesNotThrow(badCode.GiddyUp);
            Assert.IsTrue(badCode.GetType().Name.Equals("IBadCodeProxy"));
        }
Ejemplo n.º 11
0
        public void Ninject_Container_Supports_Class_Aspects()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests*");
                c.Bind <FourthClassInterceptor>().To <FourthClassAttribute>
                    ();
            });

            container.Kernel.Bind <IOrderedCode>().To <ClassOrderedCode>();
            var code = container.Kernel.Get <IOrderedCode>();

            code.RunInOrder();

            Assert.AreEqual("Fourth", OrderedCode.Actions[0]);
        }
Ejemplo n.º 12
0
        public void Ninject_Container_Supports_Multiple_Method_Aspects()
        {
            var container = new NinjectAspectContainer();

            SnapConfiguration.For(container).Configure(c =>
            {
                c.IncludeNamespace("SnapTests*");
                c.Bind <FirstInterceptor>().To <FirstAttribute>();
                c.Bind <SecondInterceptor>().To <SecondAttribute>();
            });

            container.Kernel.Bind <IOrderedCode>().To <OrderedCode>();
            var badCode = container.Kernel.Get <IOrderedCode>();

            badCode.RunInOrder();
            Assert.AreEqual("First", OrderedCode.Actions[0]);
            Assert.AreEqual("Second", OrderedCode.Actions[1]);
        }