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); } }
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); } }
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); }
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); } }
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); } }
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(); }
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; } }
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); } }