Przeglądaj źródła

Merge branch '27-us19-1-head-command-server' into develop

Resolve "US19.1: Head command (Server)" tests

Closes #27

See merge request tobias.wach/ccats!39
Jonas Pflanzer 4 lat temu
rodzic
commit
eff50b8bad
2 zmienionych plików z 100 dodań i 0 usunięć
  1. 2 0
      daemon/test/FileManagerMock.h
  2. 98 0
      daemon/test/JsonCommanderTest.cpp

+ 2 - 0
daemon/test/FileManagerMock.h

@@ -29,6 +29,8 @@ public:
   MOCK_METHOD(int, getRemainingListChunks, (), (override));
   MOCK_METHOD(int, getListSize, (), (override));
   MOCK_METHOD(std::vector<std::string>, getNextChunkFromList, (), (override));
+
+  MOCK_METHOD((std::pair<std::vector<char>, headError>), getBytesFromFile, (const std::string &filename, int numOfBytes), (override));
 };
 
 #endif

+ 98 - 0
daemon/test/JsonCommanderTest.cpp

@@ -871,4 +871,102 @@ TEST(Listdata, InvalidRequest) {
 	EXPECT_TRUE(response.json["error"].asString().compare("") != 0);
 }
 
+TEST(Head, Positive) {
+	FileManagerMock fileManager;
+
+	JsonCommander jsonCommander(fileManager);
+
+	const std::string command = "head";
+	const std::string file = "asdf.txt";
+
+	Json::Value message;
+	message["command"] = command;
+	message["file"] = file;
+
+	std::vector<char> bytes = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
+	const std::string bytesAsString = "YWJjZGVmZ2g=";
+	EXPECT_CALL(fileManager, getBytesFromFile(testing::_, testing::_)).WillOnce(testing::Return(std::make_pair(bytes, FileManager::headError::no_error)));
+
+	JsonCommander::Response response = jsonCommander.execute(message);
+
+	EXPECT_TRUE(response.action == JsonCommander::Action::send);
+	EXPECT_EQ(response.json["command"].asString(), command);
+	EXPECT_TRUE(response.json["accept"].asBool());
+	EXPECT_EQ(response.json["file"].asString(), file);
+	EXPECT_EQ(response.json["data"].asString(), bytesAsString);
+	EXPECT_EQ(response.json["error"].asString(), "");
+}
+
+TEST(Head, InvalidRequest) {
+	FileManagerMock fileManager;
+
+	JsonCommander jsonCommander(fileManager);
+
+	const std::string command = "head";
+	const int file = 3641;
+
+	Json::Value message;
+	message["command"] = command;
+	message["file"] = file;
+
+	JsonCommander::Response response = jsonCommander.execute(message);
+
+	EXPECT_TRUE(response.action == JsonCommander::Action::send);
+	EXPECT_EQ(response.json["command"].asString(), command);
+	EXPECT_FALSE(response.json["accept"].asBool());
+	EXPECT_EQ(response.json["file"].asString(), "");
+	EXPECT_EQ(response.json["data"].asString(), "");
+	EXPECT_NE(response.json["error"].asString(), "");
+}
+
+TEST(Head, NoSuchFile) {
+	FileManagerMock fileManager;
+
+	JsonCommander jsonCommander(fileManager);
+
+	const std::string command = "head";
+	const std::string file = "asdf.txt";
+
+	Json::Value message;
+	message["command"] = command;
+	message["file"] = file;
+
+	std::vector<char> bytes;
+	EXPECT_CALL(fileManager, getBytesFromFile(testing::_, testing::_)).WillOnce(testing::Return(std::make_pair(bytes, FileManager::headError::no_such_file)));
+
+	JsonCommander::Response response = jsonCommander.execute(message);
+
+	EXPECT_TRUE(response.action == JsonCommander::Action::send);
+	EXPECT_EQ(response.json["command"].asString(), command);
+	EXPECT_FALSE(response.json["accept"].asBool());
+	EXPECT_EQ(response.json["file"].asString(), file);
+	EXPECT_EQ(response.json["data"].asString(), "");
+	EXPECT_NE(response.json["error"].asString(), "");
+}
+
+TEST(Head, FileTooSmall) {
+	FileManagerMock fileManager;
+
+	JsonCommander jsonCommander(fileManager);
+
+	const std::string command = "head";
+	const std::string file = "asdf.txt";
+
+	Json::Value message;
+	message["command"] = command;
+	message["file"] = file;
+
+	std::vector<char> bytes;
+	EXPECT_CALL(fileManager, getBytesFromFile(testing::_, testing::_)).WillOnce(testing::Return(std::make_pair(bytes, FileManager::headError::file_too_small)));
+
+	JsonCommander::Response response = jsonCommander.execute(message);
+
+	EXPECT_TRUE(response.action == JsonCommander::Action::send);
+	EXPECT_EQ(response.json["command"].asString(), command);
+	EXPECT_FALSE(response.json["accept"].asBool());
+	EXPECT_EQ(response.json["file"].asString(), file);
+	EXPECT_EQ(response.json["data"].asString(), "");
+	EXPECT_NE(response.json["error"].asString(), "");
+}
+
 } // namespace