Example #1
0
        public async Task FilenameFileSecretTest(SecretResolver secretResolver)
        {
            var secret = await secretResolver.ResolveSecretAsync(config.FilenameFileSecret);

            Assert.Equal("C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", secret);
            Assert.Equal("TestString", config.TextValue);
        }
Example #2
0
        public async Task InitializeAsync()
        {
            Settings        = config.For <CosmosDbConfiguration>("CosmosDB");
            _secretResolver = new SecretResolver();

            //Notes:
            // if using an azure instance to run the tests, make sure you set the environment variable before you start visual studio
            // Ex: CMD C:\> setx COSMOSDB_KEY ABCDEFGASD==
            // On CosmosDB, make sure you create the collection 'SampleEntity' in the database defined in the config 'Stacks'
            // To overrride the appsettings values, set the environment variable using SectionName__PropertyName. i.e: CosmosDB__DatabaseAccountUri
            // Note the use of a double _ between the section and the property name

            if (Environment.GetEnvironmentVariable(Settings.SecurityKeySecret.Identifier) == null)
            {
                //if localhost and running in visual studio
                if (Settings.DatabaseAccountUri.Contains("localhost", StringComparison.InvariantCultureIgnoreCase) &&
                    Environment.GetEnvironmentVariable("VisualStudioEdition") != null)
                {
                    Environment.SetEnvironmentVariable(Settings.SecurityKeySecret.Identifier, this.Settings.PrimaryKey);
                }
                else
                {
                    throw new ArgumentNullException(
                              $"The environment variable '{Settings.SecurityKeySecret.Identifier}' has not been set");
                }
            }

            string cosmosDbKey = await _secretResolver.ResolveSecretAsync(Settings.SecurityKeySecret);

            CosmosClient = new CosmosClient(Settings.DatabaseAccountUri, cosmosDbKey);
            await CosmosClient.CreateDatabaseIfNotExistsAsync(Settings.DatabaseName);

            Database database = CosmosClient.GetDatabase(Settings.DatabaseName);
            await database.CreateContainerIfNotExistsAsync(nameof(SampleEntity), $"/{nameof(SampleEntity.OwnerId)}");
        }
Example #3
0
        public async Task ImplicitEnvironmentBasedSecretTest(SecretResolver secretResolver)
        {
            var secret = await secretResolver.ResolveSecretAsync(config.ImplicitEnvironmentSecret);

            Assert.Equal("PleaseDontTellAnyone", secret);
            Assert.Equal("TestString", config.TextValue);
        }
Example #4
0
        public DocumentDBRepository(IConfiguration config)
        {
            SecretResolver secrets = new SecretResolver(config);

            Endpoint    = secrets.GetSecret("DBEndpoint").Result;
            Key         = secrets.GetSecret("DBKey").Result;
            this.client = new DocumentClient(new Uri(Endpoint), Key);
            CreateDatabaseIfNotExistsAsync().Wait();
            CreateCollectionIfNotExistsAsync().Wait();
        }
Example #5
0
        public AzureBlobHistoryStore()
        {
            _secresolve = new SecretResolver();
            CONTAINER   = _secresolve.GetConfiguration("FHIRDB", "FHIR3").ToLower() + "-history";
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_secresolve.GetSecret("StorageConnectionString").Result);
            // Create the table if it doesn't exist.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            blob = blobClient.GetContainerReference(CONTAINER);
            blob.CreateIfNotExists();
        }
Example #6
0
 //TODO: Inject Storage Implementation
 public ResourceController(IFHIRStore store)
 {
     _secresolve    = new SecretResolver();
     parsemode      = _secresolve.GetConfiguration("FHIRParserMode", "open");
     _strict        = (parsemode == null || parsemode.Equals("strict", StringComparison.CurrentCultureIgnoreCase) ? true : false);
     this.storage   = store;
     parsersettings = new ParserSettings();
     parsersettings.AcceptUnknownMembers   = !_strict;
     parsersettings.AllowUnrecognizedEnums = !_strict;
     jsonparser = new FhirJsonParser(parsersettings);
     xmlparser  = new FhirXmlParser(parsersettings);
 }
Example #7
0
        public async Task RelativeFilenameFileSecretTest(SecretResolver secretResolver)
        {
            var tmpFile = "subfolder/secretfile.txt";

            Directory.CreateDirectory("subfolder");

            File.Copy("secretfile.txt", tmpFile, true);

            try
            {
                var secret = await secretResolver.ResolveSecretAsync(config.RelativeFilenameFileSecret);

                Assert.Equal("C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", secret);
            }
            finally
            {
                File.Delete(tmpFile);
            }
        }
Example #8
0
        public AzureDocDBFHIRStore(IFHIRHistoryStore history)
        {
            _secresolve = new SecretResolver();
            this.client = new DocumentClient(new Uri(_secresolve.GetSecret("DBStorageEndPointUri").Result), _secresolve.GetSecret("DBStoragePrimaryKey").Result, new ConnectionPolicy
            {
                ConnectionMode     = ConnectionMode.Direct,
                ConnectionProtocol = Protocol.Tcp
            });
            historystore = history;
            ParserSettings ps = new ParserSettings();

            ps.AcceptUnknownMembers   = true;
            ps.AllowUnrecognizedEnums = true;
            parser = new FhirJsonParser(ps);
            string DBSTORAGE = _secresolve.GetConfiguration("FHIRDBStorage");

            fixeddb = (DBSTORAGE == null || DBSTORAGE.ToUpper().StartsWith("F"));
            int.TryParse(_secresolve.GetConfiguration("FHIRMAXDOCSIZE", "500000"), out imaxdocsize);
            DBName = _secresolve.GetConfiguration("FHIRDB", "FHIR3");
        }
Example #9
0
        public async Task FullPathFileSecretTest(SecretResolver secretResolver)
        {
            var tmpFile = "secretfile.txt";

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                Directory.CreateDirectory(config.WindowsTempFolder);
                tmpFile = Path.Combine(config.WindowsTempFolder, tmpFile);
            }
            else
            {
                Directory.CreateDirectory(config.LinuxTempFolder);
                tmpFile = Path.Combine(config.LinuxTempFolder, tmpFile);
            }

            File.Copy("secretfile.txt", tmpFile, true);

            try
            {
                var secret = string.Empty;

                if (Environment.OSVersion.Platform == PlatformID.Win32NT)
                {
                    secret = await secretResolver.ResolveSecretAsync(config.WindowsFullPathFileSecret);
                }
                else
                {
                    secret = await secretResolver.ResolveSecretAsync(config.LinuxFullPathFileSecret);
                }

                Assert.Equal("C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", secret);
                Assert.Equal("TestString", config.TextValue);
            }
            finally
            {
                File.Delete(tmpFile);
            }
        }
Example #10
0
        public async Task NonExistentOptionalFileSecretTest(SecretResolver secretResolver)
        {
            var secret = await secretResolver.ResolveSecretAsync(config.NonExistentOptionalFileSecret);

            Assert.Null(secret);
        }
Example #11
0
 public async Task NonExistentRequiredFileSecretTest(SecretResolver secretResolver)
 {
     await Assert.ThrowsAsync <SecretNotFoundException>(async() => await secretResolver.ResolveSecretAsync(config.NonExistentRequiredFileSecret));
 }