/// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            using (var rockContext = new RockContext())
            {
                AssetStorageProvider assetStorageProvider = null;
                var assetStorageProviderService           = new AssetStorageProviderService(rockContext);

                if (AssetStorageProviderId != 0)
                {
                    assetStorageProvider = assetStorageProviderService.Get(AssetStorageProviderId);
                }

                if (assetStorageProvider == null)
                {
                    assetStorageProvider = new Rock.Model.AssetStorageProvider();
                    assetStorageProviderService.Add(assetStorageProvider);
                }

                assetStorageProvider.Name         = tbName.Text;
                assetStorageProvider.IsActive     = cbIsActive.Checked;
                assetStorageProvider.Description  = tbDescription.Text;
                assetStorageProvider.EntityTypeId = cpAssetStorageType.SelectedEntityTypeId;

                rockContext.SaveChanges();

                assetStorageProvider.LoadAttributes(rockContext);
                Rock.Attribute.Helper.GetEditValues(phAttributes, assetStorageProvider);
                assetStorageProvider.SaveAttributeValues(rockContext);
            }

            NavigateToParentPage();
        }
예제 #2
0
        private static void CreateAssetStorageProvider(TestContext testContext)
        {
            AssetStorageProvider assetStorageProvider = null;

            var bucketName = testContext.Properties["GoogleBucketName"].ToStringSafe();
            var apiKey     = testContext.Properties["GoogleServiceAccountJsonKey"].ToStringSafe();

            // Just Assert Inconclusive if the GoogleStorageAccountName and GoogleAccountAccessKey are blank
            if (string.IsNullOrEmpty(bucketName) || string.IsNullOrEmpty(apiKey))
            {
                Assert.That.Inconclusive($"The GoogleStorageAccountName and GoogleAccountAccessKey must be set up in your Test > Test Settings > Test Setting File in order to run these tests.");
            }

            try
            {
                using (var rockContext = new RockContext())
                {
                    var assetStorageProviderService = new AssetStorageProviderService(rockContext);
                    assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid);

                    if (assetStorageProvider == null)
                    {
                        // This is the registered Guid for the 'Rock.Storage.AssetStorage.GoogleCloudStorageComponent' entity type
                        var entityType = EntityTypeCache.Get(Rock.SystemGuid.EntityType.STORAGE_ASSETSTORAGE_GOOGLECLOUD.AsGuid());

                        assetStorageProvider              = new AssetStorageProvider();
                        assetStorageProvider.Name         = "TEST Google Cloud AssetStorageProvider";
                        assetStorageProvider.Guid         = _assetStorageProviderServiceGuid;
                        assetStorageProvider.EntityTypeId = entityType.Id;
                        assetStorageProvider.IsActive     = true;

                        assetStorageProviderService.Add(assetStorageProvider);

                        rockContext.SaveChanges();

                        var assetStorageProviderComponentEntityType = EntityTypeCache.Get(assetStorageProvider.EntityTypeId.Value);
                        var assetStorageProviderEntityType          = EntityTypeCache.Get <Rock.Model.AssetStorageProvider>();

                        Helper.UpdateAttributes(
                            assetStorageProviderComponentEntityType.GetEntityType(),
                            assetStorageProviderEntityType.Id,
                            "EntityTypeId",
                            assetStorageProviderComponentEntityType.Id.ToString(),
                            rockContext);
                    }

                    assetStorageProvider.LoadAttributes();
                    assetStorageProvider.SetAttributeValue("BucketName", bucketName);
                    assetStorageProvider.SetAttributeValue("ApiKey", Encryption.EncryptString(apiKey));
                    assetStorageProvider.SetAttributeValue("RootFolder", testContext.Properties["UnitTestRootFolder"].ToStringSafe());
                    assetStorageProvider.SaveAttributeValues(rockContext);
                }
            }
            catch (System.Exception ex)
            {
                Assert.That.Inconclusive($"Unable to get the Google Cloud Asset Storage Provider ({ex.Message}).");
            }
        }
예제 #3
0
        private static void CreateAssetStorageProvider(TestContext testContext)
        {
            AssetStorageProvider assetStorageProvider = null;

            var accessKey = testContext.Properties["AWSAccessKey"].ToStringSafe();
            var secretKey = testContext.Properties["AWSSecretKey"].ToStringSafe();

            try
            {
                using (var rockContext = new RockContext())
                {
                    var assetStorageProviderService = new AssetStorageProviderService(rockContext);
                    assetStorageProvider = assetStorageProviderService.Get(_assetStorageProviderServiceGuid);

                    if (assetStorageProvider == null)
                    {
                        var entityType = EntityTypeCache.Get(Rock.SystemGuid.EntityType.STORAGE_ASSETSTORAGE_AMAZONS3.AsGuid());

                        assetStorageProvider              = new AssetStorageProvider();
                        assetStorageProvider.Name         = "TEST Amazon S3 AssetStorageProvider";
                        assetStorageProvider.Guid         = _assetStorageProviderServiceGuid;
                        assetStorageProvider.EntityTypeId = entityType.Id;
                        assetStorageProvider.IsActive     = true;

                        assetStorageProviderService.Add(assetStorageProvider);

                        rockContext.SaveChanges();

                        var assetStorageProviderComponentEntityType = EntityTypeCache.Get(assetStorageProvider.EntityTypeId.Value);
                        var assetStorageProviderEntityType          = EntityTypeCache.Get <Rock.Model.AssetStorageProvider>();

                        Helper.UpdateAttributes(
                            assetStorageProviderComponentEntityType.GetEntityType(),
                            assetStorageProviderEntityType.Id,
                            "EntityTypeId",
                            assetStorageProviderComponentEntityType.Id.ToString(),
                            rockContext);
                    }

                    assetStorageProvider.LoadAttributes();
                    assetStorageProvider.SetAttributeValue("GenerateSingedURLs", "False");   // The attribute Key has that typo.
                    assetStorageProvider.SetAttributeValue("AWSRegion", testContext.Properties["AWSRegion"].ToStringSafe());
                    assetStorageProvider.SetAttributeValue("Bucket", testContext.Properties["AWSBucket"].ToStringSafe());
                    assetStorageProvider.SetAttributeValue("Expiration", "525600");
                    assetStorageProvider.SetAttributeValue("RootFolder", testContext.Properties["UnitTestRootFolder"].ToStringSafe());
                    assetStorageProvider.SetAttributeValue("AWSProfileName", testContext.Properties["AWSProfileName"].ToStringSafe());
                    assetStorageProvider.SetAttributeValue("AWSAccessKey", accessKey);
                    assetStorageProvider.SetAttributeValue("AWSSecretKey", secretKey);

                    assetStorageProvider.SaveAttributeValues(rockContext);
                }
            }
            catch (System.Exception ex)
            {
                Assert.That.Inconclusive($"Unable to get the Amazon S3 Asset Storage Provider ({ex.Message}).");
            }
        }