@@ -23,12 +23,7 @@ fn http_request(port: u16, method: &str, path: &str, body: Option<&str>) -> (u16
2323 http_request_with_auth ( port, method, path, body, None )
2424}
2525
26- fn authed_request (
27- h : & SmokeHarness ,
28- method : & str ,
29- path : & str ,
30- body : Option < & str > ,
31- ) -> ( u16 , String ) {
26+ fn authed_request ( h : & SmokeHarness , method : & str , path : & str , body : Option < & str > ) -> ( u16 , String ) {
3227 http_request_with_auth (
3328 h. server_port . expect ( "server not started" ) ,
3429 method,
@@ -234,7 +229,7 @@ fn test_api_get_issue() {
234229
235230 let _port = h. start_server ( ) ;
236231
237- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
232+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
238233 assert_eq ! ( status, 200 , "GET issue should return 200" ) ;
239234
240235 let json = parse_json ( & body) ;
@@ -258,7 +253,7 @@ fn test_api_list_issues() {
258253
259254 let _port = h. start_server ( ) ;
260255
261- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues" , None ) ;
256+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues" , None ) ;
262257 assert_eq ! ( status, 200 ) ;
263258
264259 let json = parse_json ( & body) ;
@@ -281,15 +276,15 @@ fn test_api_update_issue() {
281276 let _port = h. start_server ( ) ;
282277
283278 let payload = r#"{"title": "Updated title", "priority": "high"}"# ;
284- let ( status, body) = authed_request ( & h, "PATCH" , "/api/v1/issues/1" , Some ( payload) ) ;
279+ let ( status, body) = authed_request ( & h, "PATCH" , "/api/v1/issues/1" , Some ( payload) ) ;
285280 assert_eq ! ( status, 200 , "PATCH should return 200" ) ;
286281
287282 let json = parse_json ( & body) ;
288283 assert_eq ! ( json[ "title" ] , "Updated title" ) ;
289284 assert_eq ! ( json[ "priority" ] , "high" ) ;
290285
291286 // Verify the update persisted by fetching the issue again.
292- let ( status2, body2) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
287+ let ( status2, body2) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
293288 assert_eq ! ( status2, 200 ) ;
294289 let json2 = parse_json ( & body2) ;
295290 assert_eq ! ( json2[ "title" ] , "Updated title" ) ;
@@ -304,17 +299,17 @@ fn test_api_delete_issue() {
304299 let _port = h. start_server ( ) ;
305300
306301 // Verify it exists first.
307- let ( status, _) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
302+ let ( status, _) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
308303 assert_eq ! ( status, 200 ) ;
309304
310305 // Delete it.
311- let ( status, body) = authed_request ( & h, "DELETE" , "/api/v1/issues/1" , None ) ;
306+ let ( status, body) = authed_request ( & h, "DELETE" , "/api/v1/issues/1" , None ) ;
312307 assert_eq ! ( status, 200 , "DELETE should return 200" ) ;
313308 let json = parse_json ( & body) ;
314309 assert_eq ! ( json[ "ok" ] , true ) ;
315310
316311 // Verify it's gone.
317- let ( status, _) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
312+ let ( status, _) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
318313 assert_eq ! ( status, 404 , "Deleted issue should return 404" ) ;
319314}
320315
@@ -326,24 +321,24 @@ fn test_api_close_reopen() {
326321 let _port = h. start_server ( ) ;
327322
328323 // Close the issue.
329- let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues/1/close" , None ) ;
324+ let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues/1/close" , None ) ;
330325 assert_eq ! ( status, 200 , "Close should return 200" ) ;
331326 let json = parse_json ( & body) ;
332327 assert_eq ! ( json[ "status" ] , "closed" ) ;
333328
334329 // Verify via GET.
335- let ( _, body) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
330+ let ( _, body) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
336331 let json = parse_json ( & body) ;
337332 assert_eq ! ( json[ "status" ] , "closed" ) ;
338333
339334 // Reopen.
340- let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues/1/reopen" , None ) ;
335+ let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues/1/reopen" , None ) ;
341336 assert_eq ! ( status, 200 , "Reopen should return 200" ) ;
342337 let json = parse_json ( & body) ;
343338 assert_eq ! ( json[ "status" ] , "open" ) ;
344339
345340 // Verify via GET again.
346- let ( _, body) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
341+ let ( _, body) = authed_request ( & h, "GET" , "/api/v1/issues/1" , None ) ;
347342 let json = parse_json ( & body) ;
348343 assert_eq ! ( json[ "status" ] , "open" ) ;
349344}
@@ -357,7 +352,7 @@ fn test_api_404_unknown() {
357352 let mut h = SmokeHarness :: new ( ) ;
358353 let _port = h. start_server ( ) ;
359354
360- let ( status, _) = authed_request ( & h, "GET" , "/api/v1/nonexistent" , None ) ;
355+ let ( status, _) = authed_request ( & h, "GET" , "/api/v1/nonexistent" , None ) ;
361356 assert_eq ! (
362357 status, 404 ,
363358 "Unknown API path should return 404, got {}" ,
@@ -370,7 +365,7 @@ fn test_api_issue_not_found() {
370365 let mut h = SmokeHarness :: new ( ) ;
371366 let _port = h. start_server ( ) ;
372367
373- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/99999" , None ) ;
368+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/99999" , None ) ;
374369 assert_eq ! ( status, 404 , "Non-existent issue should return 404" ) ;
375370
376371 let json = parse_json ( & body) ;
@@ -406,15 +401,15 @@ fn test_api_sessions() {
406401 let _port = h. start_server ( ) ;
407402
408403 // Before starting a session, current session should be 404.
409- let ( status, _) = authed_request ( & h, "GET" , "/api/v1/sessions/current" , None ) ;
404+ let ( status, _) = authed_request ( & h, "GET" , "/api/v1/sessions/current" , None ) ;
410405 assert_eq ! (
411406 status, 404 ,
412407 "No session should exist initially, got {}" ,
413408 status
414409 ) ;
415410
416411 // Start a session.
417- let ( status, body) = authed_request ( & h, "POST" , "/api/v1/sessions/start" , Some ( "{}" ) ) ;
412+ let ( status, body) = authed_request ( & h, "POST" , "/api/v1/sessions/start" , Some ( "{}" ) ) ;
418413 assert_eq ! ( status, 200 , "Start session should return 200" ) ;
419414 let json = parse_json ( & body) ;
420415 assert ! ( json[ "id" ] . as_i64( ) . is_some( ) , "Session should have an id" ) ;
@@ -424,7 +419,7 @@ fn test_api_sessions() {
424419 ) ;
425420
426421 // Get current session.
427- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/sessions/current" , None ) ;
422+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/sessions/current" , None ) ;
428423 assert_eq ! ( status, 200 , "Current session should now exist" ) ;
429424 let json = parse_json ( & body) ;
430425 assert ! ( json[ "id" ] . as_i64( ) . is_some( ) ) ;
@@ -441,7 +436,7 @@ fn test_api_sessions() {
441436 assert_eq ! ( json[ "ok" ] , true ) ;
442437
443438 // After ending, current session should be 404 again.
444- let ( status, _) = authed_request ( & h, "GET" , "/api/v1/sessions/current" , None ) ;
439+ let ( status, _) = authed_request ( & h, "GET" , "/api/v1/sessions/current" , None ) ;
445440 assert_eq ! (
446441 status, 404 ,
447442 "After ending session, current should be 404, got {}" ,
@@ -459,28 +454,28 @@ fn test_api_milestones() {
459454 let _port = h. start_server ( ) ;
460455
461456 // List milestones (should be empty initially).
462- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/milestones" , None ) ;
457+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/milestones" , None ) ;
463458 assert_eq ! ( status, 200 ) ;
464459 let json = parse_json ( & body) ;
465460 assert_eq ! ( json[ "total" ] , 0 ) ;
466461
467462 // Create a milestone.
468463 let payload = r#"{"name": "v1.0", "description": "First release"}"# ;
469- let ( status, body) = authed_request ( & h, "POST" , "/api/v1/milestones" , Some ( payload) ) ;
464+ let ( status, body) = authed_request ( & h, "POST" , "/api/v1/milestones" , Some ( payload) ) ;
470465 assert_eq ! ( status, 200 , "Create milestone should return 200" ) ;
471466 let created = parse_json ( & body) ;
472467 assert_eq ! ( created[ "name" ] , "v1.0" ) ;
473468 assert_eq ! ( created[ "status" ] , "open" ) ;
474469 let ms_id = created[ "id" ] . as_i64 ( ) . expect ( "Milestone should have id" ) ;
475470
476471 // List milestones (should have 1).
477- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/milestones" , None ) ;
472+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/milestones" , None ) ;
478473 assert_eq ! ( status, 200 ) ;
479474 let json = parse_json ( & body) ;
480475 assert_eq ! ( json[ "total" ] , 1 ) ;
481476
482477 // Get by ID.
483- let ( status, body) = authed_request ( & h, "GET" , & format ! ( "/api/v1/milestones/{}" , ms_id) , None ) ;
478+ let ( status, body) = authed_request ( & h, "GET" , & format ! ( "/api/v1/milestones/{}" , ms_id) , None ) ;
484479 assert_eq ! ( status, 200 ) ;
485480 let json = parse_json ( & body) ;
486481 assert_eq ! ( json[ "name" ] , "v1.0" ) ;
@@ -504,7 +499,7 @@ fn test_api_search() {
504499 let _port = h. start_server ( ) ;
505500
506501 // Search for "authentication" — should find 2 issues.
507- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/search?q=authentication" , None ) ;
502+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/search?q=authentication" , None ) ;
508503 assert_eq ! ( status, 200 ) ;
509504 let json = parse_json ( & body) ;
510505 let total = json[ "total" ] . as_u64 ( ) . unwrap_or ( 0 ) ;
@@ -537,7 +532,7 @@ fn test_api_config() {
537532 let mut h = SmokeHarness :: new ( ) ;
538533 let _port = h. start_server ( ) ;
539534
540- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/config" , None ) ;
535+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/config" , None ) ;
541536 assert_eq ! ( status, 200 , "GET config should return 200" ) ;
542537
543538 let json = parse_json ( & body) ;
@@ -574,7 +569,7 @@ fn test_api_sync_status() {
574569 let mut h = SmokeHarness :: new ( ) ;
575570 let _port = h. start_server ( ) ;
576571
577- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/sync/status" , None ) ;
572+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/sync/status" , None ) ;
578573 assert_eq ! ( status, 200 , "GET sync/status should return 200" ) ;
579574
580575 let json = parse_json ( & body) ;
@@ -657,7 +652,7 @@ fn test_api_create_issue_with_description() {
657652
658653 let payload =
659654 r#"{"title": "Described issue", "description": "This is the details", "priority": "low"}"# ;
660- let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues" , Some ( payload) ) ;
655+ let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues" , Some ( payload) ) ;
661656 assert ! ( status == 200 || status == 201 ) ;
662657
663658 let json = parse_json ( & body) ;
@@ -672,7 +667,7 @@ fn test_api_create_issue_default_priority() {
672667 let _port = h. start_server ( ) ;
673668
674669 let payload = r#"{"title": "Default priority issue"}"# ;
675- let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues" , Some ( payload) ) ;
670+ let ( status, body) = authed_request ( & h, "POST" , "/api/v1/issues" , Some ( payload) ) ;
676671 assert ! ( status == 200 || status == 201 ) ;
677672
678673 let json = parse_json ( & body) ;
@@ -688,7 +683,7 @@ fn test_api_update_nonexistent_issue() {
688683 let _port = h. start_server ( ) ;
689684
690685 let payload = r#"{"title": "New title"}"# ;
691- let ( status, _) = authed_request ( & h, "PATCH" , "/api/v1/issues/99999" , Some ( payload) ) ;
686+ let ( status, _) = authed_request ( & h, "PATCH" , "/api/v1/issues/99999" , Some ( payload) ) ;
692687 assert_eq ! ( status, 404 , "Updating non-existent issue should return 404" ) ;
693688}
694689
@@ -697,7 +692,7 @@ fn test_api_delete_nonexistent_issue() {
697692 let mut h = SmokeHarness :: new ( ) ;
698693 let _port = h. start_server ( ) ;
699694
700- let ( status, _) = authed_request ( & h, "DELETE" , "/api/v1/issues/99999" , None ) ;
695+ let ( status, _) = authed_request ( & h, "DELETE" , "/api/v1/issues/99999" , None ) ;
701696 assert_eq ! ( status, 404 , "Deleting non-existent issue should return 404" ) ;
702697}
703698
@@ -706,7 +701,7 @@ fn test_api_close_nonexistent_issue() {
706701 let mut h = SmokeHarness :: new ( ) ;
707702 let _port = h. start_server ( ) ;
708703
709- let ( status, _) = authed_request ( & h, "POST" , "/api/v1/issues/99999/close" , None ) ;
704+ let ( status, _) = authed_request ( & h, "POST" , "/api/v1/issues/99999/close" , None ) ;
710705 assert_eq ! ( status, 404 , "Closing non-existent issue should return 404" ) ;
711706}
712707
@@ -715,7 +710,7 @@ fn test_api_list_issues_empty() {
715710 let mut h = SmokeHarness :: new ( ) ;
716711 let _port = h. start_server ( ) ;
717712
718- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues" , None ) ;
713+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues" , None ) ;
719714 assert_eq ! ( status, 200 ) ;
720715
721716 let json = parse_json ( & body) ;
@@ -734,7 +729,7 @@ fn test_api_issues_blocked_and_ready() {
734729 let _port = h. start_server ( ) ;
735730
736731 // Both should appear in the "ready" list (no blockers).
737- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/ready" , None ) ;
732+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/ready" , None ) ;
738733 assert_eq ! ( status, 200 ) ;
739734 let json = parse_json ( & body) ;
740735 let total = json[ "total" ] . as_u64 ( ) . unwrap_or ( 0 ) ;
@@ -745,7 +740,7 @@ fn test_api_issues_blocked_and_ready() {
745740 ) ;
746741
747742 // Blocked list should be empty (no dependencies set).
748- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/blocked" , None ) ;
743+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/issues/blocked" , None ) ;
749744 assert_eq ! ( status, 200 ) ;
750745 let json = parse_json ( & body) ;
751746 assert_eq ! ( json[ "total" ] , 0 , "No issues should be blocked initially" ) ;
@@ -756,7 +751,7 @@ fn test_api_milestone_not_found() {
756751 let mut h = SmokeHarness :: new ( ) ;
757752 let _port = h. start_server ( ) ;
758753
759- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/milestones/99999" , None ) ;
754+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/milestones/99999" , None ) ;
760755 assert_eq ! ( status, 404 ) ;
761756
762757 let json = parse_json ( & body) ;
@@ -769,7 +764,7 @@ fn test_api_search_empty_query() {
769764 let _port = h. start_server ( ) ;
770765
771766 // Empty query should return 400.
772- let ( status, _) = authed_request ( & h, "GET" , "/api/v1/search?q=" , None ) ;
767+ let ( status, _) = authed_request ( & h, "GET" , "/api/v1/search?q=" , None ) ;
773768 assert_eq ! (
774769 status, 400 ,
775770 "Empty search query should return 400, got {}" ,
@@ -782,7 +777,7 @@ fn test_api_search_no_results() {
782777 let mut h = SmokeHarness :: new ( ) ;
783778 let _port = h. start_server ( ) ;
784779
785- let ( status, body) = authed_request ( & h, "GET" , "/api/v1/search?q=xyznonexistent" , None ) ;
780+ let ( status, body) = authed_request ( & h, "GET" , "/api/v1/search?q=xyznonexistent" , None ) ;
786781 assert_eq ! ( status, 200 ) ;
787782 let json = parse_json ( & body) ;
788783 assert_eq ! ( json[ "total" ] , 0 ) ;
0 commit comments