示例#1
0
        public void ShouldGenerateWithDataSetSchemaAndImportXmlType()
        {
            XmlSchemaTypeGenerator        generator = new XmlSchemaTypeGenerator(true);
            CodeTypeDeclarationCollection types     = generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\DataSetSchema.xsd"));

            Assert.AreEqual <int>(2, types.Count);
        }
示例#2
0
        public void ShouldGeneratedWithIncludesAndXmlSerializer()
        {
            XmlSchemaTypeGenerator        generator = new XmlSchemaTypeGenerator(true);
            CodeTypeDeclarationCollection types     = generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\Company.xsd"));

            Assert.IsNotNull(types, "No exception thrown");
        }
示例#3
0
        public void ShouldGenerateWithDefaultSerializer()
        {
            XmlSchemaTypeGenerator        generator = new XmlSchemaTypeGenerator(false);
            CodeTypeDeclarationCollection types     = generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\Company.xsd"));

            Assert.AreEqual <int>(4, types.Count);
        }
示例#4
0
        public void ShouldGetMetadataFromWsdlFile()
        {
            string            wsdlLocation = ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\MockService.wsdl");
            MetadataDiscovery instance     = new MetadataDiscovery(wsdlLocation);
            MetadataSet       metadata     = instance.InspectMetadata();

            AssertMetadataForWsdlFile(metadata);
        }
示例#5
0
        public void ShouldGenerateEnumType()
        {
            CodeTypeDeclarationCollection types =
                generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\Enums.xsd"));

            Assert.AreEqual <int>(1, types.Count);
            Assert.IsTrue(types[0].IsEnum);
            Assert.AreEqual <int>(4, types[0].Members.Count);
        }
示例#6
0
        public void ShouldGetWritenMetadataDocumentsToFiles()
        {
            string            wsdlLocation          = ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\MockService.wsdl");
            MetadataDiscovery instance              = new MetadataDiscovery(wsdlLocation);
            string            mapFile               = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + @"\Test\", "MockService.map");
            DiscoveryClientResultCollection results = instance.WriteMetadata(mapFile);

            Assert.AreEqual <int>(4, results.Count);
        }
示例#7
0
        public void ShouldGenerateCollectionType()
        {
            CodeTypeDeclarationCollection types =
                generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\Collections.xsd"));

            Assert.AreEqual <int>(1, types.Count);
            Assert.IsTrue(types[0].IsClass);
            Assert.AreEqual <string>(typeof(List <>).FullName, types[0].BaseTypes[0].BaseType);
            Assert.AreEqual <int>(1, types[0].BaseTypes[0].TypeArguments.Count);
            Assert.AreEqual <string>("System.String", types[0].BaseTypes[0].TypeArguments[0].BaseType);
        }
        public void ShouldGenerateContractFromWsdlWithDefaultOptions()
        {
            ContractGenerationOptions options = new ContractGenerationOptions();

            options.OutputConfiguration = ConfigurationLoader.LoadConfiguration(@"SampleData\Empty.config", "ShouldGenerateContractFromWsdlWithDefaultOptions");
            Uri wsdlLocation            = new Uri(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\MockService.wsdl"));
            ContractGenerator generator = new ContractGenerator(options);

            generator.Generate(GetMetadataSet(wsdlLocation));

            ContractGeneratorCommonAsserts(generator, options);
        }
示例#9
0
        /// <summary>
        /// Creates the WSDL importer.
        /// </summary>
        /// <param name="wsdlFile">The WSDL file.</param>
        /// <returns></returns>
        public static WsdlImporter CreateImporter(string wsdlFile)
        {
            MetadataDiscovery discovery = new MetadataDiscovery(ConfigurationLoader.GetConfigurationFilePath(wsdlFile));
            ContractGenerator generator = CreateContractGenerator();
            WsdlImporter      importer  = generator.CreateWsdlImporter(discovery.InspectMetadata());

            importer.ImportAllEndpoints();
            importer.ImportAllContracts();
            importer.ImportAllBindings();
            ContractGenerator.ThrowOnMetadataConversionErrors(importer.Errors);
            return(importer);
        }
        public void ShouldGenerateConfigFileWithWsHttpBinding()
        {
            ContractGenerationOptions options = new ContractGenerationOptions();

            options.OutputConfigurationFile = ConfigurationLoader.GetConfigurationFilePath(@"SampleData\Empty.config", "ShouldGenerateConfigFileWithWsHttpBinding");
            ContractGenerator generator = new ContractGenerator(options);

            generator.Generate(GetMetadataSet(HostAddress));
            string configFileContent = File.ReadAllText(options.OutputConfigurationFile);

            Assert.IsTrue(configFileContent.Contains("<wsHttpBinding>"));
        }
        public void ShouldGenerateAndSaveConfigFile()
        {
            ContractGenerationOptions options = new ContractGenerationOptions();

            options.OutputConfigurationFile = ConfigurationLoader.GetConfigurationFilePath(@"SampleData\Empty.config", "ShouldGenerateAndSaveConfigFile", true);

            string            originalConfig = File.ReadAllText(options.OutputConfigurationFile);
            ContractGenerator generator      = new ContractGenerator(options);

            generator.Generate(GetMetadataSet(HostAddress));

            Assert.AreNotEqual(originalConfig, File.ReadAllText(options.OutputConfigurationFile));
        }
示例#12
0
        public void ShouldGenerateWithSimpleSchema()
        {
            CodeTypeDeclarationCollection types = generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\SimpleSchema.xsd"));

            Assert.AreEqual <int>(1, types.Count);
            Assert.IsTrue(types[0].IsClass);
            Assert.AreEqual <string>("element1", types[0].Name);
            Assert.AreEqual <int>(6, types[0].Members.Count);
            Assert.AreEqual <string>("Data1", types[0].Members[3].Name);
            Assert.AreEqual <string>("Data2", types[0].Members[5].Name);
            Assert.AreEqual("http://tempuri.org/SimpleSchema.xsd",
                            GetNamespaceCustomAttribute(types[0]));
        }
        private string CreateMockImportersAssembly(string assemblyName)
        {
            CompilerResults results = DynamicCompilation.CompileAssemblyFromSource(
                File.ReadAllText(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\MockImporters.cs")),
                assemblyName);

            if (results.PathToAssembly == null)
            {
                return(null);
            }

            return(ConfigurationLoader.GetConfigurationFilePath(results.PathToAssembly));
        }
        public void ShouldGenerateProtectionLevelSignValueFromWsdlFile()
        {
            ContractGenerationOptions options   = new ContractGenerationOptions();
            ContractGenerator         generator = new ContractGenerator(options);
            Uri wsdlLocation = new Uri(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\MockService.wsdl"));

            generator.Generate(GetMetadataSet(wsdlLocation));

            string proxyClass = GetClassFromCcu(options.CodeProvider, generator.CodeCompileUnit);

            Assert.IsNotNull(proxyClass);
            Assert.IsTrue(proxyClass.Contains("ProtectionLevel.Sign"), "Contains ProtectionLevel value.");
        }
示例#15
0
        public void ShouldGenerateWithIncludeSchema()
        {
            CodeTypeDeclarationCollection types =
                generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\IncludedSchema1.xsd"));

            Assert.AreEqual <int>(2, types.Count);
            Assert.IsTrue(types[0].IsClass);
            Assert.IsTrue(types[1].IsClass);
            Assert.AreEqual <string>("element1", types[1].Name);
            Assert.AreEqual <int>(4, types[0].Members.Count);
            Assert.AreEqual <string>("Data", types[1].Members[3].Name);
            Assert.AreEqual <string>("element2", types[0].Name);
            Assert.AreEqual <int>(4, types[1].Members.Count);
            Assert.AreEqual <string>("SomeData", types[0].Members[3].Name);
        }
        public void ShouldGenerateVBProxy()
        {
            ContractGenerationOptions options = new ContractGenerationOptions();

            options.CodeProvider = new VBCodeProvider();
            ContractGenerator generator = new ContractGenerator(options);
            Uri wsdlLocation            = new Uri(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\MockService.wsdl"));

            generator.Generate(GetMetadataSet(wsdlLocation));

            string proxyClass = GetClassFromCcu(options.CodeProvider, generator.CodeCompileUnit);

            Assert.IsNotNull(proxyClass);
            Assert.IsTrue(proxyClass.Contains("Public Sub New()"), "Contains VB code");
        }
示例#17
0
        public void ShouldGenerateWithXmlSchemaImporter()
        {
            XmlSchemaTypeGenerator        generator = new XmlSchemaTypeGenerator(true);
            CodeTypeDeclarationCollection types     = generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\ComplexTypeSchema.xsd"));

            Assert.AreEqual <int>(2, types.Count);
            Assert.IsTrue(types[0].IsClass);
            Assert.IsTrue(types[1].IsClass);
            Assert.AreEqual <string>("complexType", types[1].Name);
            Assert.AreEqual <int>(2, types[0].Members.Count);
            Assert.AreEqual <string>("element1", types[0].Name);
            Assert.AreEqual <int>(8, types[1].Members.Count);
            Assert.AreEqual <string>("ComplexData", types[0].Members[1].Name);
            Assert.AreEqual("http://tempuri.org/ComplexTypeSchema.xsd",
                            ((CodePrimitiveExpression)types[0].CustomAttributes[5].Arguments[0].Value).Value);
        }
        public void ShouldMergeConfigContentWithSameEndpoint()
        {
            ContractGenerationOptions options = new ContractGenerationOptions();

            options.OutputConfigurationFile = ConfigurationLoader.GetConfigurationFilePath(@"SampleData\Empty.config", "ShouldMergeConfigContentWithSameEndpoint", true);

            string            originalConfig = File.ReadAllText(options.OutputConfigurationFile);
            ContractGenerator generator      = new ContractGenerator(options);
            MetadataSet       metadata       = GetMetadataSet(HostAddress);
            WsdlImporter      importer       = generator.CreateWsdlImporter(metadata);

            generator.Generate(importer);
            // generate twice in order to update and get only one endpoint in config
            generator.Generate(importer);

            Assert.AreNotEqual(originalConfig, File.ReadAllText(options.OutputConfigurationFile));

            // Assert config file
            ServiceModelConfigurationManager manager = new ServiceModelConfigurationManager(generator.Configuration);
            ClientSection client = manager.GetClient();

            Assert.AreEqual <int>(2, client.Endpoints.Count);
        }
示例#19
0
        public void ShouldGenerateIsNullableCollectionType()
        {
            XmlSchemaTypeGenerator generator = new XmlSchemaTypeGenerator(true);
            CodeCompileUnit        unit      = generator.GenerateCodeCompileUnit(
                ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\Restriction.xsd"));

            Assert.AreEqual <int>(3, unit.Namespaces[0].Types.Count);
            foreach (CodeAttributeDeclaration attribute in unit.Namespaces[0].Types[0].CustomAttributes)
            {
                if (attribute.AttributeType.BaseType == typeof(XmlRootAttribute).FullName)
                {
                    foreach (CodeAttributeArgument argument in attribute.Arguments)
                    {
                        if (argument.Name == "IsNullable")
                        {
                            Assert.IsFalse((bool)((CodePrimitiveExpression)argument.Value).Value);
                            return;
                        }
                    }
                }
            }
            Assert.Fail("No XmlRootAttribute or IsNullable argument found");
        }
示例#20
0
        public void ShouldNotGenerateWithEmptySchema()
        {
            CodeTypeDeclarationCollection types = generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\EmptySchema.xsd"));

            Assert.AreEqual <int>(0, types.Count);
        }
示例#21
0
 public void ThrowOnInvalidInclude()
 {
     generator.GenerateTypes(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\InvalidIncludeSchema.xsd"));
 }
示例#22
0
        public void ShouldGenerateUriLocation()
        {
            CodeTypeDeclarationCollection types = generator.GenerateTypes(new Uri(ConfigurationLoader.GetConfigurationFilePath(@"SampleData\DescriptionModel\SimpleSchema.xsd")).AbsoluteUri);

            Assert.AreEqual <int>(1, types.Count);
        }