1+ #include " DatabaseTest.hpp"
2+
3+ #include " oatpp/web/client/HttpRequestExecutor.hpp"
4+ #include " oatpp-test/web/ClientServerTestRunner.hpp"
5+
6+ #include " controller/UserController.hpp"
7+
8+ #include " app/DatabaseTestClient.hpp"
9+ #include " app/TestComponent.hpp"
10+
11+ void DatabaseTest::onRun () {
12+ /* Register test components */
13+ TestComponent component;
14+
15+ /* Create client-server test runner */
16+ oatpp::test::web::ClientServerTestRunner runner;
17+
18+ /* Add UserController endpoints to the router of the test server */
19+ runner.addController (std::make_shared<UserController>());
20+
21+ /* Run test */
22+ runner.run ([this , &runner] {
23+
24+ /* Get client connection provider for Api Client */
25+ OATPP_COMPONENT (std::shared_ptr<oatpp::network::ClientConnectionProvider>, clientConnectionProvider);
26+
27+ /* Get object mapper component */
28+ OATPP_COMPONENT (std::shared_ptr<oatpp::data::mapping::ObjectMapper>, objectMapper);
29+
30+ /* Create http request executor for Api Client */
31+ auto requestExecutor = oatpp::web::client::HttpRequestExecutor::createShared (clientConnectionProvider);
32+
33+ /* Create Test API client */
34+ auto client = DatabaseTestClient::createShared (requestExecutor, objectMapper);
35+
36+ auto dto = UserDto::createShared ();
37+
38+ dto->userName = " jondoe" ;
39+ 40+ dto->password = " 1234" ;
41+
42+ /* Call server API */
43+ auto addedUserResponse = client->addUser (dto);
44+
45+ /* Assert that server responds with 200 */
46+ OATPP_ASSERT (addedUserResponse->getStatusCode () == 200 );
47+
48+ /* Read response body as MessageDto */
49+ auto addedUserDto = addedUserResponse->readBodyToDto <oatpp::Object<UserDto>>(objectMapper.get ());
50+
51+ int addedUserId = addedUserDto->id ;
52+
53+ /* Assert that user has been added */
54+ auto newUserResponse = client->getUser (addedUserId);
55+
56+ OATPP_ASSERT (newUserResponse->getStatusCode () == 200 );
57+
58+ auto newUserDto = newUserResponse->readBodyToDto <oatpp::Object<UserDto>>(objectMapper.get ());
59+
60+ OATPP_ASSERT (newUserDto->id == addedUserId);
61+
62+ /* Delete newly added users */
63+ auto deletedUserResponse = client->deleteUser (addedUserId);
64+
65+ OATPP_ASSERT (deletedUserResponse->getStatusCode () == 200 );
66+
67+ }, std::chrono::minutes (10 ) /* test timeout */ );
68+
69+ /* wait all server threads finished */
70+ std::this_thread::sleep_for (std::chrono::seconds (1 ));
71+ }
0 commit comments