public void TraverseNodeTypesByRequirements_Should_Throw_Exception_When_NodeType_ToStart_NotFound() { // Arrange var serviceTemplate = new ToscaServiceTemplate { ToscaDefinitionsVersion = "tosca_simple_yaml_1_0" }; serviceTemplate.NodeTypes.Add("tosca.nodes.device", new ToscaNodeType()); var cloudServiceArchive = new ToscaCloudServiceArchive(new ToscaMetadata { CsarVersion = new Version(1, 1), EntryDefinitions = "not_existing.yaml", ToscaMetaFileVersion = new Version(1, 1), CreatedBy = "Anonymous" }); cloudServiceArchive.AddToscaServiceTemplate("sample.yaml", serviceTemplate); // Act Action action = () => cloudServiceArchive.TraverseNodeTypesByRequirements("NOT_EXISTING", (nodeTypeName, nodeType) => { }); // Assert action.ShouldThrow <ToscaNodeTypeNotFoundException>().WithMessage("Node type 'NOT_EXISTING' not found"); }
TraverseNodeTypesByRequirements_Traverses_Nodes_From_Specific_Node_Type_By_Requirements_Of_Its_Base_Node_Type () { // Arrange var serviceTemplate = new ToscaServiceTemplate { ToscaDefinitionsVersion = "tosca_simple_yaml_1_0" }; var deviceNodeType = new ToscaNodeType(); deviceNodeType.AddRequirement("power", new ToscaRequirement { Node = "tosca.nodes.port", Capability = "port" }); var switchNodeType = new ToscaNodeType { DerivedFrom = "tosca.nodes.device" }; serviceTemplate.NodeTypes.Add("tosca.nodes.port", new ToscaNodeType()); serviceTemplate.NodeTypes.Add("tosca.nodes.device", deviceNodeType); serviceTemplate.NodeTypes.Add("tosca.nodes.switch", switchNodeType); var cloudServiceArchive = new ToscaCloudServiceArchive(new ToscaMetadata { CsarVersion = new Version(1, 1), EntryDefinitions = "sample.yaml", ToscaMetaFileVersion = new Version(1, 1), CreatedBy = "Anonymous" }); cloudServiceArchive.AddToscaServiceTemplate("sample.yaml", serviceTemplate); List <ValidationResult> validationResults; cloudServiceArchive.TryValidate(out validationResults) .Should().BeTrue(string.Join(Environment.NewLine, validationResults.Select(a => a.ErrorMessage))); // Act var discoveredNodeTypeNames = new List <string>(); cloudServiceArchive.TraverseNodeTypesByRequirements("tosca.nodes.switch", (nodeTypeName, nodeType) => { discoveredNodeTypeNames.Add(nodeTypeName); }); // Assert discoveredNodeTypeNames.ShouldBeEquivalentTo(new[] { "tosca.nodes.port", "tosca.nodes.switch" }); }
public void TraverseNodeTypesByRequirements_Should_Not_Throw_Exception_When_Node_Is_Null() { // Arrange var switchNodeType = new ToscaNodeType(); switchNodeType.AddRequirement("internet", new ToscaRequirement { Capability = "wi-fi" }); var nxosNodeType = new ToscaNodeType { DerivedFrom = "cloudshell.nodes.Switch" }; nxosNodeType.AddRequirement("storage", new ToscaRequirement { Capability = "ssd" }); var serviceTemplate = new ToscaServiceTemplate { ToscaDefinitionsVersion = "tosca_simple_yaml_1_0" }; serviceTemplate.NodeTypes.Add("cloudshell.nodes.Switch", switchNodeType); serviceTemplate.NodeTypes.Add("vendor.switch.NXOS", nxosNodeType); var cloudServiceArchive = new ToscaCloudServiceArchive(new ToscaMetadata { CreatedBy = "Anonymous", CsarVersion = new Version(1, 1), EntryDefinitions = "tosca.yaml", ToscaMetaFileVersion = new Version(1, 1) }); cloudServiceArchive.AddToscaServiceTemplate("tosca.yaml", serviceTemplate); // Act Action action = () => cloudServiceArchive.TraverseNodeTypesByRequirements("vendor.switch.NXOS", (a, b) => {}); // Assert action.ShouldNotThrow <Exception>(); }