public void Constructor_FullConfiguration_Works()
        {
            // ARRANGE
            var expected = new RemindMeWhenSettings
            {
                AzureStorage = new AzureStorageSettings
                {
                    ConnectionString          = GetRandomString(),
                    ProcessDocumentQueueName  = GetRandomString(),
                    DocumentBlobContainerName = GetRandomString(),
                    DocumentMetadataTableName = GetRandomString()
                },
                RottenTomatoes = new RottenTomatoesSettings
                {
                    ApiKey = GetRandomString()
                }
            };

            using (var configurationFile = new ConfigurationFile(expected))
            {
                // ACT
                RemindMeWhenConfiguration configuration = configurationFile.GetConfiguration();

                // ASSERT
                RemindMeWhenSettings actual = configuration.GetSettings();
                actual.ShouldBeEquivalentTo(expected);

                configurationFile.Delete = true;
            }
        }
            public ConfigurationFile(RemindMeWhenSettings settings)
            {
                // generate the file content
                string configurationFile = ConfigurationFileFormat.FormatWith(new
                {
                    RemindMeWhenConfiguration.SectionName,
                    typeof(RemindMeWhenConfiguration).AssemblyQualifiedName,
                    Settings = settings
                });

                // write the file
                _fileName = Path.GetRandomFileName();
                File.WriteAllText(_fileName, configurationFile.Trim());
            }
Esempio n. 3
0
        public override void Load()
        {
            // load settings
            RemindMeWhenSettings settings = RemindMeWhenConfiguration.GetCurrentSettings();

            Bind <RemindMeWhenSettings>().ToConstant(settings);
            Bind <AzureStorageSettings>().ToConstant(settings.AzureStorage);
            Bind <RottenTomatoesSettings>().ToConstant(settings.RottenTomatoes);

            // bind everything in this assembly
            Kernel.Bind(x => x.FromThisAssembly().SelectAllClasses().BindAllInterfaces());

            // AzureStorage
            // TODO: create the Azure resources somewhere else...
            AzureStorageSettings azureStorageSettings = settings.AzureStorage;

            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureStorageSettings.ConnectionString);
            CloudTableClient    tableClient    = storageAccount.CreateCloudTableClient();
            CloudBlobClient     blobClient     = storageAccount.CreateCloudBlobClient();
            CloudQueueClient    queueClient    = storageAccount.CreateCloudQueueClient();

            CloudTable documentMetadataTable = tableClient.GetTableReference(azureStorageSettings.DocumentMetadataTableName);

            documentMetadataTable.CreateIfNotExists();
            Bind <CloudTable>().ToConstant(documentMetadataTable).WhenInjectedIntoDescendentOf(typeof(DocumentStore));

            CloudBlobContainer documentBlobContainer = blobClient.GetContainerReference(azureStorageSettings.DocumentBlobContainerName);

            documentBlobContainer.CreateIfNotExists();
            Bind <CloudBlobContainer>().ToConstant(documentBlobContainer).WhenInjectedIntoDescendentOf(typeof(DocumentStore));

            CloudQueue processDocumentQueue = queueClient.GetQueueReference(azureStorageSettings.ProcessDocumentQueueName);

            processDocumentQueue.CreateIfNotExists();
            Bind <CloudQueue>().ToConstant(processDocumentQueue).WhenInjectedIntoDescendentOf(typeof(RottenTomatoesRepository <>));

            CloudTable subscriptionTable = tableClient.GetTableReference(azureStorageSettings.SubscriptionTableName);

            subscriptionTable.CreateIfNotExists();
            Bind <CloudTable>().ToConstant(subscriptionTable).WhenInjectedIntoDescendentOf(typeof(SubscriptionStore));

            CloudQueue saveSubscriptionQueue = queueClient.GetQueueReference(azureStorageSettings.SaveSubscriptionQueueName);

            saveSubscriptionQueue.CreateIfNotExists();
            Bind <CloudQueue>().ToConstant(saveSubscriptionQueue).WhenInjectedIntoDescendentOf(typeof(SubscriptionRepository));
        }