@@ -2850,6 +2850,20 @@ class ServerTest : public ::testing::Test {
2850
2850
res.status = StatusCode::NotFound_404;
2851
2851
}
2852
2852
})
2853
+ .Delete (" /person" ,
2854
+ [&](const Request &req, Response &res) {
2855
+ if (req.has_param (" name" )) {
2856
+ string name = req.get_param_value (" name" );
2857
+ if (persons_.find (name) != persons_.end ()) {
2858
+ persons_.erase (name);
2859
+ res.set_content (" DELETED" , " text/plain" );
2860
+ } else {
2861
+ res.status = StatusCode::NotFound_404;
2862
+ }
2863
+ } else {
2864
+ res.status = StatusCode::BadRequest_400;
2865
+ }
2866
+ })
2853
2867
.Post (" /x-www-form-urlencoded-json" ,
2854
2868
[&](const Request &req, Response &res) {
2855
2869
auto json = req.get_param_value (" json" );
@@ -3562,6 +3576,108 @@ TEST_F(ServerTest, PutMethod3) {
3562
3576
ASSERT_EQ (" coder" , res->body );
3563
3577
}
3564
3578
3579
+ TEST_F (ServerTest, DeleteMethod1) {
3580
+ auto res = cli_.Get (" /person/john4" );
3581
+ ASSERT_TRUE (res);
3582
+ ASSERT_EQ (StatusCode::NotFound_404, res->status );
3583
+
3584
+ Params params;
3585
+ params.emplace (" name" , " john4" );
3586
+ params.emplace (" note" , " coder" );
3587
+
3588
+ res = cli_.Post (" /person" , params);
3589
+ ASSERT_TRUE (res);
3590
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3591
+
3592
+ res = cli_.Get (" /person/john4" );
3593
+ ASSERT_TRUE (res);
3594
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3595
+ ASSERT_EQ (" text/plain" , res->get_header_value (" Content-Type" ));
3596
+ ASSERT_EQ (" coder" , res->body );
3597
+
3598
+ Params delete_params;
3599
+ delete_params.emplace (" name" , " john4" );
3600
+
3601
+ res = cli_.Delete (" /person" , delete_params);
3602
+ ASSERT_TRUE (res);
3603
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3604
+ ASSERT_EQ (" DELETED" , res->body );
3605
+
3606
+ res = cli_.Get (" /person/john4" );
3607
+ ASSERT_TRUE (res);
3608
+ ASSERT_EQ (StatusCode::NotFound_404, res->status );
3609
+ }
3610
+
3611
+ TEST_F (ServerTest, DeleteMethod2) {
3612
+ auto res = cli_.Get (" /person/john5" );
3613
+ ASSERT_TRUE (res);
3614
+ ASSERT_EQ (StatusCode::NotFound_404, res->status );
3615
+
3616
+ Params params;
3617
+ params.emplace (" name" , " john5" );
3618
+ params.emplace (" note" , " developer" );
3619
+
3620
+ res = cli_.Post (" /person" , params);
3621
+ ASSERT_TRUE (res);
3622
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3623
+
3624
+ res = cli_.Get (" /person/john5" );
3625
+ ASSERT_TRUE (res);
3626
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3627
+ ASSERT_EQ (" text/plain" , res->get_header_value (" Content-Type" ));
3628
+ ASSERT_EQ (" developer" , res->body );
3629
+
3630
+ Params delete_params;
3631
+ delete_params.emplace (" name" , " john5" );
3632
+
3633
+ Headers headers;
3634
+ headers.emplace (" Custom-Header" , " test-value" );
3635
+
3636
+ res = cli_.Delete (" /person" , headers, delete_params);
3637
+ ASSERT_TRUE (res);
3638
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3639
+ ASSERT_EQ (" DELETED" , res->body );
3640
+
3641
+ res = cli_.Get (" /person/john5" );
3642
+ ASSERT_TRUE (res);
3643
+ ASSERT_EQ (StatusCode::NotFound_404, res->status );
3644
+ }
3645
+
3646
+ TEST_F (ServerTest, DeleteMethod3) {
3647
+ auto res = cli_.Get (" /person/john6" );
3648
+ ASSERT_TRUE (res);
3649
+ ASSERT_EQ (StatusCode::NotFound_404, res->status );
3650
+
3651
+ Params params;
3652
+ params.emplace (" name" , " john6" );
3653
+ params.emplace (" note" , " tester" );
3654
+
3655
+ res = cli_.Post (" /person" , params);
3656
+ ASSERT_TRUE (res);
3657
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3658
+
3659
+ res = cli_.Get (" /person/john6" );
3660
+ ASSERT_TRUE (res);
3661
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3662
+ ASSERT_EQ (" text/plain" , res->get_header_value (" Content-Type" ));
3663
+ ASSERT_EQ (" tester" , res->body );
3664
+
3665
+ Params delete_params;
3666
+ delete_params.emplace (" name" , " john6" );
3667
+
3668
+ Headers headers;
3669
+ headers.emplace (" Custom-Header" , " test-value" );
3670
+
3671
+ res = cli_.Delete (" /person" , headers, delete_params, nullptr );
3672
+ ASSERT_TRUE (res);
3673
+ ASSERT_EQ (StatusCode::OK_200, res->status );
3674
+ ASSERT_EQ (" DELETED" , res->body );
3675
+
3676
+ res = cli_.Get (" /person/john6" );
3677
+ ASSERT_TRUE (res);
3678
+ ASSERT_EQ (StatusCode::NotFound_404, res->status );
3679
+ }
3680
+
3565
3681
TEST_F (ServerTest, PostWwwFormUrlEncodedJson) {
3566
3682
Params params;
3567
3683
params.emplace (" json" , JSON_DATA);
0 commit comments