Example #1
0
        public TestRunner(string connectionString, KeyVaultConfiguration keyVaultConfig)
        {
            KeyVaultConfig = keyVaultConfig ?? throw new ArgumentNullException(nameof(keyVaultConfig));

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentException("Value cannot be null or empty", nameof(connectionString));
            }

            ConnectionString = new AzureSqlConnectionStringBuilder(connectionString);
            SecretInjector   = new SecretInjector(new KeyVaultReader(KeyVaultConfig));
        }
Example #2
0
        protected override bool TryGetValue(
            AzureSqlConnectionStringBuilder connectionString,
            out AccessTokenCacheValue accessToken)
        {
            var result = InitialValue;

            if (result != null)
            {
                InitialValue = null;
                accessToken  = result;
                return(true);
            }

            return(base.TryGetValue(connectionString, out accessToken));
        }
        public void PreservesSqlSettings()
        {
            // Arrange
            var sqlConnectionString = "Data Source=tcp:noop.database.windows.net;Initial Catalog=noop;" +
                                      "Integrated Security=False;User ID=SqlUser;Password=SqlPassword;Connect Timeout=30;Encrypt=True";

            // Act
            var builder    = new AzureSqlConnectionStringBuilder(sqlConnectionString);
            var sqlBuilder = new SqlConnectionStringBuilder(sqlConnectionString);

            // Assert
            Assert.Equal(sqlBuilder.ConnectionString, builder.ConnectionString, ignoreCase: true);
            Assert.True(string.IsNullOrEmpty(builder.AadAuthority));

            Assert.Equal(builder["Data Source"], sqlBuilder.DataSource);
            Assert.Equal(builder["Initial Catalog"], sqlBuilder.InitialCatalog);
            Assert.Equal(builder["User ID"], sqlBuilder.UserID);
            Assert.Equal(builder["Password"], sqlBuilder.Password);
        }
        public void ExtractsAadSettingsFromConnectionString()
        {
            // Arrange
            var sqlConnectionString = "Data Source=tcp:noop.database.windows.net;Initial Catalog=noop;" +
                                      "Persist Security Info=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False";
            var aadConnectionString = $"{sqlConnectionString};AadTenant={AadTenant};AadClientId={AadClientId};AadCertificate={AadCertificate}";

            // Act
            var builder    = new AzureSqlConnectionStringBuilder(aadConnectionString);
            var sqlBuilder = new SqlConnectionStringBuilder(sqlConnectionString);

            // Assert
            Assert.Equal(sqlBuilder.ConnectionString, builder.ConnectionString, ignoreCase: true);
            Assert.NotEmpty(builder.AadAuthority);

            Assert.Equal(AadTenant, builder.AadTenant);
            Assert.Equal(AadClientId, builder.AadClientId);
            Assert.Equal(AadCertificate, builder.AadCertificate);
            Assert.True(builder.AadSendX5c);
        }
Example #5
0
        protected override Task <AccessTokenCacheValue> AcquireAccessTokenAsync(
            AzureSqlConnectionStringBuilder connectionString,
            string clientCertificateData)
        {
            try
            {
                if (ThrowOnAcquireToken)
                {
                    throw new InvalidOperationException("Could not acquire token");
                }

                if (MockValues.Length == 0)
                {
                    return(Task.FromResult(new AccessTokenCacheValue(clientCertificateData, DefaultAccessToken)));
                }

                var tokenIndex = Math.Max(AcquireTokenCount, MockValues.Length - 1);
                return(Task.FromResult(MockValues[tokenIndex]));
            }
            finally
            {
                AcquireTokenCount++;
            }
        }
Example #6
0
        public void Execute(CommandLineApplication command)
        {
            //public async System.Threading.Tasks.Task GetFileContent(string path, string container,string localFolder)
            command.Description = "Get connection string from terraform config";
            command.HelpOption("-?|-h|--help");

            var tfstate = command.Option("-t|--tfstate", "Teraform state file", CommandOptionType.SingleValue);
            var res     = command.Option("-k|--resourcekey", "Teraform resource key file", CommandOptionType.SingleValue);
            var file    = command.Option("-s|--save", "Save as file", CommandOptionType.SingleValue);

            command.OnExecute(async() =>
            {
                var cstring = new AzureSqlConnectionStringBuilder().Build(tfstate.HasValue() ? tfstate.Value() : null, res.Value());
                if (file.HasValue())
                {
                    await File.WriteAllTextAsync(file.Value(), cstring);
                }
                else
                {
                    Console.WriteLine(cstring);
                }
                return(0);
            });
        }