xref: /openbmc/bmcweb/test/http/crow_getroutes_test.cpp (revision 40e9b92ec19acffb46f83a6e55b18974da5d708e)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
3 #include "app.hpp"
4 #include "async_resp.hpp"
5 #include "http_request.hpp"
6 
7 #include <memory>
8 
9 #include <gmock/gmock.h>
10 #include <gtest/gtest.h>
11 
12 namespace crow
13 {
14 namespace
15 {
16 
17 using ::bmcweb::AsyncResp;
18 using ::testing::Eq;
19 using ::testing::IsEmpty;
20 using ::testing::Pointee;
21 using ::testing::UnorderedElementsAre;
22 
TEST(GetRoutes,TestEmptyRoutes)23 TEST(GetRoutes, TestEmptyRoutes)
24 {
25     App app;
26     app.validate();
27 
28     EXPECT_THAT(app.getRoutes(), IsEmpty());
29 }
30 
31 // Tests that static urls are correctly passed
TEST(GetRoutes,TestOneRoute)32 TEST(GetRoutes, TestOneRoute)
33 {
34     App app;
35 
36     BMCWEB_ROUTE(app, "/")
37     ([](const crow::Request& /*req*/,
38         const std::shared_ptr<AsyncResp>& /*asyncResp*/) {});
39 
40     // TODO: "/" doesn't get reported in |getRoutes| today. Uncomment this once
41     // it is fixed
42     // EXPECT_THAT(app.getRoutes(),
43     // testing::ElementsAre(Pointee(Eq("/"))));
44 }
45 
46 // Tests that static urls are correctly passed
TEST(GetRoutes,TestlotsOfRoutes)47 TEST(GetRoutes, TestlotsOfRoutes)
48 {
49     App app;
50     BMCWEB_ROUTE(app, "/")
51     ([](const Request& /*req*/, const std::shared_ptr<AsyncResp>& /*res*/) {});
52     BMCWEB_ROUTE(app, "/foo")
53     ([](const Request& /*req*/, const std::shared_ptr<AsyncResp>& /*res*/) {});
54     BMCWEB_ROUTE(app, "/bar")
55     ([](const Request& /*req*/, const std::shared_ptr<AsyncResp>& /*res*/) {});
56     BMCWEB_ROUTE(app, "/baz")
57     ([](const Request& /*req*/, const std::shared_ptr<AsyncResp>& /*res*/) {});
58     BMCWEB_ROUTE(app, "/boo")
59     ([](const Request& /*req*/, const std::shared_ptr<AsyncResp>& /*res*/) {});
60     BMCWEB_ROUTE(app, "/moo")
61     ([](const Request& /*req*/, const std::shared_ptr<AsyncResp>& /*res*/) {});
62 
63     app.validate();
64 
65     // TODO: "/" doesn't get reported in |getRoutes| today. Uncomment this once
66     // it is fixed
67     EXPECT_THAT(app.getRoutes(), UnorderedElementsAre(
68                                      // Pointee(Eq("/")),
69                                      Pointee(Eq("/foo")), Pointee(Eq("/bar")),
70                                      Pointee(Eq("/baz")), Pointee(Eq("/boo")),
71                                      Pointee(Eq("/moo"))));
72 }
73 } // namespace
74 } // namespace crow
75