summaryrefslogtreecommitdiff
path: root/tests/test_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_core.c')
-rw-r--r--tests/test_core.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/test_core.c b/tests/test_core.c
index aa2bd4a..6f114b9 100644
--- a/tests/test_core.c
+++ b/tests/test_core.c
@@ -928,6 +928,74 @@ int main(void)
CHECK(yyjson_arr_size(jget(d, "result.items")) == 0);
yyjson_doc_free(d);
+ /* the same content may link to several vouchers, but not twice to one */
+ d = call(reqf("{\"v\":1,\"id\":\"61a\",\"cmd\":\"attachment.put\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"filename\":"
+ "\"kvitto.txt\",\"mime\":\"text/plain\","
+ "\"content_base64\":\"aGVsbG8gd29ybGQ=\",\"voucher_id\":%lld}}",
+ g_session, (int)org_id, (long long)sale_id));
+ CHECK_OK(d);
+ CHECK(jint(d, "result.id") == att_id);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"61b\",\"cmd\":\"attachment.put\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"filename\":"
+ "\"kvitto.txt\",\"mime\":\"text/plain\","
+ "\"content_base64\":\"aGVsbG8gd29ybGQ=\",\"voucher_id\":%lld}}",
+ g_session, (int)org_id, (long long)sale_id));
+ CHECK_STR(d, "error.code", "CONFLICT");
+ yyjson_doc_free(d);
+
+ /* link/unlink an existing attachment */
+ d = call(reqf("{\"v\":1,\"id\":\"61c\",\"cmd\":\"attachment.put\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"filename\":"
+ "\"extra.txt\",\"content_base64\":\"ZXh0cmE=\"}}",
+ g_session, (int)org_id));
+ CHECK_OK(d);
+ int64_t orphan = jint(d, "result.id");
+ CHECK(orphan > 0);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"61d\",\"cmd\":\"attachment.link\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld,"
+ "\"voucher_id\":%lld}}",
+ g_session, (int)org_id, (long long)orphan,
+ (long long)sale_id));
+ CHECK_OK(d);
+ CHECK(jint(d, "result.voucher_id") == sale_id);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"61e\",\"cmd\":\"attachment.link\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld,"
+ "\"voucher_id\":%lld}}",
+ g_session, (int)org_id, (long long)orphan,
+ (long long)sale_id));
+ CHECK_STR(d, "error.code", "CONFLICT");
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"61f\",\"cmd\":\"attachment.unlink\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld,"
+ "\"voucher_id\":%lld}}",
+ g_session, (int)org_id, (long long)orphan,
+ (long long)sale_id));
+ CHECK_OK(d);
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"61g\",\"cmd\":\"attachment.unlink\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld,"
+ "\"voucher_id\":%lld}}",
+ g_session, (int)org_id, (long long)orphan,
+ (long long)sale_id));
+ CHECK_STR(d, "error.code", "NOT_FOUND");
+ yyjson_doc_free(d);
+
+ d = call(reqf("{\"v\":1,\"id\":\"61h\",\"cmd\":\"attachment.link\","
+ "\"session\":\"%s\",\"org\":%d,\"args\":{\"id\":%lld,"
+ "\"voucher_id\":999999}}",
+ g_session, (int)org_id, (long long)orphan));
+ CHECK_STR(d, "error.code", "NOT_FOUND");
+ yyjson_doc_free(d);
+
/* correction */
d = call(reqf("{\"v\":1,\"id\":\"62\",\"cmd\":\"voucher.correct\","
"\"session\":\"%s\",\"org\":%d,\"args\":{\"voucher\":%lld,"