public void TestGetStorageConfigurationBadPublicUrlRoot()
        {
            var noBucketStorageOptions = new PiranhaS3StorageOptions
            {
                BucketName    = ValidUnitTestBucketName,
                KeyPrefix     = ValidUnitTestKeyPrefix,
                PublicUrlRoot = "notaurl"
            };

            try
            {
                IServiceCollection services             = new ServiceCollection();
                var storageFactory                      = new S3StorageFactory(noBucketStorageOptions, TestFixture.FakeAwsOptions);
                Func <IServiceProvider, object> factory = storageFactory.CreateS3Storage;
                services.Add(new ServiceDescriptor(typeof(S3Storage), factory, ServiceLifetime.Singleton));
                var serviceProvider = services.BuildServiceProvider();

                serviceProvider.GetService <S3Storage>();
                Assert.False(true, "Bad PublicUrlRoot did not throw an exception");
            }
            catch (Exception ex)
            {
                Assert.IsAssignableFrom <FlagscriptConfigurationException>(ex);
            }
        }
        public void TestGetStorageConfigurationEnvVarOptions()
        {
            try
            {
                Environment.SetEnvironmentVariable(PiranhaS3StorageOptions.BucketEnvironmentVariable, "buck");
                Environment.SetEnvironmentVariable(PiranhaS3StorageOptions.KeyPrefixEnvironmentVariable, "kp");
                Environment.SetEnvironmentVariable(PiranhaS3StorageOptions.UrlRootEnvironmentVariable, "http://flagscript.technology");

                IServiceCollection services             = new ServiceCollection();
                var storageFactory                      = new S3StorageFactory(null, TestFixture.FakeAwsOptions);
                Func <IServiceProvider, object> factory = storageFactory.CreateS3Storage;
                services.Add(new ServiceDescriptor(typeof(S3Storage), factory, ServiceLifetime.Singleton));
                var serviceProvider = services.BuildServiceProvider();

                var s3Storage = serviceProvider.GetService <S3Storage>();
                Assert.Equal("buck", s3Storage.StorageOptions.BucketName);
                Assert.Equal("kp", s3Storage.StorageOptions.KeyPrefix);
                Assert.Equal("http://flagscript.technology", s3Storage.StorageOptions.PublicUrlRoot);
            }
            finally
            {
                Environment.SetEnvironmentVariable(PiranhaS3StorageOptions.BucketEnvironmentVariable, null);
                Environment.SetEnvironmentVariable(PiranhaS3StorageOptions.KeyPrefixEnvironmentVariable, null);
                Environment.SetEnvironmentVariable(PiranhaS3StorageOptions.UrlRootEnvironmentVariable, null);
            }
        }
        public void TestGetStorageConfigurationStorageOptions()
        {
            IServiceCollection services = new ServiceCollection();
            var storageFactory          = new S3StorageFactory(null, TestFixture.FakeAwsOptions);

            services.AddSingleton(TestFixture.MainConfiguration);
            Func <IServiceProvider, object> factory = storageFactory.CreateS3Storage;

            services.Add(new ServiceDescriptor(typeof(S3Storage), factory, ServiceLifetime.Singleton));
            var serviceProvider = services.BuildServiceProvider();

            var s3Storage = serviceProvider.GetService <S3Storage>();

            Assert.Equal("BucketNameTest", s3Storage.StorageOptions.BucketName);
        }
        public void TestGetStorageConfigurationAwsOptions()
        {
            IServiceCollection services = new ServiceCollection();
            var storageFactory          = new S3StorageFactory(ValidStorageOptions, null);

            services.AddSingleton(TestFixture.MainConfiguration);
            Func <IServiceProvider, object> factory = storageFactory.CreateS3Storage;

            services.Add(new ServiceDescriptor(typeof(S3Storage), factory, ServiceLifetime.Singleton));
            var serviceProvider = services.BuildServiceProvider();

            var s3Storage = serviceProvider.GetService <S3Storage>();

            Assert.Equal("unit-test-profile", s3Storage.AwsOptions.Profile);
        }
        public void TestGetStorageBothPassedInOptions()
        {
            IServiceCollection services             = new ServiceCollection();
            var storageFactory                      = new S3StorageFactory(ValidStorageOptions, TestFixture.FakeAwsOptions);
            Func <IServiceProvider, object> factory = storageFactory.CreateS3Storage;

            services.Add(new ServiceDescriptor(typeof(S3Storage), factory, ServiceLifetime.Singleton));
            var serviceProvider = services.BuildServiceProvider();

            var s3Storage = serviceProvider.GetService <S3Storage>();

            Assert.Equal(ValidStorageOptions.BucketName, s3Storage.StorageOptions.BucketName);
            Assert.Equal(ValidStorageOptions.KeyPrefix, s3Storage.StorageOptions.KeyPrefix);
            Assert.Equal(ValidStorageOptions.PublicUrlRoot, s3Storage.StorageOptions.PublicUrlRoot);
            Assert.Same(TestFixture.FakeAwsOptions, s3Storage.AwsOptions);
        }