diff --git a/src/ssb.tests.c b/src/ssb.tests.c index 2ac2877d..0403ccb3 100644 --- a/src/ssb.tests.c +++ b/src/ssb.tests.c @@ -980,4 +980,40 @@ void tf_ssb_test_peer_exchange(const tf_test_options_t* options) uv_loop_close(&loop); } +void tf_ssb_test_publish(const tf_test_options_t* options) +{ + uv_loop_t loop = { 0 }; + uv_loop_init(&loop); + + unlink("out/test_db0.sqlite"); + tf_ssb_t* ssb = tf_ssb_create(&loop, NULL, "file:out/test_db0.sqlite", NULL); + tf_ssb_register(tf_ssb_get_context(ssb), ssb); + + char id[k_id_base64_len] = { 0 }; + tf_ssb_whoami(ssb, id, sizeof(id)); + + char executable[1024]; + size_t size = sizeof(executable); + uv_exepath(executable, &size); + + char command[4096]; + snprintf(command, sizeof(command), "%s publish -d out/test_db0.sqlite -u :admin -i %s -c '{\"type\": \"post\", \"text\": \"One.\"}'", executable, id); + int result = system(command); + (void)result; + assert(WIFEXITED(result)); + printf("returned %d\n", WEXITSTATUS(result)); + assert(WEXITSTATUS(result) == 0); + + snprintf(command, sizeof(command), "%s publish -d out/test_db0.sqlite -u :admin -i %s -c '{\"type\": \"post\", \"text\": \"Two.\"}'", executable, id); + result = system(command); + assert(WIFEXITED(result)); + printf("returned %d\n", WEXITSTATUS(result)); + assert(WEXITSTATUS(result) == 0); + + tf_ssb_destroy(ssb); + + uv_run(&loop, UV_RUN_DEFAULT); + uv_loop_close(&loop); +} + #endif diff --git a/src/ssb.tests.h b/src/ssb.tests.h index 192101b6..4bc0ff3b 100644 --- a/src/ssb.tests.h +++ b/src/ssb.tests.h @@ -59,4 +59,10 @@ void tf_ssb_test_encrypt(const tf_test_options_t* options); */ void tf_ssb_test_peer_exchange(const tf_test_options_t* options); +/** +** Test publishing a message. +** @param options The test options. +*/ +void tf_ssb_test_publish(const tf_test_options_t* options); + /** @} */ diff --git a/src/tests.c b/src/tests.c index 818f97c3..46830d2c 100644 --- a/src/tests.c +++ b/src/tests.c @@ -916,6 +916,7 @@ void tf_tests(const tf_test_options_t* options) _tf_test_run(options, "go-ssb-room", tf_ssb_test_go_ssb_room, true); _tf_test_run(options, "encrypt", tf_ssb_test_encrypt, false); _tf_test_run(options, "peer_exchange", tf_ssb_test_peer_exchange, false); + _tf_test_run(options, "publish", tf_ssb_test_publish, false); tf_printf("Tests completed.\n"); #endif }