diff --git a/example/test.dart b/example/test.dart new file mode 100644 index 0000000000000000000000000000000000000000..ea79542418cb5a4053ba0a15aaadda7fc480e4d8 --- /dev/null +++ b/example/test.dart @@ -0,0 +1,16 @@ +import 'package:minio/minio.dart'; + +void main() async { + final minio = Minio( + endPoint: 'play.min.io', + accessKey: 'Q3AM3UQ867SPQQA43P2F', + secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG', + useSSL: true, + // enableTrace: true, + ); + + // await minio.makeBucket('test00'); + await minio.putObject('test00', 'new folder/a.txt', Stream.value([1, 2, 3])); + await minio.putObject('test00', 'new folder/b.txt', Stream.value([1, 2, 3])); + print(await minio.listAllObjects('test00', prefix: 'new folder/')); +} diff --git a/lib/src/minio_models.dart b/lib/src/minio_models.dart index f97abaeb7334e358fe1b64ff977161db71326dff..030ec80ae4c39c5ceb3df5a1391492c032e46ae7 100644 --- a/lib/src/minio_models.dart +++ b/lib/src/minio_models.dart @@ -19,7 +19,7 @@ class ListObjectsResult { @override String toString() { - return 'ListObjectsChunk{objects: $objects, prefixes: $prefixes}'; + return '$runtimeType{objects: $objects, prefixes: $prefixes}'; } } diff --git a/test/minio_test.dart b/test/minio_test.dart index 481220aa1d2c5c9ec87fa5f6a5c67b56ac8d96c7..0cde5e72dc97b5e827e626f4de963672b346c63c 100644 --- a/test/minio_test.dart +++ b/test/minio_test.dart @@ -25,6 +25,7 @@ void main() { testMakeBucket(); testRemoveBucket(); testRemoveObject(); + testListObjects(); } void testConstruct() { @@ -91,17 +92,6 @@ void testListBuckets() { await minio.removeBucket(bucketName2); }); - test('listBuckets() can list buckets with spaces in name', () async { - final minio = getMinioClient(); - final bucketName = uniqueName() + ' folder'; - await minio.makeBucket(bucketName); - - final buckets = await minio.listBuckets(); - expect(buckets.any((b) => b.name == bucketName), isTrue); - - await minio.removeBucket(bucketName); - }); - test('listBuckets() fails due to wrong access key', () async { final minio = getMinioClient(accessKey: 'incorrect-access-key'); @@ -619,3 +609,57 @@ void testRemoveObject() { }); }); } + +void testListObjects() { + group('listAllObjects()', () { + final minio = getMinioClient(); + final bucketName = uniqueName(); + final objectName = uniqueName(); + final data = [1, 2, 3, 4, 5]; + + setUpAll(() async { + await minio.makeBucket(bucketName); + await minio.putObject(bucketName, objectName, Stream.value(data)); + }); + + tearDownAll(() async { + await minio.removeObject(bucketName, objectName); + await minio.removeBucket(bucketName); + }); + + test('succeeds', () async { + final result = await minio.listAllObjects(bucketName); + expect(result.objects.map((e) => e.key).contains(objectName), isTrue); + }); + + test('fails on invalid bucket', () { + expect( + () async => await minio.listAllObjects('$bucketName-invalid'), + throwsA(isA<MinioError>()), + ); + }); + }); + + group('listAllObjects() works when prefix contains spaces', () { + final minio = getMinioClient(); + final bucket = uniqueName(); + final object = 'new folder/new file.txt'; + final data = [1, 2, 3, 4, 5]; + + setUpAll(() async { + await minio.makeBucket(bucket); + await minio.putObject(bucket, object, Stream.value(data)); + }); + + tearDownAll(() async { + await minio.removeObject(bucket, object); + await minio.removeBucket(bucket); + }); + + test('succeeds', () async { + final result = await minio.listAllObjects(bucket, prefix: 'new folder/'); + print(result); + expect(result.objects.map((e) => e.key).contains(object), isTrue); + }); + }); +}