Exemplo n.º 1
0
        public void GetContainerWithSasPolicy()
        {
            string             containerName = Utility.GenNameString("container");
            CloudBlobContainer container     = blobUtil.CreateContainer(containerName);

            try
            {
                TimeSpan sasLifeTime = TimeSpan.FromMinutes(10);
                BlobContainerPermissions permission = new BlobContainerPermissions();
                int count = random.Next(1, 5);

                for (int i = 0; i < count; i++)
                {
                    permission.SharedAccessPolicies.Add(Utility.GenNameString("saspolicy"), new SharedAccessBlobPolicy
                    {
                        SharedAccessExpiryTime = DateTime.Now.Add(sasLifeTime),
                        Permissions            = SharedAccessBlobPermissions.Read,
                    });
                }

                container.SetPermissions(permission);

                Test.Assert(CommandAgent.GetAzureStorageContainer(containerName), Utility.GenComparisonData("GetAzureStorageContainer", true));
                Test.Assert(CommandAgent.Output.Count == 1, String.Format("Create {0} containers, actually retrieved {1} containers", 1, CommandAgent.Output.Count));

                CommandAgent.OutputValidation(new List <BlobContainerPermissions>()
                {
                    permission
                });
            }
            finally
            {
                blobUtil.RemoveContainer(containerName);
            }
        }
Exemplo n.º 2
0
        public void GetContainerByNameWithPropertiesAndMetaData()
        {
            //TODO get container only by name
            //create random container
            int           count          = random.Next(1, 5);
            List <string> containerNames = new List <string>();

            for (int i = 0; i < count; i++)
            {
                containerNames.Add(Utility.GenNameString("container"));
            }

            blobUtil.CreateContainer(containerNames);

            try
            {
                List <CloudBlobContainer> containers = blobUtil.GetExistingContainers();

                //list all containers with properties and meta data
                string containerName = string.Empty;

                Test.Assert(CommandAgent.GetAzureStorageContainer(containerName), Utility.GenComparisonData("GetAzureStorageContainer", true));
                Test.Assert(CommandAgent.Output.Count == containers.Count, String.Format("Create {0} containers, but retrieved {1} containers", containers.Count, CommandAgent.Output.Count));

                // Verification for returned values
                CommandAgent.OutputValidation(containers);
            }
            finally
            {
                blobUtil.RemoveContainer(containerNames);
            }
        }
Exemplo n.º 3
0
        public void GetNonExistingContainerNodeJS()
        {
            string ContainerName = Utility.GenNameString("nonexisting");

            // Delete the container if it exists
            CloudBlobClient    blobClient = StorageAccount.CreateCloudBlobClient();
            CloudBlobContainer container  = blobClient.GetContainerReference(ContainerName);

            container.DeleteIfExists();

            //--------------Get operation--------------
            Test.Assert(CommandAgent.GetAzureStorageContainer(ContainerName), Utility.GenComparisonData("get container", true));
            // Verification for returned values
            ExpectEqual(CommandAgent.Output.Count, 0, string.Format("0 row should be returned : {0}", CommandAgent.Output.Count));
            Test.Assert(CommandAgent.ErrorMessages.Count == 0, "0 error message returned : {0}", CommandAgent.ErrorMessages.Count);
        }
Exemplo n.º 4
0
        public void ListContainerWithContianerPermission()
        {
            string             containerName = Utility.GenNameString(ContainerPrefix);
            CloudBlobContainer container     = blobUtil.CreateContainer(containerName, BlobContainerPublicAccessType.Container);

            try
            {
                Test.Assert(CommandAgent.GetAzureStorageContainer(containerName), Utility.GenComparisonData("GetAzureStorageContainer", true));

                Dictionary <string, object> dic = Utility.GenComparisonData(StorageObjectType.Container, containerName);

                Collection <Dictionary <string, object> > comp = new Collection <Dictionary <string, object> > {
                    dic
                };
                //remove the permssion information for anonymous storage account
                CloudBlobUtil.PackContainerCompareData(container, dic);
                dic["PublicAccess"] = null;
                dic["Permission"]   = null;
                // Verification for returned values
                CommandAgent.OutputValidation(comp);

                //check the http or https usage
                CloudBlobContainer retrievedContainer = (CloudBlobContainer)CommandAgent.Output[0]["CloudBlobContainer"];;
                string             uri       = retrievedContainer.Uri.ToString();
                string             uriPrefix = string.Empty;

                if (useHttps)
                {
                    uriPrefix = "https";
                }
                else
                {
                    uriPrefix = "http";
                }

                Test.Assert(uri.ToString().StartsWith(uriPrefix), string.Format("The prefix of container uri should be {0}, actually it's {1}", uriPrefix, uri));
            }
            finally
            {
                blobUtil.RemoveContainer(containerName);
            }
        }
Exemplo n.º 5
0
        public void GetContainerFromMultipleStorageContext()
        {
            PowerShellAgent     psAgent  = (PowerShellAgent)CommandAgent;
            CloudStorageAccount account1 = TestBase.GetCloudStorageAccountFromConfig();
            CloudStorageAccount account2 = TestBase.GetCloudStorageAccountFromConfig("Secondary");
            string connectionString1     = account1.ToString(true);
            string connectionString2     = account2.ToString(true);

            Test.Assert(connectionString1 != connectionString2, "Use two different connection string {0} != {1}", connectionString1, connectionString2);

            CloudBlobUtil blobUtil1       = new CloudBlobUtil(account1);
            CloudBlobUtil blobUtil2       = new CloudBlobUtil(account2);
            string        containerName   = Utility.GenNameString("container");
            bool          savedParamValue = psAgent.UseContextParam;

            try
            {
                CloudBlobContainer container1 = blobUtil1.CreateContainer(containerName);
                CloudBlobContainer container2 = blobUtil2.CreateContainer(containerName);
                int containerCount            = 2;

                string cmd = String.Format("$context1 = new-azurestoragecontext -connectionstring '{0}';$context2 = new-azurestoragecontext -connectionstring '{1}';($context1, $context2)", connectionString1, connectionString2);
                psAgent.UseContextParam = false;
                psAgent.AddPipelineScript(cmd);

                Test.Assert(CommandAgent.GetAzureStorageContainer(containerName), Utility.GenComparisonData("Get-AzureStorageContainer using multiple storage contexts", true));
                Test.Assert(CommandAgent.Output.Count == containerCount, String.Format("Want to retrieve {0} page blob, but retrieved {1} page blobs", containerCount, CommandAgent.Output.Count));

                CommandAgent.OutputValidation(new List <CloudBlobContainer>()
                {
                    container1, container2
                });
            }
            finally
            {
                psAgent.UseContextParam = savedParamValue;
                blobUtil1.RemoveContainer(containerName);
                blobUtil2.RemoveContainer(containerName);
            }
        }
Exemplo n.º 6
0
        public void RunCmdletWithoutStorageContext()
        {
            PowerShellAgent.RemoveAzureSubscriptionIfExists();

            CLICommonBVT.SaveAndCleanSubScriptionAndEnvConnectionString();

            string             containerName = Utility.GenNameString("container");
            CloudBlobContainer container     = blobUtil.CreateContainer(containerName);

            try
            {
                bool terminated = false;

                try
                {
                    CommandAgent.GetAzureStorageContainer(containerName);
                }
                catch (CmdletInvocationException e)
                {
                    terminated = true;
                    Test.Info(e.Message);
                    Test.Assert(e.Message.StartsWith("Can not find your azure storage credential."), "Can not find your azure storage credential.");
                }
                finally
                {
                    if (!terminated)
                    {
                        Test.AssertFail("without storage context should return a terminating error");
                    }
                }
            }
            finally
            {
                blobUtil.RemoveContainer(containerName);
            }

            CLICommonBVT.RestoreSubScriptionAndEnvConnectionString();
        }
Exemplo n.º 7
0
        public void GetContainerWithInvalidEndPoint()
        {
            PowerShellAgent psAgent         = (PowerShellAgent)CommandAgent;
            bool            savedParamValue = psAgent.UseContextParam;

            try
            {
                string accountName = Utility.GenNameString("account");
                string accountKey  = Utility.GenBase64String("key");
                string endPoint    = Utility.GenNameString("core.abc.def");

                string cmd = String.Format("new-azurestoragecontext -StorageAccountName {0} " +
                                           "-StorageAccountKey {1} -Endpoint {2}", accountName, accountKey, endPoint);
                psAgent.AddPipelineScript(cmd);
                psAgent.UseContextParam = false;
                Test.Assert(!CommandAgent.GetAzureStorageContainer(string.Empty),
                            "Get containers with invalid endpoint should fail");
                ExpectedContainErrorMessage(ExpectedErrorMsgs);
            }
            finally
            {
                psAgent.UseContextParam = savedParamValue;
            }
        }
Exemplo n.º 8
0
        public void GetContainerFromValidAndInvalidStorageContext()
        {
            PowerShellAgent     psAgent  = (PowerShellAgent)CommandAgent;
            CloudStorageAccount account1 = TestBase.GetCloudStorageAccountFromConfig();
            string connectionString1     = account1.ToString(true);
            string randomAccountName     = Utility.GenNameString("account");
            string randomAccountKey      = Utility.GenNameString("key");

            randomAccountKey = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(randomAccountKey));

            string containerName   = Utility.GenNameString("container");
            bool   savedParamValue = psAgent.UseContextParam;

            try
            {
                CloudBlobContainer container1 = blobUtil.CreateContainer(containerName);
                string             cmd        = String.Format("$context1 = new-azurestoragecontext -connectionstring '{0}';$context2 = new-azurestoragecontext -StorageAccountName '{1}' -StorageAccountKey '{2}';($context1, $context2)",
                                                              connectionString1, randomAccountName, randomAccountKey);
                psAgent.UseContextParam = false;
                psAgent.AddPipelineScript(cmd);

                Test.Assert(!CommandAgent.GetAzureStorageContainer(containerName), Utility.GenComparisonData("Get-AzureStorageContainer using valid and invalid storage contexts", false));
                Test.Assert(CommandAgent.ErrorMessages.Count == 1, "invalid storage context should return error");

                //the same error may output different error messages in different environments
                bool expectedError = CommandAgent.ErrorMessages[0].Contains("The remote server returned an error: (502) Bad Gateway") ||
                                     CommandAgent.ErrorMessages[0].Contains("The remote name could not be resolved") || CommandAgent.ErrorMessages[0].Contains("The operation has timed out");
                Test.Assert(expectedError, "use invalid storage account should return 502 or could not be resolved exception or The operation has timed out, actually {0}", CommandAgent.ErrorMessages[0]);
            }
            finally
            {
                psAgent.UseContextParam = savedParamValue;
                //TODO test the invalid storage account in subscription
                blobUtil.RemoveContainer(containerName);
            }
        }