コード例 #1
0
        public async Task SettingOverriddenByEnvironmentIsntRequired()
        {
            using var data = CreateTestData();

            using var manifest     = new TemporaryFile();
            using var baseSettings = new TemporaryFile();
            using var envSettings  = new TemporaryFile();

            var vaultName = "somevault";
            var sub       = Guid.Empty.ToString("D");

            await manifest.WriteAllTextAsync($@"
storageLocation:
  type: azure-key-vault
  parameters:
    name: {vaultName}
    subscription: {sub}
secrets:
  one:
    type: type
    parameters:
      p: 1
");

            await envSettings.WriteAllTextAsync($@"
{{
  ""KeyVaultUri"": ""https://{vaultName}.vault.azure.net"",
  ""second"": ""Specific value""
}}
");

            await baseSettings.WriteAllTextAsync($@"
{{
  ""first"": ""[vault(one)]"",
  ""second"": ""[vault(two)]""
}}
");

            (await data.Validator.Invoking(v => v.ValidateFileAsync(envSettings.FilePath, baseSettings.FilePath, manifest.FilePath, CancellationToken.None))
             .Should()
             .CompleteWithinAsync(new TimeSpan(0, 0, 5)))
            .Subject.Should().BeTrue();
            data.Console.Errors.Should().BeEmpty();
        }
コード例 #2
0
        public async Task MissingSettingFails()
        {
            using var data = CreateTestData();

            using var manifest     = new TemporaryFile();
            using var baseSettings = new TemporaryFile();
            using var envSettings  = new TemporaryFile();

            var vaultName = "somevault";
            var sub       = Guid.Empty.ToString("D");

            await manifest.WriteAllTextAsync($@"
storageLocation:
  type: azure-key-vault
  parameters:
    name: {vaultName}
    subscription: {sub}
secrets:
  one:
    type: type
    parameters:
      p: 1
");

            await envSettings.WriteAllTextAsync($@"
{{
  ""KeyVaultUri"": ""https://{vaultName}.vault.azure.net""
}}
");

            await baseSettings.WriteAllTextAsync($@"
{{
  ""first"": ""[vault(one)]"",
  ""second"": ""[vault(two)]""
}}
");

            (await data.Validator.Invoking(v => v.ValidateFileAsync(envSettings.FilePath, baseSettings.FilePath, manifest.FilePath, CancellationToken.None))
             .Should()
             .CompleteWithinAsync(new TimeSpan(0, 0, 5)))
            .Subject.Should().BeFalse();
            data.Console.Errors.Should().HaveCountGreaterOrEqualTo(1).And.Subject.First().message.Should().Contain("Secret 'two' does not exist in manifest file.");
        }