public void GetUpdatedParametersFileContents_WithBicepDeploymentParameterThatIsAlreadyInParametersFile_DoesNothing()
        {
            var testOutputPath                   = Path.Combine(TestContext.ResultsDirectory, Guid.NewGuid().ToString());
            var bicepFilePath                    = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty, testOutputPath);
            var parametersFileContents           = @"{
  ""location"": {
    ""value"": ""eastus""
  },
  ""sku"": {
    ""value"": ""testSku""
  }
}";
            var parametersFilePath               = FileHelper.SaveResultFile(TestContext, "input.parameters.json", parametersFileContents, testOutputPath);
            var bicepUpdatedDeploymentParameter  = new BicepUpdatedDeploymentParameter("location", "westus", false, ParameterType.String);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter
            };

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "input.parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.Update,
                bicepUpdatedDeploymentParameters);

            result.Should().BeEquivalentToIgnoringNewlines(parametersFileContents);
        }
        public void GetUpdatedParametersFileContents_WithInvalidParametersFile_ShouldThrowException()
        {
            var testOutputPath                   = Path.Combine(TestContext.ResultsDirectory, Guid.NewGuid().ToString());
            var bicepFilePath                    = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty, testOutputPath);
            var parametersFileContents           = @"{
  ""location"": {
    ""value"": ""eastus""
  },
  ""sku"": {
    ""value"": ""testSku""";
            var parametersFilePath               = FileHelper.SaveResultFile(TestContext, "input.parameters.json", parametersFileContents, testOutputPath);
            var bicepUpdatedDeploymentParameter1 = new BicepUpdatedDeploymentParameter("name", "test", false, ParameterType.String);
            var bicepUpdatedDeploymentParameter2 = new BicepUpdatedDeploymentParameter("id", "testId", false, ParameterType.String);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter1, bicepUpdatedDeploymentParameter2
            };

            Action action = () => DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "input.parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.Update,
                bicepUpdatedDeploymentParameters);

            action.Should().Throw <Exception>();
        }
        public void UpdateJObjectBasedOnParameterType_WithValidInputOfTypeString_ReturnsUpdatedJObject()
        {
            var result = DeploymentParametersHelper.UpdateJObjectBasedOnParameterType(ParameterType.String, "test", JObject.Parse("{}"));

            result.ToString().Should().BeEquivalentToIgnoringNewlines(@"{
  ""value"": ""test""
}");
        }
        public void GetUpdatedParametersFileContents_WithOverwriteOptionAndParametersFileWithSameNameInCurrentDirectory_ShouldOverwriteParametersFile()
        {
            var testOutputPath         = Path.Combine(TestContext.ResultsDirectory, Guid.NewGuid().ToString());
            var bicepFilePath          = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty, testOutputPath);
            var parametersFileContents = @"{
  ""$schema"": ""https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#"",
  ""contentVersion"": ""1.0.0.0"",
  ""parameters"": {
    ""location"": {
      ""value"": ""eastus""
    }
  }
}";

            FileHelper.SaveResultFile(TestContext, "input.parameters.json", parametersFileContents, testOutputPath);
            var bicepUpdatedDeploymentParameter1 = new BicepUpdatedDeploymentParameter("location", "westus", false, ParameterType.String);
            var bicepUpdatedDeploymentParameter2 = new BicepUpdatedDeploymentParameter("sku", "testSku", false, ParameterType.String);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter1, bicepUpdatedDeploymentParameter2
            };

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "input.parameters.json",
                string.Empty,
                ParametersFileUpdateOption.Create,
                bicepUpdatedDeploymentParameters);
            var expectedParametersFileContentsWrittenToDisk    = @"{
  ""$schema"": ""https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#"",
  ""contentVersion"": ""1.0.0.0"",
  ""parameters"": {
    ""location"": {
      ""value"": ""westus""
    },
    ""sku"": {
      ""value"": ""testSku""
    }
  }
}";
            var expectedParametersFileContentsUsedInDeployment = @"{
  ""location"": {
    ""value"": ""westus""
  },
  ""sku"": {
    ""value"": ""testSku""
  }
}";


            result.Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContentsUsedInDeployment);

            var expectedParametersFilePath = Path.Combine(testOutputPath, "input.parameters.json");

            File.Exists(expectedParametersFilePath).Should().BeTrue();
            File.ReadAllText(expectedParametersFilePath).Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContentsWrittenToDisk);
        }
        public void GetUpdatedParametersFileContents_WithNonEmptyBicepUpdatedDeploymentParametersAndParametersFile_ShouldUpdateParametersFile()
        {
            var testOutputPath                   = Path.Combine(TestContext.ResultsDirectory, Guid.NewGuid().ToString());
            var bicepFilePath                    = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty, testOutputPath);
            var parametersFileContents           = @"{
  ""location"": {
    ""value"": ""eastus""
  },
  ""sku"": {
    ""value"": ""testSku""
  }
}";
            var parametersFilePath               = FileHelper.SaveResultFile(TestContext, "input.parameters.json", parametersFileContents, testOutputPath);
            var bicepUpdatedDeploymentParameter1 = new BicepUpdatedDeploymentParameter("name", "test", false, ParameterType.String);
            var bicepUpdatedDeploymentParameter2 = new BicepUpdatedDeploymentParameter("id", "testId", false, ParameterType.String);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter1, bicepUpdatedDeploymentParameter2
            };

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "input.parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.Update,
                bicepUpdatedDeploymentParameters);
            var expectedParametersFileContents = @"{
  ""name"": {
    ""value"": ""test""
  },
  ""id"": {
    ""value"": ""testId""
  },
  ""location"": {
    ""value"": ""eastus""
  },
  ""sku"": {
    ""value"": ""testSku""
  }
}";

            result.Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContents);
            File.ReadAllText(parametersFilePath).Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContents);
        }
        public void GetUpdatedParametersFileContents_WithEmptyBicepUpdatedDeploymentParameters_ShouldReturnParametersFileContentsAsIs()
        {
            var parametersFileContents = @"{
  ""location"": {
    ""value"": ""westus""
  }
}";
            var bicepFilePath          = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty);
            var parametersFilePath     = FileHelper.SaveResultFile(TestContext, "parameters.json", parametersFileContents);

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.None,
                new List <BicepUpdatedDeploymentParameter>());

            result.Should().BeEquivalentToIgnoringNewlines(parametersFileContents);
        }
        public void GetUpdatedParametersFileContents_WithParametersOfTypeIntAndBool_ShouldDoAppropriateConversionAndUpdateParametersFile()
        {
            var testOutputPath                   = Path.Combine(TestContext.ResultsDirectory, Guid.NewGuid().ToString());
            var bicepFilePath                    = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty, testOutputPath);
            var parametersFileContents           = @"{
  ""location"": {
    ""value"": ""eastus""
  }
}";
            var parametersFilePath               = FileHelper.SaveResultFile(TestContext, "input.parameters.json", parametersFileContents, testOutputPath);
            var bicepUpdatedDeploymentParameter1 = new BicepUpdatedDeploymentParameter("id", "test", false, ParameterType.String);
            var bicepUpdatedDeploymentParameter2 = new BicepUpdatedDeploymentParameter("isSku", "false", false, ParameterType.Bool);
            var bicepUpdatedDeploymentParameter3 = new BicepUpdatedDeploymentParameter("count", "2", false, ParameterType.Int);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter1, bicepUpdatedDeploymentParameter2, bicepUpdatedDeploymentParameter3
            };

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "input.parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.Update,
                bicepUpdatedDeploymentParameters);
            var expectedParametersFileContents = @"{
  ""id"": {
    ""value"": ""test""
  },
  ""isSku"": {
    ""value"": false
  },
  ""count"": {
    ""value"": 2
  },
  ""location"": {
    ""value"": ""eastus""
  }
}";

            result.Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContents);
            File.ReadAllText(parametersFilePath).Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContents);
        }
        public void GetUpdatedParametersFileContents_WithNonEmptyBicepUpdatedDeploymentParameters_ShouldReturnUpdatedParametersFileContents()
        {
            var parametersFileContents           = @"{
  ""location"": {
    ""value"": ""westus""
  },
  ""name"": {
    ""value"": ""test""
  }
}";
            var bicepFilePath                    = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty);
            var parametersFilePath               = FileHelper.SaveResultFile(TestContext, "parameters.json", parametersFileContents);
            var bicepUpdatedDeploymentParameter1 = new BicepUpdatedDeploymentParameter("location", "eastus", false, ParameterType.String);
            var bicepUpdatedDeploymentParameter2 = new BicepUpdatedDeploymentParameter("sku", "testSku", false, ParameterType.String);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter1, bicepUpdatedDeploymentParameter2
            };

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.None,
                bicepUpdatedDeploymentParameters);
            var expected = @"{
  ""sku"": {
    ""value"": ""testSku""
  },
  ""location"": {
    ""value"": ""westus""
  },
  ""name"": {
    ""value"": ""test""
  }
}";

            result.Should().BeEquivalentToIgnoringNewlines(expected);
        }
        public void UpdateJObjectBasedOnParameterType_WithInvalidInput_ThrowsException()
        {
            Action action = () => DeploymentParametersHelper.UpdateJObjectBasedOnParameterType(ParameterType.Int, "test", JObject.Parse("{}"));

            action.Should().Throw <Exception>();
        }
Exemplo n.º 10
0
        public void GetUpdatedParametersFileContents_WithArmTemplateStyleParametersFile_ShouldUpdateParametersFile()
        {
            var testOutputPath                   = Path.Combine(TestContext.ResultsDirectory, Guid.NewGuid().ToString());
            var bicepFilePath                    = FileHelper.SaveResultFile(TestContext, "input.bicep", string.Empty, testOutputPath);
            var parametersFileContents           = @"{
  ""$schema"": ""https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#"",
  ""contentVersion"": ""1.0.0.0"",
  ""parameters"": {
    ""location"": {
      ""value"": ""eastus""
    }
  }
}";
            var parametersFilePath               = FileHelper.SaveResultFile(TestContext, "input.parameters.json", parametersFileContents, testOutputPath);
            var bicepUpdatedDeploymentParameter1 = new BicepUpdatedDeploymentParameter("name", "test", false, ParameterType.String);
            var bicepUpdatedDeploymentParameter2 = new BicepUpdatedDeploymentParameter("isSku", "true", false, ParameterType.Bool);
            var bicepUpdatedDeploymentParameter3 = new BicepUpdatedDeploymentParameter("count", "3", false, ParameterType.Int);
            var bicepUpdatedDeploymentParameters =
                new List <BicepUpdatedDeploymentParameter> {
                bicepUpdatedDeploymentParameter1, bicepUpdatedDeploymentParameter2, bicepUpdatedDeploymentParameter3
            };

            var result = DeploymentParametersHelper.GetUpdatedParametersFileContents(
                bicepFilePath,
                "input.parameters.json",
                parametersFilePath,
                ParametersFileUpdateOption.Update,
                bicepUpdatedDeploymentParameters);
            var expectedParametersFileContentsWrittenToDisk = @"{
  ""$schema"": ""https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#"",
  ""contentVersion"": ""1.0.0.0"",
  ""parameters"": {
    ""name"": {
      ""value"": ""test""
    },
    ""isSku"": {
      ""value"": true
    },
    ""count"": {
      ""value"": 3
    },
    ""location"": {
      ""value"": ""eastus""
    }
  }
}";
            var expectedParametersFileUsedInDeployment      = @"{
  ""name"": {
    ""value"": ""test""
  },
  ""isSku"": {
    ""value"": true
  },
  ""count"": {
    ""value"": 3
  },
  ""location"": {
    ""value"": ""eastus""
  }
}";

            result.Should().BeEquivalentToIgnoringNewlines(expectedParametersFileUsedInDeployment);
            File.ReadAllText(parametersFilePath).Should().BeEquivalentToIgnoringNewlines(expectedParametersFileContentsWrittenToDisk);
        }