public void TestInitialize() { serviceProvider = new MockMappingServiceProvider(); #region Data Contract dcStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(DataContractDslDomainModel)); dcDomainModel = dcStore.GetDomainModel <DataContractDslDomainModel>(); dcTransaction = dcStore.TransactionManager.BeginTransaction(); dcModel = (DataContractModel)dcDomainModel.CreateElement(new Partition(dcStore), typeof(DataContractModel), null); // Specify the Implementation Technology and PMT dcModel.ImplementationTechnology = new DataContractWcfExtensionProvider(); dcModel.ProjectMappingTable = projectMappingTableName; dc = dcStore.ElementFactory.CreateElement(DataContract.DomainClassId) as DataContract; primitiveDataElement = dcStore.ElementFactory.CreateElement(PrimitiveDataType.DomainClassId) as PrimitiveDataType; primitiveDataElement.Name = primitiveDataElementName; #endregion #region Service Contract scStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); scDomainModel = scStore.GetDomainModel <ServiceContractDslDomainModel>(); scTransaction = scStore.TransactionManager.BeginTransaction(); scModel = (ServiceContractModel)scDomainModel.CreateElement(new Partition(scStore), typeof(ServiceContractModel), null); scModel.ImplementationTechnology = new ServiceContractWCFExtensionProvider(); scModel.ProjectMappingTable = projectMappingTableName; sc = scStore.ElementFactory.CreateElement(ServiceContract.DomainClassId) as ServiceContract; #endregion #region Validator // Initialize validator's config attributes = new NameValueCollection(); attributes.Add("elementNameProperty", "Name"); #endregion #region Simulate Model //Create the moniker //mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT.GUID]@[PROJECT]\[MODELFILE] string requestMoniker = string.Format(@"mel://{0}\{1}\{2}@{3}\{4}", primitiveDataElement.GetType().Namespace, primitiveDataElement.GetType().Name, primitiveDataElement.Id.ToString(), dataContractModelProjectName, dataContractModelFileName); // Add a DC to the model dc.DataMembers.Add(primitiveDataElement); dcModel.Contracts.Add(dc); // Create a Fault that references the Data Contract fault = scStore.ElementFactory.CreateElement(DataContractFault.DomainClassId) as DataContractFault; fault.Name = faultName; fault.Type = new MockModelBusReference(primitiveDataElement); // Create an Operation operation = scStore.ElementFactory.CreateElement(Operation.DomainClassId) as Operation; operation.Name = operationContractName; operation.Faults.Add(fault); sc.Operations.Add(operation); #endregion }
public void TestFaultMessagesGeneration() { ProjectMappingManagerSetup.InitializeManager(ServiceProvider, "ProjectMapping.ServiceContractDsl.Tests.xml"); ServiceContract rootElement = CreateRoot(ServiceContractElementName, ServiceContractElementNamespace); Operation op1 = new Operation(Store); op1.ObjectExtender = new WCFOperationContract(); op1.Name = "op1"; op1.Action = "op1"; op1.ServiceContract = rootElement; DataContractFault fault1 = new DataContractFault(Store); fault1.Name = "fault1"; //fault1.Type = @"[DSLNAMESPACE]\[MODELELEMENTTYPE]\fault1Type@[PROJECT]\[MODELFILE]"; fault1.Operation = op1; DataContractFault fault2 = new DataContractFault(Store); fault2.Name = "fault2"; //fault2.Type = @"[DSLNAMESPACE]\[MODELELEMENTTYPE]\fault2Type@[PROJECT]\[MODELFILE]"; ; fault2.Operation = op1; processFault = true; ResolveModelElement(fault1.Name); ResolveModelElement(fault2.Name); string content = RunTemplateWithDIS(rootElement); StringAssert.Contains(content, "I" + ServiceContractElementName); StringAssert.Contains(content, ServiceContractElementNamespace); }
private Fault CreateFault(string name) { DataContractFault fault = new DataContractFault(Store); fault.Name = name; //fault.Type = @"mel://Microsoft.Practices.ServiceFactory.DataContracts\FaultContract\[email protected]\dc.datacontract"; return(fault); }
protected override void DoValidate(IEnumerable <Fault> objectToValidate, object currentTarget, string key, ValidationResults validationResults) { Operation operation = currentTarget as Operation; if (operation == null) { return; } // Validation Application block doesn't recreate validators every time. // Reset fc counter before validating the collection faultContracts.Clear(); foreach (Fault item in objectToValidate) { DataContractFault fault = item as DataContractFault; if (fault == null || fault.Type == null) { continue; } if (!fault.Type.IsValidReference()) { validationResults.AddResult( new ValidationResult( String.Format(CultureInfo.CurrentUICulture, Resources.CannotResolveReference, currentTarget.GetType().Name, fault.Name, fault.Type.GetDisplayName()), fault, key, String.Empty, this)); return; } ModelElement mel = ModelBusReferenceResolver.ResolveAndDispose(fault.Type); if (mel == null) { return; } FaultContract dcFault = mel as FaultContract; if (dcFault == null) { return; } if (faultContracts.Contains(dcFault)) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.MessageTemplate, fault.Name, operation.Name), objectToValidate, key, String.Empty, this) ); } else { faultContracts.Add(dcFault); } } }
public void TestInitialize() { serviceProvider = new MockMappingServiceProvider(); attributes = new NameValueCollection(); attributes.Add("elementNameProperty", "Name"); #region Data Contract dcStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(DataContractDslDomainModel)); dcDomainModel = dcStore.GetDomainModel <DataContractDslDomainModel>(); dcTransaction = dcStore.TransactionManager.BeginTransaction(); dcModel = (DataContractModel)dcDomainModel.CreateElement(new Partition(dcStore), typeof(DataContractModel), null); dcModel.ProjectMappingTable = projectMappingTableName; fc = dcStore.ElementFactory.CreateElement(FaultContract.DomainClassId) as FaultContract; fc.Name = faultContractName; dcModel.Contracts.Add(fc); #endregion #region Service Contract scStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); scDomainModel = scStore.GetDomainModel <ServiceContractDslDomainModel>(); scTransaction = scStore.TransactionManager.BeginTransaction(); scModel = (ServiceContractModel)scDomainModel.CreateElement(new Partition(scStore), typeof(ServiceContractModel), null); scModel.ProjectMappingTable = projectMappingTableName; operation = scStore.ElementFactory.CreateElement(Operation.DomainClassId) as Operation; operation.Name = operationName; //Create the moniker //mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT.GUID]@[PROJECT]\[MODELFILE] string requestMoniker = string.Format(@"mel://{0}\{1}\{2}@{3}\{4}", fc.GetType().Namespace, fc.GetType().Name, fc.Id.ToString(), dataContractModelProjectName, dataContractModelFileName); dcfault = scStore.ElementFactory.CreateElement(DataContractFault.DomainClassId) as DataContractFault; dcfault.Name = dcfaultName; dcfault.Type = new MockModelBusReference(fc); operation.Faults.Add(dcfault); scModel.Operations.Add(operation); #endregion }
public void ValidateWithRequestAndFaultsIsOneWayFails() { Store store = new Store(typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); using (Transaction transaction = store.TransactionManager.BeginTransaction()) { Operation operation = store.ElementFactory.CreateElement(Operation.DomainClassId) as Operation; Message contract = store.ElementFactory.CreateElement(Message.DomainClassId) as Message; DataContractFault fault = store.ElementFactory.CreateElement(DataContractFault.DomainClassId) as DataContractFault; operation.Request = contract; operation.IsOneWay = true; operation.Faults.Add(fault); TestableOperationElementIsOneWayValidator target = new TestableOperationElementIsOneWayValidator(); ValidationResults results = new ValidationResults(); target.TestDoValidate(operation.IsOneWay, operation, "IsOneWay", results); Assert.IsFalse(results.IsValid); transaction.Commit(); } }
public void TestInitialize() { serviceProvider = new MockMappingServiceProvider(); attributes = new NameValueCollection(); attributes.Add("elementNameProperty", "Name"); #region Data Contract dcStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(DataContractDslDomainModel)); dcDomainModel = dcStore.GetDomainModel<DataContractDslDomainModel>(); dcTransaction = dcStore.TransactionManager.BeginTransaction(); dcModel = (DataContractModel)dcDomainModel.CreateElement(new Partition(dcStore), typeof(DataContractModel), null); dcModel.ProjectMappingTable = projectMappingTableName; fc = dcStore.ElementFactory.CreateElement(FaultContract.DomainClassId) as FaultContract; fc.Name = faultContractName; dcModel.Contracts.Add(fc); #endregion #region Service Contract scStore = new Store(serviceProvider, typeof(CoreDesignSurfaceDomainModel), typeof(ServiceContractDslDomainModel)); scDomainModel = scStore.GetDomainModel<ServiceContractDslDomainModel>(); scTransaction = scStore.TransactionManager.BeginTransaction(); scModel = (ServiceContractModel)scDomainModel.CreateElement(new Partition(scStore), typeof(ServiceContractModel), null); scModel.ProjectMappingTable = projectMappingTableName; operation = scStore.ElementFactory.CreateElement(Operation.DomainClassId) as Operation; operation.Name = operationName; //Create the moniker //mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT.GUID]@[PROJECT]\[MODELFILE] string requestMoniker = string.Format(@"mel://{0}\{1}\{2}@{3}\{4}", fc.GetType().Namespace, fc.GetType().Name, fc.Id.ToString(), dataContractModelProjectName, dataContractModelFileName); dcfault = scStore.ElementFactory.CreateElement(DataContractFault.DomainClassId) as DataContractFault; dcfault.Name = dcfaultName; dcfault.Type = new MockModelBusReference(fc); operation.Faults.Add(dcfault); scModel.Operations.Add(operation); #endregion }
private Fault CreateFault(string name) { DataContractFault fault = new DataContractFault(Store); fault.Name = name; //fault.Type = @"mel://Microsoft.Practices.ServiceFactory.DataContracts\FaultContract\[email protected]\dc.datacontract"; return fault; }
protected override void DoValidate(IEnumerable <Fault> objectToValidate, object currentTarget, string key, ValidationResults validationResults) { Operation operation = currentTarget as Operation; if (operation == null) { return; } string serviceContractImplementationTech = String.Empty; if (operation.ServiceContractModel.ImplementationTechnology == null) { return; } else { serviceContractImplementationTech = operation.ServiceContractModel.ImplementationTechnology.Name; } SerializerType serviceContractSerializer = operation.ServiceContractModel.SerializerType; foreach (Fault item in objectToValidate) { bool isValid = true; DataContractFault fault = item as DataContractFault; if (fault == null || fault.Type == null) { continue; } if (!fault.Type.IsValidReference()) { validationResults.AddResult( new ValidationResult( String.Format(CultureInfo.CurrentUICulture, Resources.CannotResolveReference, currentTarget.GetType().Name, fault.Name, fault.Type.GetDisplayName()), fault, key, String.Empty, this)); return; } ModelElement mel = ModelBusReferenceResolver.ResolveAndDispose(fault.Type); if (mel == null) { return; } FaultContract dcFault = mel as FaultContract; if (dcFault == null || dcFault.DataContractModel == null || dcFault.DataContractModel.ImplementationTechnology == null) { return; } if (serviceContractImplementationTech.Equals(ASMXExtension, StringComparison.OrdinalIgnoreCase)) { if (serviceContractSerializer.Equals(SerializerType.XmlSerializer)) { isValid = !(dcFault.DataContractModel.ImplementationTechnology.Name.Equals(WCFExtension, StringComparison.OrdinalIgnoreCase)); } else { // Asmx Extension only supports XmlSerializer validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, asmxExtensionInvalidSerializerMessage, fault.Name, operation.Name), objectToValidate, key, String.Empty, this) ); return; } } else if (serviceContractImplementationTech.Equals(WCFExtension, StringComparison.OrdinalIgnoreCase)) { if (serviceContractSerializer.Equals(SerializerType.DataContractSerializer)) { isValid = !(dcFault.DataContractModel.ImplementationTechnology.Name.Equals(ASMXExtension, StringComparison.OrdinalIgnoreCase)); } else { if (dcFault.DataContractModel.ImplementationTechnology.Name.Equals(ASMXExtension, StringComparison.OrdinalIgnoreCase)) { // Faults cannot be XMLSerializable validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, faultInvalidSerializerMessage, operation.Name, fault.Name), objectToValidate, key, String.Empty, this) ); return; } } } if (!isValid) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.MessageTemplate, fault.Name, operation.Name), objectToValidate, key, String.Empty, this) ); } } }