public void It_Should_Be_Possible_To_Save_And_Load_Cloud_Service_Archive() { var toscaMetadata = new ToscaMetadata { CreatedBy = "Anonymous", CsarVersion = new Version(1, 1), EntryDefinitions = "tosca.yaml", ToscaMetaFileVersion = new Version(1, 0) }; var cloudServiceArchive = new ToscaCloudServiceArchive(toscaMetadata); cloudServiceArchive.AddToscaServiceTemplate("tosca.yaml", new ToscaServiceTemplate { ToscaDefinitionsVersion = "tosca_simple_yaml_1_0" }); List <ValidationResult> results; cloudServiceArchive.TryValidate(out results) .Should() .BeTrue(string.Join(Environment.NewLine, results.Select(r => r.ErrorMessage))); using (var memoryStream = new MemoryStream()) { cloudServiceArchive.Save(memoryStream); var serviceArchive = ToscaCloudServiceArchive.Load(memoryStream); // Assert serviceArchive.CreatedBy.Should().Be("Anonymous"); } }
public void Validation_Should_Not_Pass_When_Archive_With_Cyclic_Reference_Between_Requirements_Is_Loaded() { // Arrange var portNodeType = new ToscaNodeType(); portNodeType.AddRequirement("internet", new ToscaRequirement { Capability = "tosca.capabilities.Attachment", Node = "vendor.devices.Switch" }); var switchNodetype = new ToscaNodeType(); switchNodetype.AddRequirement("port", new ToscaRequirement { Capability = "tosca.capabilities.Attachment", Node = "vendor.parts.Port" }); var serviceTemplate = new ToscaServiceTemplate { ToscaDefinitionsVersion = "tosca_simple_yaml_1_0" }; serviceTemplate.NodeTypes.Add("vendor.parts.Port", portNodeType); serviceTemplate.NodeTypes.Add("vendor.devices.Switch", switchNodetype); var cloudServiceArchive = new ToscaCloudServiceArchive(new ToscaMetadata { CreatedBy = "Anonymous", CsarVersion = new Version(1, 2, 3), EntryDefinitions = "tosca.yaml", ToscaMetaFileVersion = new Version(1, 1) }); cloudServiceArchive.AddToscaServiceTemplate("tosca.yaml", serviceTemplate); byte[] buffer; using (var memoryStream = new MemoryStream()) { cloudServiceArchive.Save(memoryStream); memoryStream.Flush(); buffer = memoryStream.GetBuffer(); } // Act Action action = () => ToscaCloudServiceArchive.Load(new MemoryStream(buffer)); // Assert action.ShouldThrow <ToscaValidationException>().WithMessage("Circular dependency detected by requirements on node type"); }
public void It_Should_Be_Possible_To_Save_And_Load_Cloud_Service_Archive_With_Artifacts() { var toscaMetadata = new ToscaMetadata { CreatedBy = "Anonymous", CsarVersion = new Version(1, 1), EntryDefinitions = "tosca.yaml", ToscaMetaFileVersion = new Version(1, 0) }; var cloudServiceArchive = new ToscaCloudServiceArchive(toscaMetadata); cloudServiceArchive.AddArtifact("readme.txt", "readme content".ToByteArray(Encoding.ASCII)); var serviceTemplate = new ToscaServiceTemplate { ToscaDefinitionsVersion = "tosca_simple_yaml_1_0" }; var nodeType = new ToscaNodeType(); nodeType.Artifacts.Add("readme", new ToscaArtifact { Type = "tosca.artifacts.File", File = "readme.txt" }); serviceTemplate.NodeTypes.Add("some_node", nodeType); cloudServiceArchive.AddToscaServiceTemplate("tosca.yaml", serviceTemplate); List <ValidationResult> results; cloudServiceArchive.TryValidate(out results) .Should() .BeTrue(string.Join(Environment.NewLine, results.Select(r => r.ErrorMessage))); using (var memoryStream = new MemoryStream()) { cloudServiceArchive.Save(memoryStream); var serviceArchive = ToscaCloudServiceArchive.Load(memoryStream); // Assert serviceArchive.CreatedBy.Should().Be("Anonymous"); serviceArchive.GetArtifactBytes("readme.txt") .Should() .BeEquivalentTo("readme content".ToByteArray(Encoding.ASCII)); } }