1
1
#![ allow( clippy:: unwrap_used, clippy:: expect_used) ]
2
- use crate :: tests:: common:: { Entity , Op , ui_test_op} ;
2
+
3
+ use crate :: tests:: common:: { Entity , Op , req, ui_test_op} ;
3
4
use crate :: tests:: server:: run_test_server;
4
- use crate :: volumes:: models:: { Volume , VolumeCreatePayload , VolumeCreateResponse } ;
5
+ use crate :: volumes:: models:: { Volume , VolumeCreatePayload , VolumeCreateResponse , VolumesResponse } ;
5
6
use core_metastore:: Volume as MetastoreVolume ;
6
7
use core_metastore:: {
7
8
AwsAccessKeyCredentials , AwsCredentials , FileVolume as MetastoreFileVolume ,
8
9
S3Volume as MetastoreS3Volume , VolumeType as MetastoreVolumeType ,
9
10
} ;
11
+ use http:: Method ;
10
12
use serde_json;
11
13
12
14
#[ tokio:: test]
13
15
#[ allow( clippy:: too_many_lines) ]
14
- async fn test_ui_volumes_memory ( ) {
16
+ async fn test_ui_volumes ( ) {
15
17
let addr = run_test_server ( ) . await ;
18
+ let client = reqwest:: Client :: new ( ) ;
16
19
17
20
// memory volume with empty ident create Ok
18
21
let expected = VolumeCreatePayload {
19
22
data : Volume :: from ( MetastoreVolume {
20
- ident : String :: new ( ) ,
23
+ ident : "embucket1" . to_string ( ) ,
21
24
volume : MetastoreVolumeType :: Memory ,
22
25
} ) ,
23
26
} ;
24
27
let res = ui_test_op ( addr, Op :: Create , None , & Entity :: Volume ( expected. clone ( ) ) ) . await ;
25
28
assert_eq ! ( 200 , res. status( ) ) ;
26
29
let created = res. json :: < VolumeCreateResponse > ( ) . await . unwrap ( ) ;
27
30
assert_eq ! ( expected. data, created. data) ;
28
- }
29
-
30
- #[ tokio:: test]
31
- #[ allow( clippy:: too_many_lines) ]
32
- async fn test_ui_volumes_file ( ) {
33
- let addr = run_test_server ( ) . await ;
34
31
35
32
// memory volume with empty ident create Ok
36
- let payload = r#"{"name":"","type": "file", "path":"/tmp/data"}"# ;
33
+ let payload = r#"{"name":"embucket2 ","type": "file", "path":"/tmp/data"}"# ;
37
34
let expected: VolumeCreatePayload = serde_json:: from_str ( payload) . unwrap ( ) ;
38
35
let res = ui_test_op ( addr, Op :: Create , None , & Entity :: Volume ( expected. clone ( ) ) ) . await ;
39
36
// let res = create_test_volume(addr, &expected).await;
@@ -43,7 +40,7 @@ async fn test_ui_volumes_file() {
43
40
44
41
let expected = VolumeCreatePayload {
45
42
data : Volume :: from ( MetastoreVolume {
46
- ident : String :: new ( ) ,
43
+ ident : "embucket2" . to_string ( ) ,
47
44
volume : MetastoreVolumeType :: File ( MetastoreFileVolume {
48
45
path : "/tmp/data" . to_string ( ) ,
49
46
} ) ,
@@ -52,17 +49,11 @@ async fn test_ui_volumes_file() {
52
49
let res = ui_test_op ( addr, Op :: Create , None , & Entity :: Volume ( expected. clone ( ) ) ) . await ;
53
50
// let res = create_test_volume(addr, &expected).await;
54
51
assert_eq ! ( 409 , res. status( ) ) ;
55
- }
56
-
57
- #[ tokio:: test]
58
- #[ allow( clippy:: too_many_lines) ]
59
- async fn test_ui_volumes_s3 ( ) {
60
- let addr = run_test_server ( ) . await ;
61
52
62
53
// memory volume with empty ident create Ok
63
54
let expected = VolumeCreatePayload {
64
55
data : Volume :: from ( MetastoreVolume {
65
- ident : String :: new ( ) ,
56
+ ident : "embucket3" . to_string ( ) ,
66
57
volume : MetastoreVolumeType :: S3 ( MetastoreS3Volume {
67
58
region : Some ( "us-west-1" . to_string ( ) ) ,
68
59
bucket : Some ( "embucket" . to_string ( ) ) ,
@@ -81,4 +72,151 @@ async fn test_ui_volumes_s3() {
81
72
assert_eq ! ( 200 , res. status( ) ) ;
82
73
let created = res. json :: < VolumeCreateResponse > ( ) . await . unwrap ( ) ;
83
74
assert_eq ! ( expected. data, created. data) ;
75
+
76
+ //Get list volumes
77
+ let res = req (
78
+ & client,
79
+ Method :: GET ,
80
+ & format ! ( "http://{addr}/ui/volumes" , ) . to_string ( ) ,
81
+ String :: new ( ) ,
82
+ )
83
+ . await
84
+ . unwrap ( ) ;
85
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
86
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
87
+ assert_eq ! ( 3 , volumes_response. items. len( ) ) ;
88
+ assert_eq ! (
89
+ "embucket3" . to_string( ) ,
90
+ volumes_response. items. first( ) . unwrap( ) . name
91
+ ) ;
92
+
93
+ //Get list volumes with parameters
94
+ let res = req (
95
+ & client,
96
+ Method :: GET ,
97
+ & format ! ( "http://{addr}/ui/volumes?limit=2" , ) . to_string ( ) ,
98
+ String :: new ( ) ,
99
+ )
100
+ . await
101
+ . unwrap ( ) ;
102
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
103
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
104
+ assert_eq ! ( 2 , volumes_response. items. len( ) ) ;
105
+ assert_eq ! (
106
+ "embucket2" . to_string( ) ,
107
+ volumes_response. items. last( ) . unwrap( ) . name
108
+ ) ;
109
+
110
+ //Get list volumes with parameters
111
+ let res = req (
112
+ & client,
113
+ Method :: GET ,
114
+ & format ! ( "http://{addr}/ui/volumes?offset=2" , ) . to_string ( ) ,
115
+ String :: new ( ) ,
116
+ )
117
+ . await
118
+ . unwrap ( ) ;
119
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
120
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
121
+ assert_eq ! ( 1 , volumes_response. items. len( ) ) ;
122
+ assert_eq ! (
123
+ "embucket1" . to_string( ) ,
124
+ volumes_response. items. first( ) . unwrap( ) . name
125
+ ) ;
126
+
127
+ //Create a volume with diffrent name
128
+ let expected = VolumeCreatePayload {
129
+ data : Volume :: from ( MetastoreVolume {
130
+ ident : "icebucket1" . to_string ( ) ,
131
+ volume : MetastoreVolumeType :: Memory ,
132
+ } ) ,
133
+ } ;
134
+ let res = ui_test_op ( addr, Op :: Create , None , & Entity :: Volume ( expected. clone ( ) ) ) . await ;
135
+ assert_eq ! ( 200 , res. status( ) ) ;
136
+ let created = res. json :: < VolumeCreateResponse > ( ) . await . unwrap ( ) ;
137
+ assert_eq ! ( expected. data, created. data) ;
138
+
139
+ //Get list volumes
140
+ let res = req (
141
+ & client,
142
+ Method :: GET ,
143
+ & format ! ( "http://{addr}/ui/volumes" , ) . to_string ( ) ,
144
+ String :: new ( ) ,
145
+ )
146
+ . await
147
+ . unwrap ( ) ;
148
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
149
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
150
+ assert_eq ! ( 4 , volumes_response. items. len( ) ) ;
151
+
152
+ //Get list volumes with parameters
153
+ let res = req (
154
+ & client,
155
+ Method :: GET ,
156
+ & format ! ( "http://{addr}/ui/volumes?search=embucket" , ) . to_string ( ) ,
157
+ String :: new ( ) ,
158
+ )
159
+ . await
160
+ . unwrap ( ) ;
161
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
162
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
163
+ assert_eq ! ( 3 , volumes_response. items. len( ) ) ;
164
+
165
+ //Get list volumes with parameters
166
+ let res = req (
167
+ & client,
168
+ Method :: GET ,
169
+ & format ! ( "http://{addr}/ui/volumes?search=embucket&orderDirection=ASC" , ) . to_string ( ) ,
170
+ String :: new ( ) ,
171
+ )
172
+ . await
173
+ . unwrap ( ) ;
174
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
175
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
176
+ assert_eq ! ( 3 , volumes_response. items. len( ) ) ;
177
+ assert_eq ! (
178
+ "embucket1" . to_string( ) ,
179
+ volumes_response. items. first( ) . unwrap( ) . name
180
+ ) ;
181
+
182
+ //Get list volumes with parameters
183
+ let res = req (
184
+ & client,
185
+ Method :: GET ,
186
+ & format ! ( "http://{addr}/ui/volumes?search=ice" , ) . to_string ( ) ,
187
+ String :: new ( ) ,
188
+ )
189
+ . await
190
+ . unwrap ( ) ;
191
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
192
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
193
+ assert_eq ! ( 1 , volumes_response. items. len( ) ) ;
194
+ assert_eq ! (
195
+ "icebucket1" . to_string( ) ,
196
+ volumes_response. items. first( ) . unwrap( ) . name
197
+ ) ;
198
+
199
+ //Delete volume
200
+ let res = req (
201
+ & client,
202
+ Method :: DELETE ,
203
+ & format ! ( "http://{addr}/ui/volumes/embucket1" , ) . to_string ( ) ,
204
+ String :: new ( ) ,
205
+ )
206
+ . await
207
+ . unwrap ( ) ;
208
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
209
+
210
+ //Get list volumes
211
+ let res = req (
212
+ & client,
213
+ Method :: GET ,
214
+ & format ! ( "http://{addr}/ui/volumes" , ) . to_string ( ) ,
215
+ String :: new ( ) ,
216
+ )
217
+ . await
218
+ . unwrap ( ) ;
219
+ assert_eq ! ( http:: StatusCode :: OK , res. status( ) ) ;
220
+ let volumes_response: VolumesResponse = res. json ( ) . await . unwrap ( ) ;
221
+ assert_eq ! ( 3 , volumes_response. items. len( ) ) ;
84
222
}
0 commit comments