Пример #1
0
        public void NewBlobSasWithNotExistBlob()
        {
            string containerName = Utility.GenNameString("container");
            string blobName      = Utility.GenNameString("blob");

            CommandAgent.GetBlobSasFromCmd(containerName, blobName, string.Empty, string.Empty);
        }
Пример #2
0
        public void NewBlobSasWithPolicy()
        {
            blobUtil.SetupTestContainerAndBlob();

            try
            {
                TimeSpan sasLifeTime = TimeSpan.FromMinutes(10);
                BlobContainerPermissions permission = new BlobContainerPermissions();
                string policyName = Utility.GenNameString("saspolicy");

                permission.SharedAccessPolicies.Add(policyName, new SharedAccessBlobPolicy
                {
                    Permissions            = SharedAccessBlobPermissions.Read,
                    SharedAccessExpiryTime = DateTimeOffset.UtcNow.Add(sasLifeTime)
                });

                blobUtil.Container.SetPermissions(permission);
                string sasToken = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, policyName, string.Empty);
                Test.Info("Sleep and wait for sas policy taking effect");
                double lifeTime = 1;
                Thread.Sleep(TimeSpan.FromMinutes(lifeTime));
                ValidateSasToken(blobUtil.Blob, "r", sasToken);
            }
            finally
            {
                blobUtil.CleanupTestContainerAndBlob();
            }
        }
Пример #3
0
        public void NewBlobSasWithLifeTime()
        {
            blobUtil.SetupTestContainerAndBlob();
            double       waitEffectTime = 1;
            double       lifeTime       = 5; //Minutes
            const double deltaTime      = 0.5;
            DateTime     startTime      = DateTime.Now.AddMinutes(waitEffectTime);
            DateTime     expiryTime     = startTime.AddMinutes(lifeTime);

            try
            {
                string blobPermission = Utility.GenRandomCombination(Utility.BlobPermission);
                string sastoken       = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission, startTime, expiryTime);
                try
                {
                    ValidateSasToken(blobUtil.Blob, blobPermission, sastoken);
                    Test.Error(string.Format("Access Blob should fail since the start time is {0}, but now is {1}",
                                             startTime.ToUniversalTime().ToString(), DateTime.UtcNow.ToString()));
                }
                catch (StorageException e)
                {
                    Test.Info(e.Message);
                    ExpectEqual(e.RequestInformation.HttpStatusCode, 403, "(403) Forbidden");
                }

                Test.Info("Sleep and wait for the sas token start time");
                Thread.Sleep(TimeSpan.FromMinutes(waitEffectTime + deltaTime));
                ValidateSasToken(blobUtil.Blob, blobPermission, sastoken);
                Test.Info("Sleep and wait for sas token expiry time");
                Thread.Sleep(TimeSpan.FromMinutes(lifeTime + deltaTime));

                try
                {
                    if (!blobPermission.Contains('d'))
                    {
                        // if there is 'd' in Permission, the blob does not exist, we should skip this
                        ValidateSasToken(blobUtil.Blob, blobPermission, sastoken);
                        Test.Error(string.Format("Access Blob should fail since the expiry time is {0}, but now is {1}",
                                                 expiryTime.ToUniversalTime().ToString(), DateTime.UtcNow.ToString()));
                    }
                }
                catch (StorageException e)
                {
                    Test.Info(e.Message);
                    Test.Assert(403 == e.RequestInformation.HttpStatusCode || 306 == e.RequestInformation.HttpStatusCode, string.Format("HttpStatusCode should be 403 or 306, and actually it's {0}", e.RequestInformation.HttpStatusCode));
                }
            }
            finally
            {
                blobUtil.CleanupTestContainerAndBlob();
            }
        }
Пример #4
0
 /// <summary>
 /// Generate a sas token and validate it.
 /// </summary>
 /// <param name="blobPermission">Blob permission</param>
 internal void GenerateSasTokenAndValidate(string blobPermission)
 {
     blobUtil.SetupTestContainerAndBlob();
     try
     {
         string sastoken = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
         ValidateSasToken(blobUtil.Blob, blobPermission, sastoken);
     }
     finally
     {
         blobUtil.CleanupTestContainerAndBlob();
     }
 }
Пример #5
0
        public void NewBlobSas_IncludeIPRange()
        {
            blobUtil.SetupTestContainerAndBlob();
            try
            {
                string sastoken = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, "rwd", null, null, false, null, "0.0.0.0-255.255.255.255");

                blobUtil.ValidateBlobWriteableWithSasToken(blobUtil.Blob, sastoken);
            }
            finally
            {
                blobUtil.CleanupTestContainerAndBlob();
            }
        }
Пример #6
0
        public void NewBlobSasWithLimitedPermission()
        {
            blobUtil.SetupTestContainerAndBlob();
            try
            {
                //Blob read permission
                string blobPermission    = "r";
                string limitedPermission = lang == Language.PowerShell ? "wdac" : "wd";
                string sastoken          = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
                ValidateLimitedSasPermission(blobUtil.Blob, limitedPermission, sastoken);

                //Blob write permission
                blobPermission    = "w";
                limitedPermission = "rd";
                sastoken          = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
                ValidateLimitedSasPermission(blobUtil.Blob, limitedPermission, sastoken);

                //Blob delete permission
                blobPermission    = "d";
                limitedPermission = lang == Language.PowerShell ? "rwac" : "rw";
                sastoken          = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
                ValidateLimitedSasPermission(blobUtil.Blob, limitedPermission, sastoken);

                if (lang == Language.PowerShell)
                {
                    //Blob add permission
                    blobPermission    = "a";
                    limitedPermission = "rdwc";
                    sastoken          = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
                    ValidateLimitedSasPermission(blobUtil.Blob, limitedPermission, sastoken);

                    //Blob create permission
                    blobPermission    = "c";
                    limitedPermission = "rdwa";
                    sastoken          = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
                    ValidateLimitedSasPermission(blobUtil.Blob, limitedPermission, sastoken);
                }

                //Blob none permission
                //blobPermission = "";
                //limitedPermission = "rwd";
                //sastoken = agent.GetBlobSasFromPsCmd(blobUtil.Blob, string.Empty, blobPermission);
                //ValidateLimitedSasPermission(blobUtil.Blob, limitedPermission, sastoken);
            }
            finally
            {
                blobUtil.CleanupTestContainerAndBlob();
            }
        }
Пример #7
0
        public void NewBlobSas_HttpsOrHttp()
        {
            blobUtil.SetupTestContainerAndBlob();
            try
            {
                string fullUri  = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, "rwd", null, null, true, SharedAccessProtocol.HttpsOrHttp);
                string sasToken = (lang == Language.PowerShell ? fullUri.Substring(fullUri.IndexOf("?")) : fullUri);

                blobUtil.ValidateBlobReadableWithSasToken(blobUtil.Blob, sasToken, useHttps: false);
            }
            finally
            {
                blobUtil.CleanupTestContainerAndBlob();
            }
        }
Пример #8
0
 public void NewBlobSasWithFullUri()
 {
     blobUtil.SetupTestContainerAndBlob();
     try
     {
         string blobPermission = Utility.GenRandomCombination(Utility.BlobPermission);
         string fullUri        = CommandAgent.GetBlobSasFromCmd(blobUtil.Blob, string.Empty, blobPermission);
         string sasToken       = (lang == Language.PowerShell ? fullUri.Substring(fullUri.IndexOf("?")) : fullUri);
         ValidateSasToken(blobUtil.Blob, blobPermission, sasToken);
     }
     finally
     {
         blobUtil.CleanupTestContainerAndBlob();
     }
 }
Пример #9
0
        public void NewBlobSasWithSpecialCharacters()
        {
            blobUtil.SetupTestContainerAndBlob();
            string specialBlobName = Utility.GenNameString(TestBase.SpecialChars);

            try
            {
                CloudBlob blob      = blobUtil.CreateRandomBlob(blobUtil.Container, specialBlobName);
                string    permisson = "r";
                string    fullUri   = CommandAgent.GetBlobSasFromCmd(blob, string.Empty, permisson, null, null, true);
                string    sasToken  = (lang == Language.PowerShell ? fullUri.Substring(fullUri.IndexOf("?")) : fullUri);
                blobUtil.ValidateBlobReadableWithSasToken(blob, sasToken);
            }
            finally
            {
                blobUtil.CleanupTestContainerAndBlob();
            }
        }