@@ -54,33 +54,151 @@ mod tests {
5454
5555 use crate :: test_support:: * ;
5656
57+ // -----------------------------------------------------------------------
58+ // list()
59+ // -----------------------------------------------------------------------
60+
5761 #[ tokio:: test]
58- async fn test_api_keys_list ( ) {
62+ async fn test_api_keys_list_success ( ) {
5963 let _lock = lock_env ( ) . await ;
6064 let mut s = mockito:: Server :: new_async ( ) . await ;
6165 let cfg = test_config ( & s. url ( ) ) ;
6266 mock_all ( & mut s, r#"{"data": []}"# ) . await ;
63- let _ = super :: list ( & cfg) . await ;
67+ let result = super :: list ( & cfg) . await ;
68+ assert ! ( result. is_ok( ) , "list should succeed: {:?}" , result. err( ) ) ;
69+ cleanup_env ( ) ;
70+ }
71+
72+ #[ tokio:: test]
73+ async fn test_api_keys_list_error_403 ( ) {
74+ let _lock = lock_env ( ) . await ;
75+ let mut server = mockito:: Server :: new_async ( ) . await ;
76+ let cfg = test_config ( & server. url ( ) ) ;
77+ let _mock = server
78+ . mock ( "GET" , mockito:: Matcher :: Any )
79+ . with_status ( 403 )
80+ . with_header ( "content-type" , "application/json" )
81+ . with_body ( r#"{"errors":["Forbidden"]}"# )
82+ . create_async ( )
83+ . await ;
84+ let result = super :: list ( & cfg) . await ;
85+ assert ! ( result. is_err( ) , "expected error on 403" ) ;
86+ let err_msg = result. unwrap_err ( ) . to_string ( ) ;
87+ assert ! (
88+ err_msg. contains( "failed to list API keys" ) ,
89+ "error should mention failed listing: {err_msg}"
90+ ) ;
6491 cleanup_env ( ) ;
6592 }
6693
94+ // -----------------------------------------------------------------------
95+ // get()
96+ // -----------------------------------------------------------------------
97+
6798 #[ tokio:: test]
68- async fn test_api_keys_get ( ) {
99+ async fn test_api_keys_get_success ( ) {
69100 let _lock = lock_env ( ) . await ;
70101 let mut s = mockito:: Server :: new_async ( ) . await ;
71102 let cfg = test_config ( & s. url ( ) ) ;
72103 mock_all ( & mut s, r#"{"data": {}}"# ) . await ;
73- let _ = super :: get ( & cfg, "k1" ) . await ;
104+ let result = super :: get ( & cfg, "key-id-123" ) . await ;
105+ assert ! ( result. is_ok( ) , "get should succeed: {:?}" , result. err( ) ) ;
106+ cleanup_env ( ) ;
107+ }
108+
109+ #[ tokio:: test]
110+ async fn test_api_keys_get_error_404 ( ) {
111+ let _lock = lock_env ( ) . await ;
112+ let mut server = mockito:: Server :: new_async ( ) . await ;
113+ let cfg = test_config ( & server. url ( ) ) ;
114+ let _mock = server
115+ . mock ( "GET" , mockito:: Matcher :: Any )
116+ . with_status ( 404 )
117+ . with_header ( "content-type" , "application/json" )
118+ . with_body ( r#"{"errors":["Not Found"]}"# )
119+ . create_async ( )
120+ . await ;
121+ let result = super :: get ( & cfg, "missing" ) . await ;
122+ assert ! ( result. is_err( ) , "expected error on 404" ) ;
123+ let err_msg = result. unwrap_err ( ) . to_string ( ) ;
124+ assert ! (
125+ err_msg. contains( "failed to get API key" ) ,
126+ "error should mention failed get: {err_msg}"
127+ ) ;
74128 cleanup_env ( ) ;
75129 }
76130
131+ // -----------------------------------------------------------------------
132+ // create()
133+ // -----------------------------------------------------------------------
134+
77135 #[ tokio:: test]
78- async fn test_api_keys_delete ( ) {
136+ async fn test_api_keys_create_success ( ) {
137+ let _lock = lock_env ( ) . await ;
138+ let mut s = mockito:: Server :: new_async ( ) . await ;
139+ let cfg = test_config ( & s. url ( ) ) ;
140+ mock_all ( & mut s, r#"{"data": {"id":"k1","type":"api_keys"}}"# ) . await ;
141+ let result = super :: create ( & cfg, "my-new-key" ) . await ;
142+ assert ! ( result. is_ok( ) , "create should succeed: {:?}" , result. err( ) ) ;
143+ cleanup_env ( ) ;
144+ }
145+
146+ #[ tokio:: test]
147+ async fn test_api_keys_create_error_400 ( ) {
148+ let _lock = lock_env ( ) . await ;
149+ let mut server = mockito:: Server :: new_async ( ) . await ;
150+ let cfg = test_config ( & server. url ( ) ) ;
151+ let _mock = server
152+ . mock ( "POST" , mockito:: Matcher :: Any )
153+ . with_status ( 400 )
154+ . with_header ( "content-type" , "application/json" )
155+ . with_body ( r#"{"errors":["Invalid name"]}"# )
156+ . create_async ( )
157+ . await ;
158+ let result = super :: create ( & cfg, "" ) . await ;
159+ assert ! ( result. is_err( ) , "expected error on 400" ) ;
160+ let err_msg = result. unwrap_err ( ) . to_string ( ) ;
161+ assert ! (
162+ err_msg. contains( "failed to create API key" ) ,
163+ "error should mention failed create: {err_msg}"
164+ ) ;
165+ cleanup_env ( ) ;
166+ }
167+
168+ // -----------------------------------------------------------------------
169+ // delete()
170+ // -----------------------------------------------------------------------
171+
172+ #[ tokio:: test]
173+ async fn test_api_keys_delete_success ( ) {
79174 let _lock = lock_env ( ) . await ;
80175 let mut s = mockito:: Server :: new_async ( ) . await ;
81176 let cfg = test_config ( & s. url ( ) ) ;
82177 mock_all ( & mut s, r#"{}"# ) . await ;
83- let _ = super :: delete ( & cfg, "k1" ) . await ;
178+ let result = super :: delete ( & cfg, "k1" ) . await ;
179+ assert ! ( result. is_ok( ) , "delete should succeed: {:?}" , result. err( ) ) ;
180+ cleanup_env ( ) ;
181+ }
182+
183+ #[ tokio:: test]
184+ async fn test_api_keys_delete_error_404 ( ) {
185+ let _lock = lock_env ( ) . await ;
186+ let mut server = mockito:: Server :: new_async ( ) . await ;
187+ let cfg = test_config ( & server. url ( ) ) ;
188+ let _mock = server
189+ . mock ( "DELETE" , mockito:: Matcher :: Any )
190+ . with_status ( 404 )
191+ . with_header ( "content-type" , "application/json" )
192+ . with_body ( r#"{"errors":["Not Found"]}"# )
193+ . create_async ( )
194+ . await ;
195+ let result = super :: delete ( & cfg, "nope" ) . await ;
196+ assert ! ( result. is_err( ) , "expected error on 404" ) ;
197+ let err_msg = result. unwrap_err ( ) . to_string ( ) ;
198+ assert ! (
199+ err_msg. contains( "failed to delete API key" ) ,
200+ "error should mention failed delete: {err_msg}"
201+ ) ;
84202 cleanup_env ( ) ;
85203 }
86204}
0 commit comments