@@ -6,12 +6,13 @@ mod tests {
66 use vss_client:: error:: VssError ;
77
88 use vss_client:: types:: {
9- ErrorCode , ErrorResponse , GetObjectRequest , GetObjectResponse , KeyValue , ListKeyVersionsRequest ,
10- ListKeyVersionsResponse , PutObjectRequest , PutObjectResponse ,
9+ DeleteObjectRequest , DeleteObjectResponse , ErrorCode , ErrorResponse , GetObjectRequest , GetObjectResponse ,
10+ KeyValue , ListKeyVersionsRequest , ListKeyVersionsResponse , PutObjectRequest , PutObjectResponse ,
1111 } ;
1212
1313 const GET_OBJECT_ENDPOINT : & ' static str = "/getObject" ;
1414 const PUT_OBJECT_ENDPOINT : & ' static str = "/putObjects" ;
15+ const DELETE_OBJECT_ENDPOINT : & ' static str = "/deleteObject" ;
1516 const LIST_KEY_VERSIONS_ENDPOINT : & ' static str = "/listKeyVersions" ;
1617
1718 #[ tokio:: test]
@@ -55,6 +56,7 @@ mod tests {
5556 store_id : "store" . to_string ( ) ,
5657 global_version : Some ( 4 ) ,
5758 transaction_items : vec ! [ KeyValue { key: "k1" . to_string( ) , version: 2 , value: b"k1v3" . to_vec( ) } ] ,
59+ delete_items : vec ! [ ] ,
5860 } ;
5961 let mock_response = PutObjectResponse :: default ( ) ;
6062
@@ -76,6 +78,36 @@ mod tests {
7678 mock_server. expect ( 1 ) . assert ( ) ;
7779 }
7880
81+ #[ tokio:: test]
82+ async fn test_delete ( ) {
83+ // Spin-up mock server with mock response for given request.
84+ let base_url = mockito:: server_url ( ) . to_string ( ) ;
85+
86+ // Set up the mock request/response.
87+ let request = DeleteObjectRequest {
88+ store_id : "store" . to_string ( ) ,
89+ key_value : Some ( KeyValue { key : "k1" . to_string ( ) , version : 2 , value : b"k1v3" . to_vec ( ) } ) ,
90+ } ;
91+ let mock_response = DeleteObjectResponse :: default ( ) ;
92+
93+ // Register the mock endpoint with the mockito server.
94+ let mock_server = mockito:: mock ( "POST" , DELETE_OBJECT_ENDPOINT )
95+ . match_body ( request. encode_to_vec ( ) )
96+ . with_status ( 200 )
97+ . with_body ( mock_response. encode_to_vec ( ) )
98+ . create ( ) ;
99+
100+ // Create a new VssClient with the mock server URL.
101+ let vss_client = VssClient :: new ( & base_url) ;
102+ let actual_result = vss_client. delete_object ( & request) . await . unwrap ( ) ;
103+
104+ let expected_result = & mock_response;
105+ assert_eq ! ( actual_result, * expected_result) ;
106+
107+ // Verify server endpoint was called exactly once.
108+ mock_server. expect ( 1 ) . assert ( ) ;
109+ }
110+
79111 #[ tokio:: test]
80112 async fn test_list_key_versions ( ) {
81113 // Spin-up mock server with mock response for given request.
@@ -142,10 +174,19 @@ mod tests {
142174 store_id : "store" . to_string ( ) ,
143175 global_version : Some ( 4 ) ,
144176 transaction_items : vec ! [ KeyValue { key: "k1" . to_string( ) , version: 2 , value: b"k1v3" . to_vec( ) } ] ,
177+ delete_items : vec ! [ ] ,
145178 } )
146179 . await ;
147180 assert ! ( matches!( put_result. unwrap_err( ) , VssError :: InvalidRequestError { .. } ) ) ;
148181
182+ let delete_result = vss_client
183+ . delete_object ( & DeleteObjectRequest {
184+ store_id : "store" . to_string ( ) ,
185+ key_value : Some ( KeyValue { key : "k1" . to_string ( ) , version : 2 , value : b"k1v3" . to_vec ( ) } ) ,
186+ } )
187+ . await ;
188+ assert ! ( matches!( delete_result. unwrap_err( ) , VssError :: InvalidRequestError { .. } ) ) ;
189+
149190 let list_result = vss_client
150191 . list_key_versions ( & ListKeyVersionsRequest {
151192 store_id : "store" . to_string ( ) ,
@@ -156,8 +197,8 @@ mod tests {
156197 . await ;
157198 assert ! ( matches!( list_result. unwrap_err( ) , VssError :: InvalidRequestError { .. } ) ) ;
158199
159- // Verify 3 requests hit the server
160- mock_server. expect ( 3 ) . assert ( ) ;
200+ // Verify 4 requests hit the server
201+ mock_server. expect ( 4 ) . assert ( ) ;
161202 }
162203
163204 #[ tokio:: test]
@@ -178,6 +219,7 @@ mod tests {
178219 store_id : "store" . to_string ( ) ,
179220 global_version : Some ( 4 ) ,
180221 transaction_items : vec ! [ KeyValue { key: "k1" . to_string( ) , version: 2 , value: b"k1v3" . to_vec( ) } ] ,
222+ delete_items : vec ! [ ] ,
181223 } )
182224 . await ;
183225 assert ! ( matches!( put_result. unwrap_err( ) , VssError :: ConflictError { .. } ) ) ;
@@ -211,10 +253,19 @@ mod tests {
211253 store_id : "store" . to_string ( ) ,
212254 global_version : Some ( 4 ) ,
213255 transaction_items : vec ! [ KeyValue { key: "k1" . to_string( ) , version: 2 , value: b"k1v3" . to_vec( ) } ] ,
256+ delete_items : vec ! [ ] ,
214257 } )
215258 . await ;
216259 assert ! ( matches!( put_result. unwrap_err( ) , VssError :: InternalServerError { .. } ) ) ;
217260
261+ let delete_result = vss_client
262+ . delete_object ( & DeleteObjectRequest {
263+ store_id : "store" . to_string ( ) ,
264+ key_value : Some ( KeyValue { key : "k1" . to_string ( ) , version : 2 , value : b"k1v3" . to_vec ( ) } ) ,
265+ } )
266+ . await ;
267+ assert ! ( matches!( delete_result. unwrap_err( ) , VssError :: InternalServerError { .. } ) ) ;
268+
218269 let list_result = vss_client
219270 . list_key_versions ( & ListKeyVersionsRequest {
220271 store_id : "store" . to_string ( ) ,
@@ -225,8 +276,8 @@ mod tests {
225276 . await ;
226277 assert ! ( matches!( list_result. unwrap_err( ) , VssError :: InternalServerError { .. } ) ) ;
227278
228- // Verify 3 requests hit the server
229- mock_server. expect ( 3 ) . assert ( ) ;
279+ // Verify 4 requests hit the server
280+ mock_server. expect ( 4 ) . assert ( ) ;
230281 }
231282
232283 #[ tokio:: test]
@@ -248,6 +299,7 @@ mod tests {
248299 store_id : "store" . to_string ( ) ,
249300 global_version : Some ( 4 ) ,
250301 transaction_items : vec ! [ KeyValue { key: "k1" . to_string( ) , version: 2 , value: b"k1v3" . to_vec( ) } ] ,
302+ delete_items : vec ! [ ] ,
251303 } ;
252304 let put_result = vss_client. put_object ( & put_request) . await ;
253305 assert ! ( matches!( put_result. unwrap_err( ) , VssError :: InternalError { .. } ) ) ;
0 commit comments