@@ -2850,6 +2850,20 @@ class ServerTest : public ::testing::Test {
28502850 res.status = StatusCode::NotFound_404;
28512851 }
28522852 })
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+ })
28532867 .Post (" /x-www-form-urlencoded-json" ,
28542868 [&](const Request &req, Response &res) {
28552869 auto json = req.get_param_value (" json" );
@@ -3562,6 +3576,108 @@ TEST_F(ServerTest, PutMethod3) {
35623576 ASSERT_EQ (" coder" , res->body );
35633577}
35643578
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+
35653681TEST_F (ServerTest, PostWwwFormUrlEncodedJson) {
35663682 Params params;
35673683 params.emplace (" json" , JSON_DATA);
0 commit comments