|
|
|
|
#include <ServerContext.hpp>
|
|
|
|
|
#include <SessionContext.hpp>
|
|
|
|
|
#include <TorrentContext.hpp>
|
|
|
|
|
#include <torrent.hpp>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCENARIO("We are running a GET /session/torrents/id resource") {
|
|
|
|
|
auto torrent_session = TestSession();
|
|
|
|
|
auto response = std::make_shared<TestResponse>();
|
|
|
|
|
auto request = std::make_shared<TestRequest>();
|
|
|
|
|
GIVEN("the server is not working properly and we recive a reqest") {
|
|
|
|
|
THEN("the server should reply with service unavailable") {
|
|
|
|
|
tr::session::torrents::id::get(torrent_session, response, request);
|
|
|
|
|
CommonResponse::service_unavailable(response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
auto torrent = TestTorrent();
|
|
|
|
|
torrent_session.valid = true;
|
|
|
|
|
GIVEN("we have the server is working properly and we recive a request") {
|
|
|
|
|
WHEN("the request path is a proper id") {
|
|
|
|
|
request->path = "/session/torrents/" + torrent_id;
|
|
|
|
|
GIVEN("we have the torrent") {
|
|
|
|
|
torrent_session.theTorrentExists();
|
|
|
|
|
THEN("the response should be a json representation of the torrent") {
|
|
|
|
|
tr::session::torrents::id::get(torrent_session, response, request);
|
|
|
|
|
CommonResponse::ok(response, {torrent_json});
|
|
|
|
|
}
|
|
|
|
|
WHEN("The torrent isn't valid") {
|
|
|
|
|
torrent_session.torrents_.back().valid = false;
|
|
|
|
|
THEN("the server should reply with bad request") {
|
|
|
|
|
tr::session::torrents::id::get(torrent_session, response, request);
|
|
|
|
|
CommonResponse::bad_request(response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCENARIO("We are running a PATCH /session/torrents/id resource") {
|
|
|
|
|
auto torrent_session = TestSession();
|
|
|
|
|
auto response = std::make_shared<TestResponse>();
|
|
|
|
|
auto request = std::make_shared<TestRequest>();
|
|
|
|
|
GIVEN("the server is not working properly and we recive a reqest") {
|
|
|
|
|
THEN("the server should reply with service unavailable") {
|
|
|
|
|
tr::session::torrents::id::patch(torrent_session, response, request);
|
|
|
|
|
CommonResponse::service_unavailable(response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
torrent_session.valid = true;
|
|
|
|
|
GIVEN("we have the server is working properly and we recive a request") {
|
|
|
|
|
WHEN("the request path is a proper id") {
|
|
|
|
|
request->path = "/session/torrents/" + torrent_id;
|
|
|
|
|
GIVEN("the request is valid and we have the torrent") {
|
|
|
|
|
request->content << nlohmann::json({
|
|
|
|
|
{"paused", "true"},
|
|
|
|
|
{"up_limit", "109"},
|
|
|
|
|
{"down_limit", 100},
|
|
|
|
|
});
|
|
|
|
|
torrent_session.theTorrentExists();
|
|
|
|
|
WHEN("The torrent isn't valid") {
|
|
|
|
|
torrent_session.torrents_.back().valid = false;
|
|
|
|
|
THEN("the server should reply with bad request") {
|
|
|
|
|
tr::session::torrents::id::patch(torrent_session, response, request);
|
|
|
|
|
CommonResponse::bad_request(response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
THEN("the server should reply with accepted") {
|
|
|
|
|
tr::session::torrents::id::patch(torrent_session, response, request);
|
|
|
|
|
CommonResponse::accepted(response);
|
|
|
|
|
REQUIRE(torrent_session.get_torrents().back().status().paused);
|
|
|
|
|
REQUIRE(torrent_session.get_torrents().back().download_limit() == 100);
|
|
|
|
|
REQUIRE(torrent_session.get_torrents().back().upload_limit() == 109);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
THEN("the request is valid json, but doesn't have any of the required fields") {
|
|
|
|
|
request->content << "{}";
|
|
|
|
|
THEN("the server should reply with bad request") {
|
|
|
|
|
tr::session::torrents::id::patch(torrent_session, response, request);
|
|
|
|
|
CommonResponse::bad_request(response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
request->content << "Not valid";
|
|
|
|
|
THEN("the server should reply with bad request") {
|
|
|
|
|
tr::session::torrents::id::patch(torrent_session, response, request);
|
|
|
|
|
CommonResponse::bad_request(response);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|