public async void PostStarterZipValidationTest()
        {
            var model = new GeneratorModel()
            {
                Dependencies           = "Actuator,MySql",
                Description            = "TestDescription",
                ProjectName            = "123.TestProject",
                SteeltoeVersion        = "2.2.0",
                TargetFrameworkVersion = "netcoreapp2.2",
                TemplateShortName      = "Steeltoe-WebApi",
                TemplateVersion        = TemplateVersion.V2,
            };

            var props = model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            var kvps  = props.Select(prop => new KeyValuePair <string, string>(prop.Name, prop.GetValue(model).ToString())).ToArray();

            var formContent = new FormUrlEncodedContent(kvps);

            var result = await _client.PostAsync("https://localhost/starter.zip", formContent);

            Assert.Equal(HttpStatusCode.BadRequest, result.StatusCode);

            var responseString = await result.Content.ReadAsStringAsync();

            Assert.Contains(@"""ProjectName"":[""ProjectName must be a valid C# Identifier""]", responseString);
        }
        public async void PostStarterZipTest()
        {
            var model = new GeneratorModel()
            {
                Dependencies           = "Actuator,MySql",
                Description            = "TestDescription",
                ProjectName            = "TestCompany.TestProject",
                SteeltoeVersion        = "2.2.0",
                TargetFrameworkVersion = "netcoreapp2.2",
                TemplateShortName      = "Steeltoe-WebApi",
                TemplateVersion        = TemplateVersion.V2,
            };

            var props = model.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            var kvps  = props.Select(prop => new KeyValuePair <string, string>(prop.Name, prop.GetValue(model).ToString())).ToArray();

            var formContent = new FormUrlEncodedContent(kvps);

            var result = await _client.PostAsync("https://localhost/starter.zip", formContent);

            Assert.Equal(HttpStatusCode.OK, result.StatusCode);

            Dictionary <string, string> files = new Dictionary <string, string>();

            using (var stream = await result.Content.ReadAsStreamAsync())
            {
                using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read))
                {
                    foreach (var entry in archive.Entries)
                    {
                        var fileStream = entry.Open();
                        files.Add(entry.Name, new StreamReader(fileStream).ReadToEnd());
                    }
                }
            }

            Assert.True(files.Count > 0);
            Assert.Contains("Program.cs", files.Keys);
            Assert.Contains("TestCompany.TestProject", files["Program.cs"]);
        }