示例#1
0
        public void Clear_RemovesAllObjects()
        {
            var directory = new Ess3Directory();

            var file1 = new Ess3File
            {
                Key = exampleKey
            };

            var file2 = new Ess3File
            {
                Key = exampleKey + "blabla"
            };

            directory.Add(file1);
            directory.Add(file2);

            if (directory.Ess3Objects.Count != 2)
            {
                throw new Exception($"there were supposed to be 2 objects, there were actually {directory.Ess3Objects.Count}");
            }

            directory.Clear();

            int expected = 0;
            int actual   = directory.Ess3Objects.Count;

            Assert.AreEqual(expected, actual);
        }
示例#2
0
        public void SetPrefixCorrectly_ForFiles(string key, string prefix)
        {
            var file = new Ess3File
            {
                Key = key
            };

            Assert.AreEqual(prefix, file.Prefix, "file's prefix: {0}, correct prefix: {1}", file.Prefix, prefix);
        }
示例#3
0
        public void WhenIsNotBucketLevel_ReturnsFalse()
        {
            var ess3 = new Ess3File {
                Key = "fred/james.jpg"
            };

            bool expected = false;
            bool actual   = Ess3Factory.IsBucketLevel(ess3);

            Assert.AreEqual(expected, actual, "key: {0}, prefix: {1}", ess3.Key, ess3.Prefix);
        }
示例#4
0
        public void BucketSize_Calculation()
        {
            Random random = new Random(Environment.TickCount % 17);

            Int64 fileSize1 = (Int64)random.Next(10, Int32.MaxValue - 1);
            Int64 fileSize2 = (Int64)random.Next(10, Int32.MaxValue - 1);
            Int64 fileSize3 = (Int64)random.Next(10, Int32.MaxValue - 1);
            Int64 fileSize4 = (Int64)random.Next(10, Int32.MaxValue - 1);

            var file1 = new Ess3File(new S3Object {
                Size = fileSize1, Key = "file1"
            });
            var file2 = new Ess3File(new S3Object {
                Size = fileSize2, Key = "file2"
            });
            var file3 = new Ess3File(new S3Object {
                Size = fileSize3, Key = "file3"
            });
            var file4 = new Ess3File(new S3Object {
                Size = fileSize4, Key = "file4"
            });

            var directory1 = new Ess3Directory {
                Key = "dir1"
            };
            var directory2 = new Ess3Directory {
                Key = "dir2"
            };
            var directory3 = new Ess3Directory {
                Key = "dir3"
            };

            directory1.Add(file1);
            directory2.Add(file2);
            directory3.Add(file3);

            directory2.Add(directory3);
            directory1.Add(directory2);

            var bucket = new Ess3Bucket("bucket", DateTime.Now);

            bucket.Add(directory1);
            bucket.Add(file4);

            Int64 expected = fileSize1 + fileSize2 + fileSize3 + fileSize4;
            Int64 actual   = bucket.Size;

            Assert.AreEqual(expected, actual, "bucket has {0} objects ({1}, {2}, {3}, {4})", bucket.Ess3Objects.Count, fileSize1, fileSize2, fileSize3, fileSize4);
        }
示例#5
0
        public void Add_AddsWhenDoesNotAlreadyContain()
        {
            var directory = new Ess3Directory();

            var file = new Ess3File
            {
                Key = exampleKey
            };

            directory.Add(file);

            int expected = 1;
            int actual   = directory.Ess3Objects.Count;

            Assert.AreEqual(expected, actual);
        }
示例#6
0
        public static async Task <bool> FileAsync(IAccount account, Ess3Bucket bucket, Ess3File file, CancellationToken token)
        {
            DeleteObjectRequest request = new DeleteObjectRequest
            {
                BucketName = bucket.BucketName,
                Key        = file.Key
            };

            using IAmazonS3 client = new AmazonS3Client(account.GetCredentials(), bucket.RegionEndpoint);

            DeleteObjectResponse?response = await Helpers
                                            .RunWithCatchAsync <DeleteObjectRequest, DeleteObjectResponse>(client.DeleteObjectAsync, request, token)
                                            .ConfigureAwait(false);

            return((response?.HttpStatusCode ?? HttpStatusCode.BadRequest) == HttpStatusCode.OK);
            // I don't know what status code translates to success
        }
示例#7
0
 public static Task <bool> FileAsync(IAccount account, Ess3Bucket bucket, Ess3File file)
 => FileAsync(account, bucket, file, CancellationToken.None);