public void GeneratesContent() { var metaData = new Dictionary <string, string>(); var networkData = new NetworkData(new Dictionary <string, object>()); var userData = new List <UserData> { new(UserDataContentType.CloudConfig, "", Encoding.UTF8), new(UserDataContentType.CloudConfig, "", Encoding.UTF8) }; var options = new GenerateConfigDriveOptions(); var dsMock = new Mock <IConfigDriveDataSource>(); dsMock.Setup(x => x.GenerateConfigDriveContent(It.IsAny <IDictionary <string, string> >(), networkData, It.Is <IEnumerable <UserData> >(x => x.SequenceEqual(userData)), options)).Verifiable(); var configDrive = new Dbosoft.CloudInit.ConfigDrive.ConfigDrive(dsMock.Object); configDrive.AddMetaData(metaData); configDrive.SetNetworkData(networkData); foreach (var data in userData) { configDrive.AddUserData(data); } configDrive.GenerateContent(options); dsMock.Verify(); }
public async Task GeneratesValidContent() { var networkData = new NetworkData(new Dictionary <string, object>()); var metaData = new Dictionary <string, string> { { "key1", "value1" } }; var userData = new[] { new UserData(UserDataContentType.CloudConfig, "aaa", Encoding.UTF8) }; var options = new GenerateConfigDriveOptions(); await using var mockStreamMetaData = new MemoryStream(); await using var mockStreamNetworkData = new MemoryStream(); await using var mockStreamUserData = new MemoryStream(); var yamlSerializerMock = new Mock <IYamlSerializer>(); yamlSerializerMock.Setup(x => x.SerializeToYaml(networkData)).ReturnsAsync(mockStreamNetworkData); yamlSerializerMock.Setup(x => x.SerializeToYaml( It.IsAny <Dictionary <string, string> >())).ReturnsAsync(mockStreamMetaData); var userDataSerializerMock = new Mock <IUserDataSerializer>(); userDataSerializerMock.Setup(x => x.SerializeUserData(userData, options.UserData)) .ReturnsAsync(mockStreamUserData); var ds = new NoCloudDataSource(new NoCloudConfigDriveMetaData { HostName = "unit", InstanceId = "test" }, yamlSerializerMock.Object, userDataSerializerMock.Object); var content = await ds.GenerateConfigDriveContent(metaData, networkData, userData, options); Assert.Equal("cidata", content.MediaName); Assert.Equal(3, content.Files.Count); Assert.Equal("meta-data", content.Files[0].Path); Assert.Equal(mockStreamMetaData, content.Files[0].Content); Assert.Equal("network-config", content.Files[1].Path); Assert.Equal(mockStreamNetworkData, content.Files[1].Content); Assert.Equal("user-data", content.Files[2].Path); Assert.Equal(mockStreamUserData, content.Files[2].Content); }