#include #include "scp_args.h" using roro::term::ScpArgs; using roro::term::parseScp; void setUp() {} void tearDown() {} void test_upload() { ScpArgs a; TEST_ASSERT_EQUAL_STRING("", parseScp("/notes/a.txt bob@nas.lan:docs/a.txt", a).c_str()); TEST_ASSERT_TRUE(a.upload); TEST_ASSERT_EQUAL_STRING("bob", a.target.user.c_str()); TEST_ASSERT_EQUAL_STRING("nas.lan", a.target.host.c_str()); TEST_ASSERT_EQUAL(22, a.target.port); TEST_ASSERT_EQUAL_STRING("/notes/a.txt", a.local.c_str()); TEST_ASSERT_EQUAL_STRING("docs/a.txt", a.remote.c_str()); } void test_download_and_port() { ScpArgs a; TEST_ASSERT_EQUAL_STRING("", parseScp("-P 2222 bob@10.9.0.1:/var/log/syslog /logs/syslog", a).c_str()); TEST_ASSERT_FALSE(a.upload); TEST_ASSERT_EQUAL(2222, a.target.port); TEST_ASSERT_EQUAL_STRING("/var/log/syslog", a.remote.c_str()); TEST_ASSERT_EQUAL_STRING("/logs/syslog", a.local.c_str()); } void test_download_into_a_folder_takes_the_remote_name() { ScpArgs a; TEST_ASSERT_EQUAL_STRING("", parseScp("bob@h:/etc/motd /notes/", a).c_str()); TEST_ASSERT_EQUAL_STRING("/notes/motd", a.local.c_str()); } void test_replace_flag() { ScpArgs a; TEST_ASSERT_EQUAL_STRING("", parseScp("-f -P 22 bob@h:x /a", a).c_str()); TEST_ASSERT_TRUE(a.replace); TEST_ASSERT_EQUAL_STRING("", parseScp("bob@h:x /a", a).c_str()); TEST_ASSERT_FALSE(a.replace); TEST_ASSERT_TRUE(parseScp("-r bob@h:x /a", a).size() > 0); } void test_refusals() { ScpArgs a; TEST_ASSERT_TRUE(parseScp("", a).size() > 0); TEST_ASSERT_TRUE(parseScp("/a.txt /b.txt", a).size() > 0); // neither is a server TEST_ASSERT_TRUE(parseScp("a@h:x b@h:y", a).size() > 0); // both are TEST_ASSERT_TRUE(parseScp("a.txt bob@h:x", a).size() > 0); // not a card path TEST_ASSERT_TRUE(parseScp("/a.txt bob@h:", a).size() > 0); // no remote path TEST_ASSERT_TRUE(parseScp("/notes/ bob@h:x", a).size() > 0); // a folder TEST_ASSERT_TRUE(parseScp("-P 0 /a bob@h:x", a).size() > 0); TEST_ASSERT_TRUE(parseScp("/a bob@bad_host:x", a).size() > 0); } int main() { UNITY_BEGIN(); RUN_TEST(test_upload); RUN_TEST(test_download_and_port); RUN_TEST(test_download_into_a_folder_takes_the_remote_name); RUN_TEST(test_replace_flag); RUN_TEST(test_refusals); return UNITY_END(); }