public void ParseIsSkippedIfModelIsMissing(OrchestrationServiceDeclarationParser parser, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e) { "Given a model" .x(() => { model = new AzureIntegrationServicesModel(); }); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a context" .x(() => context = new MigrationContext()); "And a parser" .x(() => parser = new OrchestrationServiceDeclarationParser(model, context, logger)); "When parsing" .x(() => e = Record.Exception(() => parser.Parse())); "Then the code should not throw an exception" .x(() => e.Should().BeNull()); }
public void ConstructWithSuccess(IBizTalkParser parser, ILogger logger, IApplicationModel model, MigrationContext context, Exception e) { "Given a parser" .x(() => parser.Should().BeNull()); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a model" .x(() => model = new AzureIntegrationServicesModel()); "And a context" .x(() => context = new MigrationContext()); "When constructing" .x(() => e = Record.Exception(() => parser = new OrchestrationServiceDeclarationParser(model, context, logger))); "Then the parser constructor should succeed" .x(() => { e.Should().BeNull(); parser.Should().NotBeNull(); }); }
public void ParsePortTypeWithMissingModule(OrchestrationServiceDeclarationParser parser, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e) { var orchestrationDefinitionName = "orchestrationDefinitionName"; var orchestrationDefinitionKey = "orchestrationDefinitionKey"; var asmContainerKey = "asmContainerKey"; var wrongKey = "wrongKey"; "Given a source model with an orchestration with a missing module" .x(() => { var orchestration = new Orchestration { Name = orchestrationDefinitionName, ResourceContainerKey = asmContainerKey, ResourceDefinitionKey = wrongKey }; var parsedApplication = new ParsedBizTalkApplication { Application = new BizTalkApplication() }; parsedApplication.Application.Orchestrations.Add(orchestration); model = new AzureIntegrationServicesModel(); var group = new ParsedBizTalkApplicationGroup(); model.MigrationSource.MigrationSourceModel = group; group.Applications.Add(parsedApplication); }); "And one orchestration in the source report model" .x(() => { var msiContainer = new ResourceContainer() { Key = "TestMsi.Key", Name = "TestMsi", Type = ModelConstants.ResourceContainerMsi, ContainerLocation = @"C:\Test\Test.msi" }; model.MigrationSource.ResourceContainers.Add(msiContainer); var cabContainer = new ResourceContainer() { Key = "TestCab.Key", Name = "TestCab", Type = ModelConstants.ResourceContainerCab, ContainerLocation = @"C:\Test\Test.CAB" }; msiContainer.ResourceContainers.Add(cabContainer); var asmContainer = new ResourceContainer() { Key = asmContainerKey, Name = "TestAssembly", Type = ModelConstants.ResourceContainerAssembly, ContainerLocation = @"C:\Test\Test.dll" }; cabContainer.ResourceContainers.Add(asmContainer); var orchestrationDefinition = new ResourceDefinition() { Key = orchestrationDefinitionKey, Name = orchestrationDefinitionName, Type = ModelConstants.ResourceDefinitionOrchestration }; asmContainer.ResourceDefinitions.Add(orchestrationDefinition); }); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a context" .x(() => context = new MigrationContext()); "And a parser" .x(() => parser = new OrchestrationServiceDeclarationParser(model, context, logger)); "When parsing" .x(() => e = Record.Exception(() => parser.Parse())); "Then the code should not throw an exception" .x(() => e.Should().BeNull()); "And there should be an error logged" .x(() => { context.Errors.Should().NotBeNull(); context.Errors.Should().HaveCount(1); context.Errors[0].Message.Should().Contain(wrongKey); context.Errors[0].Message.Should().Contain(ModelConstants.ResourceModule); }); }
public void ParseServiceDeclarationWithAPortDeclarationSuccess(OrchestrationServiceDeclarationParser parser, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e) { var orchestrationDefinitionName = "orchestrationDefinitionName"; var orchestrationDefinitionKey = "orchestrationDefinitionKey"; var serviceDeclarationName = "serviceDeclarationName"; var portDeclarationName = "portDeclarationName"; var asmContainerKey = "asmContainerKey"; "Given a source model with an orchestration and a service declaration, with a port declaration" .x(() => { var odxModel = new MetaModel { Element = new Element[] { new Element { Type = "Module", Element1 = new Element[] { new Element { Type = "ServiceDeclaration", Property = new ElementProperty[] { new ElementProperty { Name = "Name", Value = serviceDeclarationName } }, Element1 = new Element[] { new Element { Type = "PortDeclaration", Property = new ElementProperty[] { new ElementProperty { Name = "Name", Value = portDeclarationName } } } } } } } } }; var orchestration = new Orchestration { Name = orchestrationDefinitionName, ResourceContainerKey = asmContainerKey, ResourceDefinitionKey = orchestrationDefinitionKey, Model = odxModel }; var parsedApplication = new ParsedBizTalkApplication { Application = new BizTalkApplication() }; parsedApplication.Application.Orchestrations.Add(orchestration); model = new AzureIntegrationServicesModel(); var group = new ParsedBizTalkApplicationGroup(); model.MigrationSource.MigrationSourceModel = group; group.Applications.Add(parsedApplication); parsedApplication.Application.ApplicationDefinition = new ApplicationDefinitionFile { ResourceKey = "ResourceKey" }; var container = new ResourceContainer(); container.ResourceDefinitions.Add(new ResourceDefinition()); container.ResourceDefinitions[0].Resources.Add(new ResourceItem { Key = "ResourceKey" }); model.MigrationSource.ResourceContainers.Add(container); }); "And one orchestration in the source report model" .x(() => { var msiContainer = new ResourceContainer() { Key = "TestMsi.Key", Name = "TestMsi", Type = ModelConstants.ResourceContainerMsi, ContainerLocation = @"C:\Test\Test.msi" }; model.MigrationSource.ResourceContainers.Add(msiContainer); var cabContainer = new ResourceContainer() { Key = "TestCab.Key", Name = "TestCab", Type = ModelConstants.ResourceContainerCab, ContainerLocation = @"C:\Test\Test.CAB" }; msiContainer.ResourceContainers.Add(cabContainer); var asmContainer = new ResourceContainer() { Key = asmContainerKey, Name = "TestAssembly", Type = ModelConstants.ResourceContainerAssembly, ContainerLocation = @"C:\Test\Test.dll" }; cabContainer.ResourceContainers.Add(asmContainer); var orchestrationDefinition = new ResourceDefinition() { Key = orchestrationDefinitionKey, Name = orchestrationDefinitionName, Type = ModelConstants.ResourceDefinitionOrchestration }; asmContainer.ResourceDefinitions.Add(orchestrationDefinition); var metaModel = ((ParsedBizTalkApplicationGroup)model.MigrationSource.MigrationSourceModel).Applications[0].Application.Orchestrations[0].Model; var metaModelResource = new ResourceItem() { Key = string.Concat(orchestrationDefinitionKey, ":", MetaModelConstants.MetaModelRootElement), Name = MetaModelConstants.MetaModelRootElement, Type = ModelConstants.ResourceMetaModel }; metaModel.Resource = metaModelResource; metaModelResource.SourceObject = metaModel; orchestrationDefinition.Resources.Add(metaModelResource); var moduleResource = new ResourceItem() { Key = string.Concat(metaModelResource.Key, ":", MetaModelConstants.ElementTypeModule), Name = MetaModelConstants.ElementTypeModule, Type = ModelConstants.ResourceModule }; metaModelResource.Resources.Add(moduleResource); }); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a context" .x(() => context = new MigrationContext()); "And a parser" .x(() => parser = new OrchestrationServiceDeclarationParser(model, context, logger)); "When parsing" .x(() => e = Record.Exception(() => parser.Parse())); "Then the code should not throw an exception" .x(() => e.Should().BeNull()); "And there should be no errors logged" .x(() => context.Errors.Should().BeNullOrEmpty()); "And the resources should be set." .x(() => { // Check the service declaration resource has been created. var moduleResource = model.FindResourcesByType(ModelConstants.ResourceModule).SingleOrDefault(); moduleResource.Should().NotBeNull(); var serviceDeclarationResource = model.FindResourcesByType(ModelConstants.ResourceServiceDeclaration).SingleOrDefault(); serviceDeclarationResource.Should().NotBeNull(); var serviceDeclaration = ((ParsedBizTalkApplicationGroup)model.MigrationSource.MigrationSourceModel).Applications[0].Application.Orchestrations[0].FindServiceDeclaration(); // Validate the service declaration resource. serviceDeclarationResource.Should().NotBeNull(); serviceDeclarationResource.Key.Should().Be(string.Concat(moduleResource.Key, ":", serviceDeclarationName)); serviceDeclarationResource.Name.Should().Be(serviceDeclarationName); serviceDeclarationResource.Type.Should().Be(ModelConstants.ResourceServiceDeclaration); // Validate the port declaration resource. var portDeclarationNameResource = serviceDeclarationResource.Resources[0]; portDeclarationNameResource.Name.Should().Be(portDeclarationName); portDeclarationNameResource.Type.Should().Be(ModelConstants.ResourcePortDeclaration); portDeclarationNameResource.Key.Should().StartWith(serviceDeclarationResource.Key); }); }