diff options
Diffstat (limited to 'site/test.cpp')
-rw-r--r-- | site/test.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/site/test.cpp b/site/test.cpp new file mode 100644 index 0000000..7fcc2ae --- /dev/null +++ b/site/test.cpp @@ -0,0 +1,107 @@ +#define BOOST_TEST_MODULE mirrorsearchsite +#include <boost/test/unit_test.hpp> + +#include <testRequest.h> +#include <core.h> +#include <api.h> + +#include <Ice/ObjectAdapter.h> + +using namespace IceSpider; +using namespace MirrorSearch; + +class TestSerice : public Search { + public: + virtual SearchServices getServices(const ::Ice::Current& = ::Ice::Current()) override + { + return {}; + } + virtual SearchHits getMatches(const ::std::string & fn, const ::Ice::Current& = ::Ice::Current()) override + { + BOOST_TEST_INFO(fn); + if (fn == "good.txt") { + return { + new SearchHit(1, 1, "file:///some/file/path"), + new SearchHit(1, 1, "file:///some/other/path") + }; + } + return {}; + } + virtual ::IceUtil::Optional<::std::string> feelingLucky(const ::std::string & fn, const ::Ice::Current & c = ::Ice::Current()) override + { + auto ms = getMatches(fn, c); + if (ms.empty()) { + return IceUtil::None; + + } + return ms.front()->url; + } +}; + +class TestApp : public CoreWithDefaultRouter { + public: + TestApp() : + CoreWithDefaultRouter({ + "--MirrorSearch.Search=Search" + }), + adp(communicator->createObjectAdapterWithEndpoints("test", "default")) + { + adp->activate(); + adp->add(new TestSerice(), communicator->stringToIdentity("Search")); + } + + ~TestApp() + { + adp->deactivate(); + adp->destroy(); + } + + Ice::ObjectAdapterPtr adp; +}; + +BOOST_FIXTURE_TEST_SUITE(ta, TestApp); + +BOOST_AUTO_TEST_CASE( testCallIndexNoFile ) +{ + TestRequest requestGetIndex(this, HttpMethod::GET, "/list"); + process(&requestGetIndex); + auto h = requestGetIndex.getResponseHeaders(); + BOOST_CHECK_EQUAL(h["Status"], "404 Not found"); +} + +BOOST_AUTO_TEST_CASE( testCallIndex ) +{ + TestRequest requestGetIndex(this, HttpMethod::GET, "/list/somefile.txt"); + process(&requestGetIndex); + auto h = requestGetIndex.getResponseHeaders(); + BOOST_CHECK_EQUAL(h["Status"], "200 OK"); + BOOST_CHECK_EQUAL(h["Content-Type"], "application/json"); +} + +BOOST_AUTO_TEST_CASE( testCallDownloadNotFile ) +{ + TestRequest requestGetIndex(this, HttpMethod::GET, "/download"); + process(&requestGetIndex); + auto h = requestGetIndex.getResponseHeaders(); + BOOST_CHECK_EQUAL(h["Status"], "404 Not found"); +} + +BOOST_AUTO_TEST_CASE( testCallDownloadBad ) +{ + TestRequest requestGetIndex(this, HttpMethod::GET, "/download/bad.txt"); + process(&requestGetIndex); + auto h = requestGetIndex.getResponseHeaders(); + BOOST_CHECK_EQUAL(h["Status"], "404 No mirror found"); +} + +BOOST_AUTO_TEST_CASE( testCallDownloadGood ) +{ + TestRequest requestGetIndex(this, HttpMethod::GET, "/download/good.txt"); + process(&requestGetIndex); + auto h = requestGetIndex.getResponseHeaders(); + BOOST_CHECK_EQUAL(h["Status"], "303 Mirror found"); + BOOST_CHECK_EQUAL(h["Location"], "file:///some/file/path"); +} + +BOOST_AUTO_TEST_SUITE_END(); + |