2
2
// Licensed under the MIT License.
3
3
4
4
use azure_core_test:: { recorded, TestContext } ;
5
- use azure_storage_blob:: models:: BlobServiceClientGetPropertiesOptions ;
6
- use azure_storage_blob_test:: get_blob_service_client;
5
+ use azure_storage_blob:: models:: {
6
+ BlobServiceClientGetPropertiesOptions , BlobServiceClientListContainersSegmentOptions ,
7
+ } ;
8
+ use azure_storage_blob_test:: { get_blob_service_client, get_container_name} ;
9
+ use futures:: StreamExt ;
10
+ use std:: collections:: HashMap ;
7
11
use std:: error:: Error ;
8
12
9
13
#[ recorded:: test]
@@ -22,3 +26,99 @@ async fn test_get_service_properties(ctx: TestContext) -> Result<(), Box<dyn Err
22
26
assert ! ( hour_metrics. is_some( ) ) ;
23
27
Ok ( ( ) )
24
28
}
29
+
30
+ #[ recorded:: test]
31
+ async fn test_list_containers ( ctx : TestContext ) -> Result < ( ) , Box < dyn Error > > {
32
+ // Recording Setup
33
+ let recording = ctx. recording ( ) ;
34
+ let service_client = get_blob_service_client ( recording) ?;
35
+ let mut container_names = HashMap :: from ( [
36
+ ( get_container_name ( recording) , 0 ) ,
37
+ ( get_container_name ( recording) , 0 ) ,
38
+ ( get_container_name ( recording) , 0 ) ,
39
+ ( get_container_name ( recording) , 0 ) ,
40
+ ] ) ;
41
+ let mut container_clients = Vec :: new ( ) ;
42
+ for container_name in container_names. keys ( ) {
43
+ let container_client = service_client. blob_container_client ( container_name. to_string ( ) ) ;
44
+ container_client. create_container ( None ) . await ?;
45
+ container_clients. push ( container_client) ;
46
+ }
47
+
48
+ // Assert
49
+ let mut pager_response = service_client. list_containers ( None ) ?;
50
+ while let Some ( page) = pager_response. next ( ) . await {
51
+ let current_page = page. unwrap ( ) . into_body ( ) . await ?;
52
+ let container_list = current_page. container_items ;
53
+ for container in container_list {
54
+ let container_name = container. name . unwrap ( ) ;
55
+ if container_names. contains_key ( & container_name) {
56
+ container_names
57
+ . entry ( container_name)
58
+ . and_modify ( |val| * val = 1 ) ;
59
+ }
60
+ }
61
+ }
62
+
63
+ for containers in container_names {
64
+ assert_eq ! ( containers. 1 , 1 )
65
+ }
66
+
67
+ for container_client in container_clients {
68
+ container_client. delete_container ( None ) . await ?;
69
+ }
70
+
71
+ Ok ( ( ) )
72
+ }
73
+
74
+ #[ recorded:: test]
75
+ async fn test_list_containers_with_continuation ( ctx : TestContext ) -> Result < ( ) , Box < dyn Error > > {
76
+ // Recording Setup
77
+ let recording = ctx. recording ( ) ;
78
+ let service_client = get_blob_service_client ( recording) ?;
79
+ let mut container_names = HashMap :: from ( [
80
+ ( get_container_name ( recording) , 0 ) ,
81
+ ( get_container_name ( recording) , 0 ) ,
82
+ ( get_container_name ( recording) , 0 ) ,
83
+ ( get_container_name ( recording) , 0 ) ,
84
+ ] ) ;
85
+ let mut container_clients = Vec :: new ( ) ;
86
+ for container_name in container_names. keys ( ) {
87
+ let container_client = service_client. blob_container_client ( container_name. to_string ( ) ) ;
88
+ container_client. create_container ( None ) . await ?;
89
+ container_clients. push ( container_client) ;
90
+ }
91
+
92
+ let list_containers_options = BlobServiceClientListContainersSegmentOptions {
93
+ maxresults : Some ( 2 ) ,
94
+ ..Default :: default ( )
95
+ } ;
96
+
97
+ // Assert
98
+ let mut pager_response = service_client. list_containers ( Some ( list_containers_options) ) ?;
99
+ let mut page_count = 0 ;
100
+ while let Some ( page) = pager_response. next ( ) . await {
101
+ page_count += 1 ;
102
+ let current_page = page. unwrap ( ) . into_body ( ) . await ?;
103
+ let container_list = current_page. container_items ;
104
+ for container in container_list {
105
+ let container_name = container. name . unwrap ( ) ;
106
+ if container_names. contains_key ( & container_name) {
107
+ container_names
108
+ . entry ( container_name)
109
+ . and_modify ( |val| * val = 1 ) ;
110
+ }
111
+ }
112
+ }
113
+
114
+ for containers in container_names {
115
+ assert_eq ! ( containers. 1 , 1 )
116
+ }
117
+ assert ! ( page_count >= 2 ) ;
118
+
119
+ for container_client in container_clients {
120
+ container_client. delete_container ( None ) . await ?;
121
+ }
122
+
123
+ Ok ( ( ) )
124
+ }
0 commit comments