public void MemberImportCustomization()
        {
            var logicalType = new TestTypeDescriptor();
            var properties  = logicalType.GetProperties();

            properties.Add(new TestPropertyDescriptor("prop1", typeof(object), new Hashtable()));

            var calls2          = new ArrayList();
            var memberImporter2 = new TestObjectMemberImporter(calls2);
            var services2       = new Hashtable
            {
                [typeof(IObjectMemberImporter)] = memberImporter2
            };

            properties.Add(new TestPropertyDescriptor("prop2", typeof(object), services2));

            // Third property added to exercise issue #27:
            // http://code.google.com/p/jayrock/issues/detail?id=27

            var calls3          = new ArrayList();
            var memberImporter3 = new TestObjectMemberImporter(calls3);
            var services3       = new Hashtable
            {
                [typeof(IObjectMemberImporter)] = memberImporter3
            };

            properties.Add(new TestPropertyDescriptor("prop3", typeof(object), services3));

            var importer = new ComponentImporter(typeof(Thing), logicalType);
            var context  = new ImportContext();

            context.Register(importer);

            var writer = new JsonRecorder();

            writer.WriteStartObject();
            writer.WriteMember("prop1");
            writer.WriteString("value1");
            writer.WriteMember("prop2");
            writer.WriteString("value2");
            writer.WriteMember("prop3");
            writer.WriteString("value3");
            writer.WriteEndObject();

            var reader = writer.CreatePlayer();
            var thing  = (Thing)context.Import(typeof(Thing), reader);

            Assert.AreEqual(1, calls2.Count);

            Assert.AreSame(memberImporter2, calls2[0]);
            Assert.AreEqual(new object[] { context, reader, thing }, memberImporter2.ImportArgs);
            Assert.AreEqual("value2", memberImporter2.ImportedValue);

            Assert.AreEqual(1, calls3.Count);

            Assert.AreSame(memberImporter3, calls3[0]);
            Assert.AreEqual(new object[] { context, reader, thing }, memberImporter3.ImportArgs);
            Assert.AreEqual("value3", memberImporter3.ImportedValue);
        }
Esempio n. 2
0
 public WebBaseHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory, ITemporaryDirectoryProvider dirProvider)
     : base(typeDescriptor, routeFactory)
 {
     _dirProvider = dirProvider;
     // By default, use global.asax to register web api
     EnableDefaultOwinWebApiConfiguration = false;
     EnableGlobalAsax = true;
 }
Esempio n. 3
0
 public WebBaseHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory, ITemporaryDirectoryProvider dirProvider)
     : base(typeDescriptor, routeFactory)
 {
     _dirProvider = dirProvider;
     // By default, use global.asax to register web api
     EnableDefaultOwinWebApiConfiguration = false;
     EnableGlobalAsax = true;
 }
Esempio n. 4
0
        private static IEnumerable <IWebHostConfiguration> GetWebConfigurations(TestTypeDescriptor descriptor)
        {
            var type = descriptor.TestTypeInfo.Type;

            var retval = type.GetCustomAttributes()
                         .Where(one => one is IWebHostConfiguration)
                         .OfType <IWebHostConfiguration>();

            return(retval);
        }
        public void SkipsReadOnlyProperty()
        {
            var thingType  = typeof(Thing);
            var reader     = new JsonTextReader(new StringReader("{ Id : 42 }"));
            var descriptor = new TestTypeDescriptor();

            descriptor.GetProperties().Add(new ReadOnlyPropertyDescriptor("Id"));
            var importer = new ComponentImporter(thingType, descriptor);

            importer.Import(new ImportContext(), reader);
            Assert.IsFalse(((ReadOnlyPropertyDescriptor)descriptor.GetProperties().Find("Id", false)).SetValueCalled);
        }
Esempio n. 6
0
        public void MemberImportCustomization()
        {
            TestTypeDescriptor logicalType = new TestTypeDescriptor();
            PropertyDescriptorCollection properties = logicalType.GetProperties();

            properties.Add(new TestPropertyDescriptor("prop1", typeof(object), new Hashtable()));

            ArrayList calls2 = new ArrayList();
            TestObjectMemberImporter memberImporter2 = new TestObjectMemberImporter(calls2);
            Hashtable services2 = new Hashtable();
            services2.Add(typeof(IObjectMemberImporter), memberImporter2);
            properties.Add(new TestPropertyDescriptor("prop2", typeof(object), services2));

            // Third property added to exercise issue #27:
            // http://code.google.com/p/jayrock/issues/detail?id=27

            ArrayList calls3 = new ArrayList();
            TestObjectMemberImporter memberImporter3 = new TestObjectMemberImporter(calls3);
            Hashtable services3 = new Hashtable();
            services3.Add(typeof(IObjectMemberImporter), memberImporter3);
            properties.Add(new TestPropertyDescriptor("prop3", typeof(object), services3));

            ComponentImporter importer = new ComponentImporter(typeof(Thing), logicalType);
            ImportContext context = new ImportContext();
            context.Register(importer);

            JsonRecorder writer = new JsonRecorder();
            writer.WriteStartObject();
            writer.WriteMember("prop1");
            writer.WriteString("value1");
            writer.WriteMember("prop2");
            writer.WriteString("value2");
            writer.WriteMember("prop3");
            writer.WriteString("value3");
            writer.WriteEndObject();

            JsonReader reader = writer.CreatePlayer();
            Thing thing = (Thing) context.Import(typeof(Thing), reader);

            Assert.AreEqual(1, calls2.Count);

            Assert.AreSame(memberImporter2, calls2[0]);
            Assert.AreEqual(new object[] { context, reader, thing }, memberImporter2.ImportArgs);
            Assert.AreEqual("value2", memberImporter2.ImportedValue);

            Assert.AreEqual(1, calls3.Count);

            Assert.AreSame(memberImporter3, calls3[0]);
            Assert.AreEqual(new object[] { context, reader, thing }, memberImporter3.ImportArgs);
            Assert.AreEqual("value3", memberImporter3.ImportedValue);
        }
Esempio n. 7
0
        public void MemberExportCustomization()
        {
            var calls = new ArrayList();

            var logicalType = new TestTypeDescriptor();
            var properties  = logicalType.GetProperties();

            var memexp1  = new TestObjectMemberExporter(calls);
            var services = new Hashtable
            {
                [typeof(IObjectMemberExporter)] = memexp1
            };

            properties.Add(new TestPropertyDescriptor("prop1", services));

            var memexp2 = new TestObjectMemberExporter(calls);

            services = new Hashtable
            {
                [typeof(IObjectMemberExporter)] = memexp2
            };
            properties.Add(new TestPropertyDescriptor("prop2", services));

            var exporter = new ComponentExporter(typeof(Thing), logicalType);
            var context  = new ExportContext();

            context.Register(exporter);

            var writer = new JsonRecorder();
            var thing  = new Thing();

            context.Export(thing, writer);

            Assert.AreEqual(2, calls.Count);

            object[] args = { context, writer, thing };

            Assert.AreSame(memexp1, calls[0]);
            Assert.AreEqual(args, ((TestObjectMemberExporter)calls[0]).ExportArgs);

            Assert.AreSame(memexp2, calls[1]);
            Assert.AreEqual(args, ((TestObjectMemberExporter)calls[1]).ExportArgs);
        }
Esempio n. 8
0
        public void MemberImportCustomization()
        {
            ArrayList calls = new ArrayList();

            TestTypeDescriptor           logicalType = new TestTypeDescriptor();
            PropertyDescriptorCollection properties  = logicalType.GetProperties();

            properties.Add(new TestPropertyDescriptor("prop1", typeof(object), new Hashtable()));

            TestObjectMemberImporter memberImporter = new TestObjectMemberImporter(calls);
            Hashtable services = new Hashtable();

            services.Add(typeof(IObjectMemberImporter), memberImporter);
            properties.Add(new TestPropertyDescriptor("prop2", typeof(object), services));

            ComponentImporter importer = new ComponentImporter(typeof(Thing), logicalType);
            ImportContext     context  = new ImportContext();

            context.Register(importer);

            JsonRecorder writer = new JsonRecorder();

            writer.WriteStartObject();
            writer.WriteMember("prop1");
            writer.WriteString("value1");
            writer.WriteMember("prop2");
            writer.WriteString("value2");
            writer.WriteEndObject();

            JsonReader reader = writer.CreatePlayer();
            Thing      thing  = (Thing)context.Import(typeof(Thing), reader);

            Assert.AreEqual(1, calls.Count);

            Assert.AreSame(memberImporter, calls[0]);
            Assert.AreEqual(new object[] { context, reader, thing }, memberImporter.ImportArgs);
            Assert.AreEqual("value2", memberImporter.ImportedValue);
        }
 public IISExpressHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory, ITemporaryDirectoryProvider dirProvider)
     : base(typeDescriptor, routeFactory, dirProvider)
 {
     this.Name = "IIS Express";
 }
Esempio n. 10
0
 public void SkipsReadOnlyProperty()
 {
     Type thingType = typeof(Thing);
     JsonTextReader reader = new JsonTextReader(new StringReader("{ Id : 42 }"));
     TestTypeDescriptor descriptor = new TestTypeDescriptor();
     descriptor.GetProperties().Add(new ReadOnlyPropertyDescriptor("Id"));
     ComponentImporter importer = new ComponentImporter(thingType, descriptor);
     importer.Import(new ImportContext(), reader);
     Assert.IsFalse(((ReadOnlyPropertyDescriptor) descriptor.GetProperties().Find("Id", false)).SetValueCalled);
 }
 public void SkipsReadOnlyProperty()
 {
     Type thingType = typeof(Thing);
     JsonTextReader reader = new JsonTextReader(new StringReader("{ Id : 42 }"));
     TestTypeDescriptor descriptor = new TestTypeDescriptor();
     descriptor.AddReadOnlyProperty("Id");
     ComponentImporter importer = new ComponentImporter(thingType, descriptor);
     importer.Import(reader);
     Assert.IsFalse(descriptor.GetProperty("Id").SetValueCalled);
 }
Esempio n. 12
0
 public IISHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory, ITemporaryDirectoryProvider dirProvider)
     : base(typeDescriptor, routeFactory, dirProvider)
 {
     this.Name = "IIS";
 }
Esempio n. 13
0
        public void MemberImportCustomization()
        {
            ArrayList calls = new ArrayList();

            TestTypeDescriptor logicalType = new TestTypeDescriptor();
            PropertyDescriptorCollection properties = logicalType.GetProperties();

            properties.Add(new TestPropertyDescriptor("prop1", typeof(object), new Hashtable()));

            TestObjectMemberImporter memberImporter = new TestObjectMemberImporter(calls);
            Hashtable services = new Hashtable();
            services.Add(typeof(IObjectMemberImporter), memberImporter);
            properties.Add(new TestPropertyDescriptor("prop2", typeof(object), services));

            ComponentImporter importer = new ComponentImporter(typeof(Thing), logicalType);
            ImportContext context = new ImportContext();
            context.Register(importer);

            JsonRecorder writer = new JsonRecorder();
            writer.WriteStartObject();
            writer.WriteMember("prop1");
            writer.WriteString("value1");
            writer.WriteMember("prop2");
            writer.WriteString("value2");
            writer.WriteEndObject();

            JsonReader reader = writer.CreatePlayer();
            Thing thing = (Thing) context.Import(typeof(Thing), reader);

            Assert.AreEqual(1, calls.Count);

            Assert.AreSame(memberImporter, calls[0]);
            Assert.AreEqual(new object[] { context, reader, thing }, memberImporter.ImportArgs);
            Assert.AreEqual("value2", memberImporter.ImportedValue);
        }
 public KatanaSelfHostElement(TestTypeDescriptor descriptor, IRouteFactory routeFactory, IPortArranger portArranger)
     : base(descriptor, routeFactory)
 {
     this.Name = "Katana-Self-Host";
     _portArranger = portArranger;
 }
Esempio n. 15
0
 public BaseHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory)
 {
     TypeDescriptor = typeDescriptor;
     _defaultRoute  = routeFactory;
 }
Esempio n. 16
0
 public AzureWebsiteHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory, ITemporaryDirectoryProvider dirProvider)
     : base(typeDescriptor, routeFactory, dirProvider)
 {
     this.Name = "Azure Web Site";
 }
Esempio n. 17
0
        private static IEnumerable<IWebHostConfiguration> GetWebConfigurations(TestTypeDescriptor descriptor)
        {
            var type = descriptor.TestTypeInfo.Type;

            var retval = type.GetCustomAttributes()
                             .Where(one => one is IWebHostConfiguration)
                             .OfType<IWebHostConfiguration>();

            return retval;
        }
        public void MemberExportCustomization()
        {
            TestObjectMemberExporter memberExporter = new TestObjectMemberExporter();
            Hashtable services = new Hashtable();
            services.Add(typeof(IObjectMemberExporter), memberExporter);

            TestTypeDescriptor logicalType = new TestTypeDescriptor();
            PropertyDescriptorCollection properties = logicalType.GetProperties();
            properties.Add(new TestPropertyDescriptor("prop", services));
            
            ComponentExporter exporter = new ComponentExporter(typeof(Thing), logicalType);
            ExportContext context = new ExportContext();
            context.Register(exporter);
            
            JsonRecorder writer = new JsonRecorder();
            Thing thing = new Thing();
            context.Export(thing, writer);
            
            Assert.AreSame(context, memberExporter.ExportContext);
            Assert.AreSame(writer, memberExporter.ExportWriter);
            Assert.AreSame(thing, memberExporter.ExportSource);
        }
Esempio n. 19
0
 public BaseHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory)
 {
     TypeDescriptor = typeDescriptor;
     _defaultRoute = routeFactory;
 }
        public void MemberImportCustomization()
        {
            TestObjectMemberImporter memberImporter = new TestObjectMemberImporter();
            Hashtable services = new Hashtable();
            services.Add(typeof(IObjectMemberImporter), memberImporter);

            TestTypeDescriptor logicalType = new TestTypeDescriptor();
            PropertyDescriptorCollection properties = logicalType.GetProperties();
            TestPropertyDescriptor property = new TestPropertyDescriptor("prop", typeof(object), services);
            properties.Add(property);
            
            ComponentImporter importer = new ComponentImporter(typeof(Thing), logicalType);
            ImportContext context = new ImportContext();
            context.Register(importer);
            
            JsonRecorder writer = new JsonRecorder();
            writer.WriteStartObject();
            writer.WriteMember("prop");
            writer.WriteString("value");
            writer.WriteEndObject();

            JsonReader reader = writer.CreatePlayer();
            Thing thing = (Thing) context.Import(typeof(Thing), reader);
            
            Assert.AreSame(context, memberImporter.ImportContext);
            Assert.AreSame(reader, memberImporter.ImportReader);
            Assert.AreSame(thing, memberImporter.ImportTarget);
            Assert.AreEqual("value", memberImporter.ImportedValue);
        }
Esempio n. 21
0
        public IEnumerable<IRunElement> Perceive(ITestClassCommand ntcc)
        {
            var descriptor = new TestTypeDescriptor(ntcc.TypeUnderTest);

            var attrs = new HashSet<HostType>(
                ntcc.TypeUnderTest.GetCustomAttributes<NwHostAttribute>().Select(a => a.HostType));

            if (attrs.Count() == 0)
            {
                var defaultHostTypesSetting = NuwaGlobalConfiguration.DefaultHostTypes;
                if (!string.IsNullOrEmpty(defaultHostTypesSetting))
                {
                    var defaultHosts = new List<HostType>();
                    foreach (var type in defaultHostTypesSetting.Split(','))
                    {
                        defaultHosts.Add((HostType)Enum.Parse(typeof(HostType), type, true));
                    }
                    _defaultHosts = defaultHosts;
                }

                // fall back to default setting
                foreach (var host in _defaultHosts)
                {
                    attrs.Add(host);
                }
            }

            var retvals = new List<IRunElement>();

            if (attrs.Contains(HostType.WcfSelf))
            {
                var host = new WcfSelfHostElement(descriptor, _route, _ports);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IIS))
            {
                var host = new IISHostElement(descriptor, _route, _dirProvider);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IISExpress))
            {
                var host = new IISExpressHostElement(descriptor, _route, _dirProvider);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.AzureWebsite))
            {
                var host = new AzureWebsiteHostElement(descriptor, _route, _dirProvider);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.KatanaSelf))
            {
                var host = new KatanaSelfHostElement(descriptor, _route, _ports);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IISKatana))
            {
                var host = new IISHostElement(descriptor, _route, _dirProvider);
                host.EnableDefaultOwinWebApiConfiguration = true;
                host.EnableGlobalAsax = false;
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IISExpressKatana))
            {
                var host = new IISExpressHostElement(descriptor, _route, _dirProvider);
                host.EnableDefaultOwinWebApiConfiguration = true;
                host.EnableGlobalAsax = false;
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.AzureWebsiteKatana))
            {
                var host = new AzureWebsiteHostElement(descriptor, _route, _dirProvider);
                host.EnableDefaultOwinWebApiConfiguration = true;
                host.EnableGlobalAsax = false;
                retvals.Add(host);
            }

            return retvals;
        }
Esempio n. 22
0
        public void MemberExportCustomization()
        {
            ArrayList calls = new ArrayList();

            TestTypeDescriptor logicalType = new TestTypeDescriptor();
            PropertyDescriptorCollection properties = logicalType.GetProperties();

            Hashtable services;

            TestObjectMemberExporter memexp1 = new TestObjectMemberExporter(calls);
            services = new Hashtable();
            services.Add(typeof(IObjectMemberExporter), memexp1);
            properties.Add(new TestPropertyDescriptor("prop1", services));

            TestObjectMemberExporter memexp2 = new TestObjectMemberExporter(calls);
            services = new Hashtable();
            services.Add(typeof(IObjectMemberExporter), memexp2);
            properties.Add(new TestPropertyDescriptor("prop2", services));

            ComponentExporter exporter = new ComponentExporter(typeof(Thing), logicalType);
            ExportContext context = new ExportContext();
            context.Register(exporter);

            JsonRecorder writer = new JsonRecorder();
            Thing thing = new Thing();
            context.Export(thing, writer);

            Assert.AreEqual(2, calls.Count);

            object[] args = { context, writer, thing };

            Assert.AreSame(memexp1, calls[0]);
            Assert.AreEqual(args, ((TestObjectMemberExporter) calls[0]).ExportArgs);

            Assert.AreSame(memexp2, calls[1]);
            Assert.AreEqual(args, ((TestObjectMemberExporter) calls[1]).ExportArgs);
        }
 public AzureWebsiteHostElement(TestTypeDescriptor typeDescriptor, IRouteFactory routeFactory, ITemporaryDirectoryProvider dirProvider)
     : base(typeDescriptor, routeFactory, dirProvider)
 {
     this.Name = "Azure Web Site";
 }
Esempio n. 24
0
 public KatanaSelfHostElement(TestTypeDescriptor descriptor, IRouteFactory routeFactory, IPortArranger portArranger)
     : base(descriptor, routeFactory)
 {
     this.Name     = "Katana-Self-Host";
     _portArranger = portArranger;
 }
Esempio n. 25
0
        public IEnumerable <IRunElement> Perceive(ITestClassCommand ntcc)
        {
            var descriptor = new TestTypeDescriptor(ntcc.TypeUnderTest);

            var attrs = new HashSet <HostType>(
                ntcc.TypeUnderTest.GetCustomAttributes <NwHostAttribute>().Select(a => a.HostType));

            if (attrs.Count() == 0)
            {
                var defaultHostTypesSetting = NuwaGlobalConfiguration.DefaultHostTypes;
                if (!string.IsNullOrEmpty(defaultHostTypesSetting))
                {
                    var defaultHosts = new List <HostType>();
                    foreach (var type in defaultHostTypesSetting.Split(','))
                    {
                        defaultHosts.Add((HostType)Enum.Parse(typeof(HostType), type, true));
                    }
                    _defaultHosts = defaultHosts;
                }

                // fall back to default setting
                foreach (var host in _defaultHosts)
                {
                    attrs.Add(host);
                }
            }

            var retvals = new List <IRunElement>();

            if (attrs.Contains(HostType.WcfSelf))
            {
                var host = new WcfSelfHostElement(descriptor, _route, _ports);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IIS))
            {
                var host = new IISHostElement(descriptor, _route, _dirProvider);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IISExpress))
            {
                var host = new IISExpressHostElement(descriptor, _route, _dirProvider);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.AzureWebsite))
            {
                var host = new AzureWebsiteHostElement(descriptor, _route, _dirProvider);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.KatanaSelf))
            {
                var host = new KatanaSelfHostElement(descriptor, _route, _ports);
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IISKatana))
            {
                var host = new IISHostElement(descriptor, _route, _dirProvider);
                host.EnableDefaultOwinWebApiConfiguration = true;
                host.EnableGlobalAsax = false;
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.IISExpressKatana))
            {
                var host = new IISExpressHostElement(descriptor, _route, _dirProvider);
                host.EnableDefaultOwinWebApiConfiguration = true;
                host.EnableGlobalAsax = false;
                retvals.Add(host);
            }

            if (attrs.Contains(HostType.AzureWebsiteKatana))
            {
                var host = new AzureWebsiteHostElement(descriptor, _route, _dirProvider);
                host.EnableDefaultOwinWebApiConfiguration = true;
                host.EnableGlobalAsax = false;
                retvals.Add(host);
            }

            return(retvals);
        }