Files
roro9stack/test/test_scp_args/test_scp_args.cpp
T
twislaandClaude Sonnet 5.5 18285c3212
CI / build (pull_request) Failing after 1m59s
Site / build (pull_request) Successful in 9s
Add uname, /uname and scp (key or masked password) in the Shell
- uname in the console and /uname in IRC: the firmware, its version and the chip
- scp: one file between the card and a trusted server, over SSH, with the
  device's key or a password asked (masked) in the Shell
- shared libssh helpers in src/platform/libssh_util
- README, user guide, command reference and a how-to updated

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
2026-10-09 19:01:36 +02:00

67 lines
2.4 KiB
C++

#include <unity.h>
#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();
}