isds_guess_raw_type() added
[libisds.git] / test / guess_raw_type.c
blob41a1a664fe6c4edd491feaf650e46c4f111ecf3b
1 #include "test.h"
2 #include "crypto.h"
3 #include <string.h>
6 struct test {
7 char *name;
8 char *file;
9 isds_raw_type type;
10 isds_error error;
13 static int test_guess_raw_type(struct isds_ctx *context,
14 const struct test *test) {
15 isds_error err;
16 int fd;
17 void *buffer = NULL;
18 size_t length = 0;
19 isds_raw_type guessed_type;
21 if (!test) return 1;
23 if (test_mmap_file(test->file, &fd, &buffer, &length))
24 FAIL_TEST("Could not load test data from `%s' file", test->file);
26 err = isds_guess_raw_type(context, &guessed_type, buffer, length);
27 test_munmap_file(fd, buffer, length);
29 if (err != test->error)
30 FAIL_TEST("Wrong return value: expected=%s, got=%s",
31 isds_strerror(test->error), isds_strerror(err));
33 if (!err && guessed_type != test->type)
34 FAIL_TEST("Wrong raw type guessed on file %s: expected=%d, got=%d",
35 test->file, test->type, guessed_type);
37 PASS_TEST;
41 int main(int argc, char **argv) {
42 struct test tests[] = {
44 .name = "unsigned incoming message",
45 .file = "../server/messages/received_message-151916.xml",
46 .type = RAWTYPE_INCOMING_MESSAGE,
47 .error = IE_SUCCESS
49 /* FIXME: test plain and CMS signed incoming messages */
51 .name = "plain signed sent message",
52 .file = "../server/messages/sent_message-206720.xml",
53 .type = RAWTYPE_PLAIN_SIGNED_OUTGOING_MESSAGE,
54 .error = IE_SUCCESS
57 .name = "CMS signed sent message",
58 .file = "../server/messages/signed_sent_message-151874.zfo",
59 .type = RAWTYPE_CMS_SIGNED_OUTGOING_MESSAGE,
60 .error = IE_SUCCESS
62 /* FIXME: test unsigned delivery info */
64 .name = "plain signed delivery info",
65 .file = "../server/messages/signed_delivered-DD_170272.xml",
66 .type = RAWTYPE_PLAIN_SIGNED_DELIVERYINFO,
67 .error = IE_SUCCESS
70 .name = "CMS signed delivery info",
71 .file = "../server/messages/signed_delivered-DD_170272.zfo",
72 .type = RAWTYPE_CMS_SIGNED_DELIVERYINFO,
73 .error = IE_SUCCESS
76 .name = "text file",
77 .file = "guess_raw_type.c",
78 .error = IE_NOTSUP
81 .name = NULL
84 struct isds_ctx *context = NULL;
86 INIT_TEST("guess_raw_type");
88 if (isds_init())
89 ABORT_UNIT("init_isds() failed");
91 context = isds_ctx_create();
92 if (!context)
93 ABORT_UNIT("isds_ctx_create() failed");
95 for (int i = 0; tests[i].name; i++)
96 TEST(tests[i].name, test_guess_raw_type, context, &tests[i]);
98 isds_ctx_free(&context);
99 SUM_TEST();