52 #define VOICEMAIL_DIR_MODE 0777
60 #define VOICEMAIL_FILE_MODE 0666
66 #define TOTAL_SNAPSHOTS 4
73 #define VM_API_TEST_SETUP do { \
74 if (!ast_vm_is_registered()) { \
75 ast_test_status_update(test, "No voicemail provider registered.\n"); \
76 return AST_TEST_FAIL; \
77 } else if (test_vm_api_test_setup()) { \
78 VM_API_TEST_CLEANUP; \
79 ast_test_status_update(test, "Failed to set up necessary mock objects for voicemail API test\n"); \
80 return AST_TEST_FAIL; \
83 for (; i < TOTAL_SNAPSHOTS; i++) { \
84 ast_test_status_update(test, "Created message in %s/%s with ID %s\n", \
85 test_snapshots[i]->exten, test_snapshots[i]->folder_name, test_snapshots[i]->msg_id); \
95 #define VM_API_TEST_CLEANUP test_vm_api_test_teardown()
103 #define VM_API_SNAPSHOT_TEST_CLEANUP \
104 if (test_mbox_snapshot) { \
105 test_mbox_snapshot = ast_vm_mailbox_snapshot_destroy(test_mbox_snapshot); \
107 VM_API_TEST_CLEANUP; \
116 #define VM_API_STRING_FIELD_VERIFY(expected, actual) do { \
117 if (strcmp((expected), (actual))) { \
118 ast_test_status_update(test, "Test failed for parameter %s: Expected [%s], Actual [%s]\n", #actual, expected, actual); \
119 VM_API_SNAPSHOT_TEST_CLEANUP; \
120 return AST_TEST_FAIL; \
129 #define VM_API_INT_VERIFY(expected, actual) do { \
130 if ((expected) != (actual)) { \
131 ast_test_status_update(test, "Test failed for parameter %s: Expected [%d], Actual [%d]\n", #actual, (int)expected, (int)actual); \
132 VM_API_SNAPSHOT_TEST_CLEANUP; \
133 return AST_TEST_FAIL; \
143 #define VM_API_SNAPSHOT_MSG_VERIFY(expected, actual, expected_folder, expected_index) do { \
144 struct ast_vm_msg_snapshot *msg; \
147 AST_LIST_TRAVERSE(&((actual)->snapshots[get_folder_by_name(expected_folder)]), msg, msg) { \
148 if (!(strcmp(msg->msg_id, (expected)->msg_id))) { \
149 ast_test_status_update(test, "Found message %s in snapshot\n", msg->msg_id); \
151 if ((expected_index) != counter) { \
152 ast_test_status_update(test, "Expected message %s at index %d; Actual [%d]\n", \
153 (expected)->msg_id, (expected_index), counter); \
154 VM_API_SNAPSHOT_TEST_CLEANUP; \
155 return AST_TEST_FAIL; \
157 VM_API_STRING_FIELD_VERIFY((expected)->callerid, msg->callerid); \
158 VM_API_STRING_FIELD_VERIFY((expected)->callerchan, msg->callerchan); \
159 VM_API_STRING_FIELD_VERIFY((expected)->exten, msg->exten); \
160 VM_API_STRING_FIELD_VERIFY((expected)->origdate, msg->origdate); \
161 VM_API_STRING_FIELD_VERIFY((expected)->origtime, msg->origtime); \
162 VM_API_STRING_FIELD_VERIFY((expected)->duration, msg->duration); \
163 VM_API_STRING_FIELD_VERIFY((expected)->folder_name, msg->folder_name); \
164 VM_API_STRING_FIELD_VERIFY((expected)->flag, msg->flag); \
165 VM_API_INT_VERIFY((expected)->msg_number, msg->msg_number); \
171 ast_test_status_update(test, "Test failed for message snapshot %s: not found in mailbox snapshot\n", (expected)->msg_id); \
172 VM_API_SNAPSHOT_TEST_CLEANUP; \
173 return AST_TEST_FAIL; \
183 #define VM_API_SNAPSHOT_CREATE(mailbox, context, folder, desc, sort, old_and_inbox) do { \
184 if (!(test_mbox_snapshot = ast_vm_mailbox_snapshot_create( \
185 (mailbox), (context), (folder), (desc), (sort), (old_and_inbox)))) { \
186 ast_test_status_update(test, "Failed to create voicemail mailbox snapshot\n"); \
187 VM_API_TEST_CLEANUP; \
188 return AST_TEST_FAIL; \
198 #define VM_API_SNAPSHOT_OFF_NOMINAL_TEST(mailbox, context, folder, desc, sort, old_and_inbox) do { \
199 if ((test_mbox_snapshot = ast_vm_mailbox_snapshot_create( \
200 (mailbox), (context), (folder), (desc), (sort), (old_and_inbox)))) { \
201 ast_test_status_update(test, "Created mailbox snapshot when none was expected\n"); \
202 test_mbox_snapshot = ast_vm_mailbox_snapshot_destroy(test_mbox_snapshot); \
203 VM_API_TEST_CLEANUP; \
204 return AST_TEST_FAIL; \
211 #define VM_API_MOVE_MESSAGE(mailbox, context, number_of_messages, source, message_numbers_in, dest) do { \
212 if (ast_vm_msg_move((mailbox), (context), (number_of_messages), (source), (message_numbers_in), (dest))) { \
213 ast_test_status_update(test, "Failed to move message %s@%s from %s to %s\n", \
214 (mailbox) ? (mailbox): "(NULL)", (context) ? (context) : "(NULL)", (source) ? (source) : "(NULL)", (dest) ? (dest) : "(NULL)"); \
215 VM_API_TEST_CLEANUP; \
216 return AST_TEST_FAIL; \
223 #define VM_API_MOVE_MESSAGE_OFF_NOMINAL(mailbox, context, number_of_messages, source, message_numbers_in, dest) do { \
224 if (!ast_vm_msg_move((mailbox), (context), (number_of_messages), (source), (message_numbers_in), (dest))) { \
225 ast_test_status_update(test, "Succeeded to move message %s@%s from %s to %s when we really shouldn't\n", \
226 (mailbox) ? (mailbox): "(NULL)", (context) ? (context) : "(NULL)", (source) ? (source) : "(NULL)", (dest) ? (dest) : "(NULL)"); \
227 VM_API_TEST_CLEANUP; \
228 return AST_TEST_FAIL; \
235 #define VM_API_REMOVE_MESSAGE(mailbox, context, number_of_messages, folder, message_numbers_in) do { \
236 if (ast_vm_msg_remove((mailbox), (context), (number_of_messages), (folder), (message_numbers_in))) { \
237 ast_test_status_update(test, "Failed to remove message from mailbox %s@%s, folder %s", \
238 (mailbox) ? (mailbox): "(NULL)", (context) ? (context) : "(NULL)", (folder) ? (folder) : "(NULL)"); \
239 VM_API_TEST_CLEANUP; \
240 return AST_TEST_FAIL; \
242 VM_API_SNAPSHOT_CREATE((mailbox), (context), (folder), 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0); \
243 VM_API_INT_VERIFY(0, test_mbox_snapshot->total_msg_num); \
244 test_mbox_snapshot = ast_vm_mailbox_snapshot_destroy(test_mbox_snapshot); \
251 #define VM_API_REMOVE_MESSAGE_OFF_NOMINAL(mailbox, context, number_of_messages, folder, message_numbers_in) do { \
252 if (!ast_vm_msg_remove((mailbox), (context), (number_of_messages), (folder), (message_numbers_in))) { \
253 ast_test_status_update(test, "Succeeded in removing message from mailbox %s@%s, folder %s, when expected result was failure\n", \
254 (mailbox) ? (mailbox): "(NULL)", (context) ? (context) : "(NULL)", (folder) ? (folder) : "(NULL)"); \
255 VM_API_TEST_CLEANUP; \
256 return AST_TEST_FAIL; \
263 # define VM_API_FORWARD_MESSAGE(from_mailbox, from_context, from_folder, to_mailbox, to_context, to_folder, number_of_messages, message_numbers_in, delete_old) do { \
264 if (ast_vm_msg_forward((from_mailbox), (from_context), (from_folder), (to_mailbox), (to_context), (to_folder), (number_of_messages), (message_numbers_in), (delete_old))) { \
265 ast_test_status_update(test, "Failed to forward message from %s@%s [%s] to %s@%s [%s]\n", \
266 (from_mailbox) ? (from_mailbox) : "(NULL)", (from_context) ? (from_context) : "(NULL)", (from_folder) ? (from_folder) : "(NULL)", \
267 (to_mailbox) ? (to_mailbox) : "(NULL)", (to_context) ? (to_context) : "(NULL)", (to_folder) ? (to_folder) : "(NULL)"); \
268 VM_API_TEST_CLEANUP; \
269 return AST_TEST_FAIL; \
276 #define VM_API_FORWARD_MESSAGE_OFF_NOMINAL(from_mailbox, from_context, from_folder, to_mailbox, to_context, to_folder, number_of_messages, message_numbers_in, delete_old) do { \
277 if (!ast_vm_msg_forward((from_mailbox), (from_context), (from_folder), (to_mailbox), (to_context), (to_folder), (number_of_messages), (message_numbers_in), (delete_old))) { \
278 ast_test_status_update(test, "Succeeded in forwarding message from %s@%s [%s] to %s@%s [%s] when expected result was fail\n", \
279 (from_mailbox) ? (from_mailbox) : "(NULL)", (from_context) ? (from_context) : "(NULL)", (from_folder) ? (from_folder) : "(NULL)", \
280 (to_mailbox) ? (to_mailbox) : "(NULL)", (to_context) ? (to_context) : "(NULL)", (to_folder) ? (to_folder) : "(NULL)"); \
281 VM_API_TEST_CLEANUP; \
282 return AST_TEST_FAIL; \
292 #define VM_API_PLAYBACK_MESSAGE(channel, mailbox, context, folder, message, callback_fn) do { \
293 if (ast_vm_msg_play((channel), (mailbox), (context), (folder), (message), (callback_fn))) { \
294 ast_test_status_update(test, "Failed nominal playback message test\n"); \
295 ast_hangup(test_channel); \
296 VM_API_TEST_CLEANUP; \
297 return AST_TEST_FAIL; \
307 #define VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(channel, mailbox, context, folder, message, callback_fn) do { \
308 if (!ast_vm_msg_play((channel), (mailbox), (context), (folder), (message), (callback_fn))) { \
309 ast_test_status_update(test, "Succeeded in playing back of message when expected result was to fail\n"); \
310 ast_hangup(test_channel); \
311 VM_API_TEST_CLEANUP; \
312 return AST_TEST_FAIL; \
322 static const char *
const mailbox_folders[] = {
347 static int global_entered_playback_callback = 0;
353 static int get_folder_by_name(
const char *folder)
357 for (i = 0; i < ARRAY_LEN(mailbox_folders); i++) {
358 if (strcasecmp(folder, mailbox_folders[i]) == 0) {
377 static struct ast_vm_msg_snapshot *test_vm_api_create_mock_snapshot(
const char *context,
const char *exten,
const char *callerid)
380 char msg_id_buf[256];
383 snprintf(msg_id_hash,
sizeof(msg_id_hash),
"%s%s%s", exten, context, callerid);
384 snprintf(msg_id_buf,
sizeof(msg_id_buf),
"%ld-%d", (
long)time(NULL),
ast_str_hash(msg_id_hash));
386 if ((snapshot =
ast_calloc(1,
sizeof(*snapshot)))) {
419 static int test_vm_api_create_voicemail_folder(
const char *folder_path)
421 mode_t mode = VOICEMAIL_DIR_MODE;
424 if ((res =
ast_mkdir(folder_path, mode))) {
425 ast_log(AST_LOG_ERROR,
"ast_mkdir '%s' failed: %s\n", folder_path, strerror(res));
445 static int test_vm_api_create_voicemail_files(
const char *context,
const char *mailbox,
struct ast_vm_msg_snapshot *snapshot)
448 char folder_path[PATH_MAX];
449 char msg_path[PATH_MAX];
450 char snd_path[PATH_MAX];
451 char beep_path[PATH_MAX];
457 snprintf(folder_path,
sizeof(folder_path),
"%s/voicemail/%s/%s/%s",
458 ast_config_AST_SPOOL_DIR, context, mailbox, snapshot->folder_name);
459 snprintf(msg_path,
sizeof(msg_path),
"%s/msg%04u.txt",
460 folder_path, snapshot->msg_number);
461 snprintf(snd_path,
sizeof(snd_path),
"%s/msg%04u.gsm",
462 folder_path, snapshot->msg_number);
463 snprintf(beep_path,
sizeof(beep_path),
"%s/sounds/en/beep.gsm", ast_config_AST_DATA_DIR);
465 if (test_vm_api_create_voicemail_folder(folder_path)) {
470 ast_log(AST_LOG_ERROR,
"Unable to lock directory %s\n", folder_path);
474 if (symlink(beep_path, snd_path)) {
476 ast_log(AST_LOG_ERROR,
"Failed to create a symbolic link from %s to %s: %s\n",
477 beep_path, snd_path, strerror(errno));
481 if (!(msg_file = fopen(msg_path,
"w"))) {
485 ast_log(AST_LOG_ERROR,
"Failed to open %s for writing\n", msg_path);
489 fprintf(msg_file,
";\n; Message Information file\n;\n"
509 snapshot->callerchan,
519 if (chmod(msg_path, VOICEMAIL_FILE_MODE) < 0) {
521 ast_log(AST_LOG_ERROR,
"Couldn't set permissions on voicemail text file %s: %s", msg_path, strerror(errno));
537 char msg_path[PATH_MAX];
538 char snd_path[PATH_MAX];
539 char folder_path[PATH_MAX];
545 snprintf(folder_path,
sizeof(folder_path),
"%s/voicemail/%s/%s/%s",
546 ast_config_AST_SPOOL_DIR,
"default", snapshot->exten, snapshot->folder_name);
548 snprintf(msg_path,
sizeof(msg_path),
"%s/msg%04u.txt",
549 folder_path, snapshot->msg_number);
550 snprintf(snd_path,
sizeof(snd_path),
"%s/msg%04u.gsm",
551 folder_path, snapshot->msg_number);
570 static void test_vm_api_destroy_mailbox_voicemails(
const char *mailbox,
struct ast_vm_mailbox_snapshot *mailbox_snapshot)
575 for (i = 0; i < 12; ++i) {
578 test_vm_api_remove_voicemail(msg);
587 static void test_vm_api_remove_all_messages(
void)
595 test_vm_api_destroy_mailbox_voicemails(
"test_vm_api_1234", mailbox_snapshot);
598 ast_log(AST_LOG_WARNING,
"Failed to create mailbox snapshot - could not remove test messages for test_vm_api_1234\n");
601 test_vm_api_destroy_mailbox_voicemails(
"test_vm_api_2345", mailbox_snapshot);
604 ast_log(AST_LOG_WARNING,
"Failed to create mailbox snapshot - could not remove test messages for test_vm_api_2345\n");
624 static int test_vm_api_test_setup(
void)
633 if ( !((msg_one = test_vm_api_create_mock_snapshot(
"default",
"test_vm_api_1234",
"\"Phil\" <2000>")))
634 || !((msg_two = test_vm_api_create_mock_snapshot(
"default",
"test_vm_api_1234",
"\"Noel\" <8000>")))
635 || !((msg_three = test_vm_api_create_mock_snapshot(
"default",
"test_vm_api_2345",
"\"Phil\" <2000>")))
636 || !((msg_four = test_vm_api_create_mock_snapshot(
"default",
"test_vm_api_2345",
"\"Bill\" <3000>")))) {
637 ast_log(AST_LOG_ERROR,
"Failed to create mock snapshots for test\n");
638 test_vm_api_destroy_mock_snapshot(msg_one);
639 test_vm_api_destroy_mock_snapshot(msg_two);
640 test_vm_api_destroy_mock_snapshot(msg_three);
641 test_vm_api_destroy_mock_snapshot(msg_four);
646 if (ast_vm_test_create_user(
"default",
"test_vm_api_1234")
647 || ast_vm_test_create_user(
"default",
"test_vm_api_2345")) {
648 ast_log(AST_LOG_ERROR,
"Failed to create test voicemail users\n");
649 test_vm_api_destroy_mock_snapshot(msg_one);
650 test_vm_api_destroy_mock_snapshot(msg_two);
651 test_vm_api_destroy_mock_snapshot(msg_three);
652 test_vm_api_destroy_mock_snapshot(msg_four);
662 test_vm_api_remove_all_messages();
670 msg_one->msg_number = 0;
671 test_snapshots[0] = msg_one;
678 msg_two->msg_number = 0;
679 test_snapshots[1] = msg_two;
686 msg_three->msg_number = 0;
687 test_snapshots[2] = msg_three;
694 msg_three->msg_number = 1;
695 test_snapshots[3] = msg_four;
698 for (i = 0; i < TOTAL_SNAPSHOTS; ++i) {
699 if (test_vm_api_create_voicemail_files(
"default", test_snapshots[i]->exten, test_snapshots[i])) {
703 ast_log(AST_LOG_ERROR,
"Failed to store voicemail %s/%s\n",
704 "default", test_snapshots[i]->exten);
705 test_vm_api_destroy_mock_snapshot(test_snapshots[i]);
706 test_snapshots[i] = NULL;
714 static void test_vm_api_test_teardown(
void)
719 for (i = 0; i < TOTAL_SNAPSHOTS; ++i) {
720 test_vm_api_remove_voicemail(test_snapshots[i]);
721 test_vm_api_destroy_mock_snapshot(test_snapshots[i]);
722 test_snapshots[i] = NULL;
725 test_vm_api_remove_all_messages();
728 ast_vm_test_destroy_user(
"default",
"test_vm_api_1234");
729 ast_vm_test_destroy_user(
"default",
"test_vm_api_2345");
743 for (i = 0; i < TOTAL_SNAPSHOTS; ++i) {
744 for (j = 0; j < 12; ++j) {
746 if (!strcmp(msg->msg_id, test_snapshots[i]->msg_id)) {
755 test_snapshots[i]->msg_number = msg->msg_number;
773 static void message_playback_callback_fn(
struct ast_channel *chan,
const char *file,
int duration)
775 if ((chan) && !ast_strlen_zero(file) && duration > 0) {
776 global_entered_playback_callback = 1;
778 ast_log(AST_LOG_WARNING,
"Entered into message playback callback function with invalid parameters\n");
805 .
write = test_vm_api_mock_channel_write,
806 .read = test_vm_api_mock_channel_read,
816 static struct ast_channel *test_vm_api_create_mock_channel(
void)
821 if (!(mock_channel =
ast_channel_alloc(0,
AST_STATE_DOWN, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0,
"TestChannel"))) {
829 ast_channel_tech_set(mock_channel, &mock_channel_tech);
830 native_formats = ast_channel_nativeformats(mock_channel);
833 ast_channel_unlock(mock_channel);
844 info->name =
"nominal_snapshot";
845 info->category =
"/main/voicemail_api/";
846 info->summary =
"Nominal mailbox snapshot tests";
848 "Test retrieving mailbox snapshots";
849 return AST_TEST_NOT_RUN;
856 ast_test_status_update(
test,
"Test retrieving message 1 from INBOX of test_vm_1234\n");
857 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
858 VM_API_INT_VERIFY(1, test_mbox_snapshot->total_msg_num);
859 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 0);
862 ast_test_status_update(
test,
"Test retrieving message 0 from Old of test_vm_1234\n");
863 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"Old", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
864 VM_API_INT_VERIFY(1, test_mbox_snapshot->total_msg_num);
865 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"Old", 0);
868 ast_test_status_update(
test,
"Test retrieving message 0, 1 from Old and INBOX of test_vm_1234 ordered by time\n");
869 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 1);
870 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
871 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"INBOX", 0);
872 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 1);
875 ast_test_status_update(
test,
"Test retrieving message 1, 0 from Old and INBOX of test_vm_1234 ordered by time desc\n");
876 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 1, AST_VM_SNAPSHOT_SORT_BY_TIME, 1);
877 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
878 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 0);
879 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"INBOX", 1);
882 ast_test_status_update(
test,
"Test retrieving message 0, 1 from Old and INBOX of test_vm_1234 ordered by id\n");
883 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_ID, 1);
884 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
885 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 0);
886 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"INBOX", 1);
889 ast_test_status_update(
test,
"Test retrieving message 1, 0 from Old and INBOX of test_vm_1234 ordered by id desc\n");
890 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 1, AST_VM_SNAPSHOT_SORT_BY_ID, 1);
891 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
892 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"INBOX", 0);
893 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 1);
896 ast_test_status_update(
test,
"Test retrieving message 0, 1 from all folders of test_vm_1234 ordered by id\n");
897 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default", NULL, 0, AST_VM_SNAPSHOT_SORT_BY_ID, 0);
898 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
899 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"Old", 0);
900 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 0);
903 ast_test_status_update(
test,
"Test retrieving message 0, 1 from all folders of test_vm_1234 ordered by time\n");
904 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default", NULL, 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
905 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
906 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"Old", 0);
907 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 0);
910 ast_test_status_update(
test,
"Test retrieving message 0, 1 from all folders of test_vm_1234, default context ordered by time\n");
911 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234", NULL, NULL, 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
912 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
913 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[0], test_mbox_snapshot,
"Old", 0);
914 VM_API_SNAPSHOT_MSG_VERIFY(test_snapshots[1], test_mbox_snapshot,
"INBOX", 0);
919 return AST_TEST_PASS;
928 info->name =
"off_nominal_snapshot";
929 info->category =
"/main/voicemail_api/";
930 info->summary =
"Off nominal mailbox snapshot tests";
932 "Test off nominal requests for mailbox snapshots. This includes"
933 " testing the following:\n"
934 " * Access to non-exisstent mailbox\n"
935 " * Access to NULL mailbox\n"
936 " * Access to non-existent context\n"
937 " * Access to non-existent folder\n"
938 " * Access to NULL folder\n"
939 " * Invalid sort identifier";
940 return AST_TEST_NOT_RUN;
947 ast_test_status_update(
test,
"Test access to non-existent mailbox test_vm_api_3456\n");
948 VM_API_SNAPSHOT_OFF_NOMINAL_TEST(
"test_vm_api_3456",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
950 ast_test_status_update(
test,
"Test access to null mailbox\n");
951 VM_API_SNAPSHOT_OFF_NOMINAL_TEST(NULL,
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
953 ast_test_status_update(
test,
"Test access non-existent context test_vm_api_defunct\n");
954 VM_API_SNAPSHOT_OFF_NOMINAL_TEST(
"test_vm_api_1234",
"test_vm_api_defunct",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
956 ast_test_status_update(
test,
"Test non-existent folder test_vm_api_platypus\n");
957 VM_API_SNAPSHOT_OFF_NOMINAL_TEST(
"test_vm_api_1234",
"default",
"test_vm_api_platypus", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
961 return AST_TEST_PASS;
967 const char *inbox_msg_id;
968 const char *old_msg_id;
969 const char *multi_msg_ids[2];
973 info->name =
"nominal_move";
974 info->category =
"/main/voicemail_api/";
975 info->summary =
"Nominal move voicemail tests";
977 "Test nominal requests to move a voicemail to a different"
978 " folder. This includes moving messages given a context,"
979 " given a NULL context, and moving multiple messages";
980 return AST_TEST_NOT_RUN;
986 old_msg_id = test_snapshots[0]->msg_id;
987 inbox_msg_id = test_snapshots[1]->msg_id;
989 multi_msg_ids[0] = test_snapshots[2]->msg_id;
990 multi_msg_ids[1] = test_snapshots[3]->msg_id;
992 ast_test_status_update(
test,
"Test move of test_vm_api_1234 message from INBOX to Family\n");
993 VM_API_MOVE_MESSAGE(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id,
"Family");
995 ast_test_status_update(
test,
"Test move of test_vm_api_1234 message from Old to Family\n");
996 VM_API_MOVE_MESSAGE(
"test_vm_api_1234", NULL, 1,
"Old", &old_msg_id,
"Family");
999 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"Family", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1000 test_vm_api_update_test_snapshots(test_mbox_snapshot);
1003 VM_API_STRING_FIELD_VERIFY(
"Family", test_snapshots[0]->folder_name);
1004 VM_API_STRING_FIELD_VERIFY(
"Family", test_snapshots[1]->folder_name);
1005 VM_API_INT_VERIFY(0, test_snapshots[1]->msg_number);
1006 VM_API_INT_VERIFY(1, test_snapshots[0]->msg_number);
1009 ast_test_status_update(
test,
"Test move of test_vm_api_2345 messages from Inbox to Family\n");
1010 VM_API_MOVE_MESSAGE(
"test_vm_api_2345",
"default", 2,
"INBOX", multi_msg_ids,
"Family");
1013 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"Family", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1014 test_vm_api_update_test_snapshots(test_mbox_snapshot);
1017 VM_API_STRING_FIELD_VERIFY(
"Family", test_snapshots[2]->folder_name);
1018 VM_API_STRING_FIELD_VERIFY(
"Family", test_snapshots[3]->folder_name);
1020 ast_test_status_update(
test,
"Test move of test_vm_api_2345 message from Family to INBOX\n");
1021 VM_API_MOVE_MESSAGE(
"test_vm_api_2345",
"default", 2,
"Family", multi_msg_ids,
"INBOX");
1023 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1024 test_vm_api_update_test_snapshots(test_mbox_snapshot);
1027 VM_API_STRING_FIELD_VERIFY(
"INBOX", test_snapshots[2]->folder_name);
1028 VM_API_STRING_FIELD_VERIFY(
"INBOX", test_snapshots[3]->folder_name);
1030 VM_API_TEST_CLEANUP;
1032 return AST_TEST_PASS;
1037 const char *inbox_msg_id;
1038 const char *multi_msg_ids[4];
1042 info->name =
"off_nominal_move";
1043 info->category =
"/main/voicemail_api/";
1044 info->summary =
"Off nominal mailbox message move tests";
1046 "Test nominal requests to move a voicemail to a different"
1047 " folder. This includes testing the following:\n"
1048 " * Moving to a non-existent mailbox\n"
1049 " * Moving to a NULL mailbox\n"
1050 " * Moving to a non-existent context\n"
1051 " * Moving to/from non-existent folder\n"
1052 " * Moving to/from NULL folder\n"
1053 " * Invalid message identifier(s)";
1054 return AST_TEST_NOT_RUN;
1061 inbox_msg_id = test_snapshots[1]->msg_id;
1063 multi_msg_ids[0] = test_snapshots[0]->msg_id;
1064 multi_msg_ids[1] = test_snapshots[1]->msg_id;
1065 multi_msg_ids[2] = test_snapshots[2]->msg_id;
1066 multi_msg_ids[3] = test_snapshots[3]->msg_id;
1068 ast_test_status_update(
test,
"Test move attempt for invalid mailbox test_vm_3456\n");
1069 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_3456",
"default", 1,
"INBOX", &inbox_msg_id,
"Family");
1071 VM_API_MOVE_MESSAGE_OFF_NOMINAL(NULL,
"default", 1,
"INBOX", &inbox_msg_id,
"Family");
1073 ast_test_status_update(
test,
"Test move attempt for invalid context test_vm_api_defunct\n");
1074 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"test_vm_api_defunct", 1,
"INBOX", &inbox_msg_id,
"Family");
1076 ast_test_status_update(
test,
"Test move attempt to invalid folder\n");
1077 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id,
"SPAMALOT");
1079 ast_test_status_update(
test,
"Test move attempt from invalid folder\n");
1080 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"MEATINACAN", &inbox_msg_id,
"Family");
1082 ast_test_status_update(
test,
"Test move attempt to NULL folder\n");
1083 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id, NULL);
1085 ast_test_status_update(
test,
"Test move attempt from NULL folder\n");
1086 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1, NULL, &inbox_msg_id,
"Family");
1088 ast_test_status_update(
test,
"Test move attempt with non-existent message number\n");
1090 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id,
"Family");
1092 ast_test_status_update(
test,
"Test move attempt with invalid message number\n");
1094 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id,
"Family");
1096 ast_test_status_update(
test,
"Test move attempt with 0 number of messages\n");
1097 inbox_msg_id = test_snapshots[1]->msg_id;
1098 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 0,
"INBOX", &inbox_msg_id,
"Family");
1100 ast_test_status_update(
test,
"Test move attempt with invalid number of messages\n");
1101 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", -30,
"INBOX", &inbox_msg_id,
"Family");
1103 ast_test_status_update(
test,
"Test move attempt with non-existent multiple messages, where some messages exist\n");
1104 VM_API_MOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 4,
"INBOX", multi_msg_ids,
"Family");
1106 VM_API_TEST_CLEANUP;
1108 return AST_TEST_PASS;
1114 const char *inbox_msg_id;
1115 const char *old_msg_id;
1116 const char *multi_msg_ids[2];
1120 info->name =
"nominal_remove";
1121 info->category =
"/main/voicemail_api/";
1122 info->summary =
"Nominal mailbox remove message tests";
1124 "Tests removing messages from voicemail folders. Includes"
1125 " both removing messages one at a time, and in a set";
1126 return AST_TEST_NOT_RUN;
1133 old_msg_id = test_snapshots[0]->msg_id;
1134 inbox_msg_id = test_snapshots[1]->msg_id;
1136 multi_msg_ids[0] = test_snapshots[2]->msg_id;
1137 multi_msg_ids[1] = test_snapshots[3]->msg_id;
1139 ast_test_status_update(
test,
"Test removing a single message from INBOX\n");
1140 VM_API_REMOVE_MESSAGE(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id);
1142 ast_test_status_update(
test,
"Test removing a single message from Old\n");
1143 VM_API_REMOVE_MESSAGE(
"test_vm_api_1234",
"default", 1,
"Old", &old_msg_id);
1145 ast_test_status_update(
test,
"Test removing multiple messages from INBOX\n");
1146 VM_API_REMOVE_MESSAGE(
"test_vm_api_2345",
"default", 2,
"INBOX", multi_msg_ids);
1148 VM_API_TEST_CLEANUP;
1150 return AST_TEST_PASS;
1155 const char *inbox_msg_id;
1156 const char *multi_msg_ids[2];
1157 const char *empty_msg_ids =
"";
1161 info->name =
"off_nominal_remove";
1162 info->category =
"/main/voicemail_api/";
1163 info->summary =
"Off nominal mailbox message removal tests";
1165 "Test off nominal requests for removing messages from "
1166 "a mailbox. This includes:\n"
1167 " * Removing messages with an invalid mailbox\n"
1168 " * Removing messages from a NULL mailbox\n"
1169 " * Removing messages from an invalid context\n"
1170 " * Removing messages from an invalid folder\n"
1171 " * Removing messages from a NULL folder\n"
1172 " * Removing messages with bad identifiers";
1173 return AST_TEST_NOT_RUN;
1180 inbox_msg_id = test_snapshots[1]->msg_id;
1181 multi_msg_ids[0] = test_snapshots[2]->msg_id;
1182 multi_msg_ids[1] = test_snapshots[3]->msg_id;
1184 ast_test_status_update(
test,
"Test removing a single message with an invalid mailbox\n");
1185 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_3456",
"default", 1,
"INBOX", &inbox_msg_id);
1187 ast_test_status_update(
test,
"Test removing a single message with a NULL mailbox\n");
1188 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(NULL,
"default", 1,
"INBOX", &inbox_msg_id);
1190 ast_test_status_update(
test,
"Test removing a single message with an invalid context\n");
1191 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"defunct", 1,
"INBOX", &inbox_msg_id);
1193 ast_test_status_update(
test,
"Test removing a single message with an invalid folder\n");
1194 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"SPAMINACAN", &inbox_msg_id);
1196 ast_test_status_update(
test,
"Test removing a single message with a NULL folder\n");
1197 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1, NULL, &inbox_msg_id);
1199 ast_test_status_update(
test,
"Test removing a single message with an invalid message number\n");
1200 inbox_msg_id =
"POOPOO";
1201 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 1,
"INBOX", &inbox_msg_id);
1203 ast_test_status_update(
test,
"Test removing multiple messages with a single invalid message number\n");
1204 multi_msg_ids[1] =
"POOPOO";
1205 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_2345",
"default", 2,
"INBOX", multi_msg_ids);
1207 ast_test_status_update(
test,
"Test removing no messages with no message numbers\n");
1208 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", 0,
"INBOX", &empty_msg_ids);
1210 ast_test_status_update(
test,
"Test removing multiple messages with an invalid size specifier\n");
1211 VM_API_REMOVE_MESSAGE_OFF_NOMINAL(
"test_vm_api_2345",
"default", -30,
"INBOX", multi_msg_ids);
1213 VM_API_TEST_CLEANUP;
1215 return AST_TEST_PASS;
1221 const char *inbox_msg_id;
1222 const char *multi_msg_ids[2];
1226 info->name =
"nominal_forward";
1227 info->category =
"/main/voicemail_api/";
1228 info->summary =
"Nominal message forward tests";
1230 "Tests the nominal cases of forwarding messages"
1231 " between mailboxes";
1232 return AST_TEST_NOT_RUN;
1239 inbox_msg_id = test_snapshots[1]->msg_id;
1241 multi_msg_ids[0] = test_snapshots[2]->msg_id;
1242 multi_msg_ids[1] = test_snapshots[3]->msg_id;
1244 ast_test_status_update(
test,
"Test forwarding message 0 from test_vm_api_1234 INBOX to test_vm_api_2345 INBOX\n");
1245 VM_API_FORWARD_MESSAGE(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1248 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1249 VM_API_INT_VERIFY(1, test_mbox_snapshot->total_msg_num);
1253 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1254 VM_API_INT_VERIFY(3, test_mbox_snapshot->total_msg_num);
1257 ast_test_status_update(
test,
"Test forwarding message 0 from test_vm_api_1234 INBOX with default context to test_vm_api_2345 INBOX\n");
1258 VM_API_FORWARD_MESSAGE(
"test_vm_api_1234", NULL,
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1261 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1262 VM_API_INT_VERIFY(1, test_mbox_snapshot->total_msg_num);
1266 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1267 VM_API_INT_VERIFY(4, test_mbox_snapshot->total_msg_num);
1270 ast_test_status_update(
test,
"Test forwarding message 0 from test_vm_api_1234 INBOX to test_vm_api_2345 INBOX with default context\n");
1271 VM_API_FORWARD_MESSAGE(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345", NULL,
"INBOX", 1, &inbox_msg_id, 0);
1274 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1275 VM_API_INT_VERIFY(1, test_mbox_snapshot->total_msg_num);
1279 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1280 VM_API_INT_VERIFY(5, test_mbox_snapshot->total_msg_num);
1283 ast_test_status_update(
test,
"Test forwarding message 0 from test_vm_api_1234 INBOX to test_vm_api_2345 INBOX, deleting original\n");
1284 VM_API_FORWARD_MESSAGE(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345", NULL,
"INBOX", 1, &inbox_msg_id, 1);
1287 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1288 VM_API_INT_VERIFY(0, test_mbox_snapshot->total_msg_num);
1292 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1293 VM_API_INT_VERIFY(6, test_mbox_snapshot->total_msg_num);
1296 ast_test_status_update(
test,
"Test forwarding 2 messages from test_vm_api_2345 INBOX to test_vm_api_1234 INBOX");
1297 VM_API_FORWARD_MESSAGE(
"test_vm_api_2345",
"default",
"INBOX",
"test_vm_api_1234",
"default",
"INBOX", 2, multi_msg_ids, 0);
1300 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1301 VM_API_INT_VERIFY(6, test_mbox_snapshot->total_msg_num);
1305 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1306 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
1309 ast_test_status_update(
test,
"Test forwarding 2 messages from test_vm_api_2345 INBOX to test_vm_api_1234 Family, deleting original\n");
1310 VM_API_FORWARD_MESSAGE(
"test_vm_api_2345",
"default",
"INBOX",
"test_vm_api_1234",
"default",
"Family", 2, multi_msg_ids, 1);
1312 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"INBOX", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1313 VM_API_INT_VERIFY(4, test_mbox_snapshot->total_msg_num);
1317 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"Family", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1318 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
1321 VM_API_TEST_CLEANUP;
1323 return AST_TEST_PASS;
1328 const char *inbox_msg_id;
1329 const char *multi_msg_ids[4];
1331 const char *empty_msg_ids =
"";
1335 info->name =
"off_nominal_forward";
1336 info->category =
"/main/voicemail_api/";
1337 info->summary =
"Off nominal message forwarding tests";
1339 "Test off nominal forwarding of messages. This includes:\n"
1340 " * Invalid/NULL from mailbox\n"
1341 " * Invalid from context\n"
1342 " * Invalid/NULL from folder\n"
1343 " * Invalid/NULL to mailbox\n"
1344 " * Invalid to context\n"
1345 " * Invalid/NULL to folder\n"
1346 " * Invalid message numbers\n"
1347 " * Invalid number of messages";
1348 return AST_TEST_NOT_RUN;
1355 inbox_msg_id = test_snapshots[1]->msg_id;
1357 multi_msg_ids[0] = test_snapshots[0]->msg_id;
1358 multi_msg_ids[1] = test_snapshots[1]->msg_id;
1359 multi_msg_ids[2] = test_snapshots[2]->msg_id;
1360 multi_msg_ids[3] = test_snapshots[3]->msg_id;
1362 ast_test_status_update(
test,
"Test forwarding from an invalid mailbox\n");
1363 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_3456",
"default",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1365 ast_test_status_update(
test,
"Test forwarding from a NULL mailbox\n");
1366 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(NULL,
"default",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1368 ast_test_status_update(
test,
"Test forwarding from an invalid context\n");
1369 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"defunct",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1371 ast_test_status_update(
test,
"Test forwarding from an invalid folder\n");
1372 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"POTTEDMEAT",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1374 ast_test_status_update(
test,
"Test forwarding from a NULL folder\n");
1375 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default", NULL,
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1377 ast_test_status_update(
test,
"Test forwarding to an invalid mailbox\n");
1378 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_3456",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1380 ast_test_status_update(
test,
"Test forwarding to a NULL mailbox\n");
1381 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX", NULL,
"default",
"INBOX", 1, &inbox_msg_id, 0);
1383 ast_test_status_update(
test,
"Test forwarding to an invalid context\n");
1384 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"defunct",
"INBOX", 1, &inbox_msg_id, 0);
1386 ast_test_status_update(
test,
"Test forwarding to an invalid folder\n");
1388 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"default",
"POTTEDMEAT", 1, &inbox_msg_id, 0);
1390 ast_test_status_update(
test,
"Test forwarding to a NULL folder\n");
1391 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"default", NULL, 1, &inbox_msg_id, 0);
1393 ast_test_status_update(
test,
"Test forwarding when no messages are select\n");
1394 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 0, &empty_msg_ids, 0);
1396 ast_test_status_update(
test,
"Test forwarding a message that doesn't exist\n");
1397 inbox_msg_id =
"POOPOO";
1398 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", 1, &inbox_msg_id, 0);
1400 ast_test_status_update(
test,
"Test forwarding multiple messages, where some messages don't exist\n");
1401 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_2345",
"default",
"INBOX",
"test_vm_api_1234",
"default",
"INBOX", 4, multi_msg_ids, 0);
1403 ast_test_status_update(
test,
"Test forwarding a message with an invalid size specifier\n");
1404 VM_API_FORWARD_MESSAGE_OFF_NOMINAL(
"test_vm_api_1234",
"default",
"INBOX",
"test_vm_api_2345",
"default",
"INBOX", -30, &inbox_msg_id, 0);
1406 VM_API_TEST_CLEANUP;
1408 return AST_TEST_PASS;
1415 const char *message_id_1234;
1416 const char *message_id_2345[2];
1420 info->name =
"nominal_msg_playback";
1421 info->category =
"/main/voicemail_api/";
1422 info->summary =
"Nominal message playback";
1424 "Tests playing back a message on a provided"
1425 " channel or callback function";
1426 return AST_TEST_NOT_RUN;
1433 message_id_1234 = test_snapshots[1]->msg_id;
1434 message_id_2345[0] = test_snapshots[2]->msg_id;
1435 message_id_2345[1] = test_snapshots[3]->msg_id;
1437 if (!(test_channel = test_vm_api_create_mock_channel())) {
1438 ast_log(AST_LOG_ERROR,
"Failed to create mock channel for testing\n");
1439 VM_API_TEST_CLEANUP;
1440 return AST_TEST_FAIL;
1443 ast_test_status_update(
test,
"Playing back message from test_vm_api_1234 to mock channel\n");
1444 VM_API_PLAYBACK_MESSAGE(test_channel,
"test_vm_api_1234",
"default",
"INBOX", message_id_1234, NULL);
1446 ast_test_status_update(
test,
"Playing back message from test_vm_api_2345 to callback function\n");
1447 VM_API_PLAYBACK_MESSAGE(test_channel,
"test_vm_api_2345",
"default",
"INBOX", message_id_2345[0], &message_playback_callback_fn);
1448 VM_API_INT_VERIFY(1, global_entered_playback_callback);
1449 global_entered_playback_callback = 0;
1451 ast_test_status_update(
test,
"Playing back message from test_vm_api_2345 to callback function with default context\n");
1452 VM_API_PLAYBACK_MESSAGE(test_channel,
"test_vm_api_2345", NULL,
"INBOX", message_id_2345[1], &message_playback_callback_fn);
1453 VM_API_INT_VERIFY(1, global_entered_playback_callback);
1454 global_entered_playback_callback = 0;
1456 VM_API_SNAPSHOT_CREATE(
"test_vm_api_1234",
"default",
"Old", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1457 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
1460 VM_API_SNAPSHOT_CREATE(
"test_vm_api_2345",
"default",
"Old", 0, AST_VM_SNAPSHOT_SORT_BY_TIME, 0);
1461 VM_API_INT_VERIFY(2, test_mbox_snapshot->total_msg_num);
1465 VM_API_TEST_CLEANUP;
1467 return AST_TEST_PASS;
1474 const char *invalid_msg_id =
"POOPOO";
1478 info->name =
"off_nominal_msg_playback";
1479 info->category =
"/main/voicemail_api/";
1480 info->summary =
"Off nominal message playback";
1482 "Tests off nominal conditions in playing back a "
1483 "message. This includes:\n"
1484 " * Invalid/NULL mailbox\n"
1485 " * Invalid context\n"
1486 " * Invalid/NULL folder\n"
1487 " * Invalid message identifiers";
1488 return AST_TEST_NOT_RUN;
1494 msg_id = test_snapshots[0]->msg_id;
1496 if (!(test_channel = test_vm_api_create_mock_channel())) {
1497 ast_log(AST_LOG_ERROR,
"Failed to create mock channel for testing\n");
1498 VM_API_TEST_CLEANUP;
1499 return AST_TEST_FAIL;
1502 ast_test_status_update(
test,
"Playing back message from invalid mailbox\n");
1503 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel,
"test_vm_api_3456",
"default",
"INBOX", msg_id, NULL);
1505 ast_test_status_update(
test,
"Playing back message from NULL mailbox\n");
1506 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel, NULL,
"default",
"INBOX", msg_id, NULL);
1508 ast_test_status_update(
test,
"Playing back message from invalid context\n");
1509 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel,
"test_vm_api_1234",
"defunct",
"INBOX", msg_id, NULL);
1511 ast_test_status_update(
test,
"Playing back message from invalid folder\n");
1512 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel,
"test_vm_api_1234",
"default",
"BACON", msg_id, NULL);
1514 ast_test_status_update(
test,
"Playing back message from NULL folder\n");
1515 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel,
"test_vm_api_1234",
"default", NULL, msg_id, NULL);
1517 ast_test_status_update(
test,
"Playing back message with invalid message specifier\n");
1518 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel,
"test_vm_api_1234",
"default",
"INBOX", invalid_msg_id, NULL);
1520 ast_test_status_update(
test,
"Playing back message with NULL message specifier\n");
1521 VM_API_PLAYBACK_MESSAGE_OFF_NOMINAL(test_channel,
"test_vm_api_1234",
"default",
"INBOX", NULL, NULL);
1523 VM_API_TEST_CLEANUP;
1525 return AST_TEST_PASS;
1528 static int unload_module(
void)
1531 AST_TEST_UNREGISTER(voicemail_api_nominal_snapshot);
1532 AST_TEST_UNREGISTER(voicemail_api_off_nominal_snapshot);
1535 AST_TEST_UNREGISTER(voicemail_api_nominal_move);
1536 AST_TEST_UNREGISTER(voicemail_api_off_nominal_move);
1539 AST_TEST_UNREGISTER(voicemail_api_nominal_remove);
1540 AST_TEST_UNREGISTER(voicemail_api_off_nominal_remove);
1543 AST_TEST_UNREGISTER(voicemail_api_nominal_forward);
1544 AST_TEST_UNREGISTER(voicemail_api_off_nominal_forward);
1547 AST_TEST_UNREGISTER(voicemail_api_nominal_msg_playback);
1548 AST_TEST_UNREGISTER(voicemail_api_off_nominal_msg_playback);
1552 static int load_module(
void)
1555 AST_TEST_REGISTER(voicemail_api_nominal_snapshot);
1556 AST_TEST_REGISTER(voicemail_api_off_nominal_snapshot);
1559 AST_TEST_REGISTER(voicemail_api_nominal_move);
1560 AST_TEST_REGISTER(voicemail_api_off_nominal_move);
1563 AST_TEST_REGISTER(voicemail_api_nominal_remove);
1564 AST_TEST_REGISTER(voicemail_api_off_nominal_remove);
1567 AST_TEST_REGISTER(voicemail_api_nominal_forward);
1568 AST_TEST_REGISTER(voicemail_api_off_nominal_forward);
1571 AST_TEST_REGISTER(voicemail_api_nominal_msg_playback);
1572 AST_TEST_REGISTER(voicemail_api_off_nominal_msg_playback);
Main Channel structure associated with a channel.
Asterisk main include file. File version handling, generic pbx functions.
int(*const write)(struct ast_channel *chan, struct ast_frame *frame)
Write a frame, in standard format (see frame.h)
int ast_unlock_path(const char *path)
Unlock a path.
enum AST_LOCK_RESULT ast_lock_path(const char *path)
Lock a filesystem path.
General Asterisk PBX channel definitions.
Asterisk file paths, configured in asterisk.conf.
#define ast_string_field_init(x, size)
Initialize a field pool and fields.
#define AST_MAX_EXTENSION
struct ast_vm_mailbox_snapshot * ast_vm_mailbox_snapshot_destroy(struct ast_vm_mailbox_snapshot *mailbox_snapshot)
destroy a snapshot
Structure to describe a channel "technology", ie a channel driver See for examples: ...
struct ast_vm_mailbox_snapshot * ast_vm_mailbox_snapshot_create(const char *mailbox, const char *context, const char *folder, int descending, enum ast_vm_snapshot_sort_val sort_val, int combine_INBOX_and_OLD)
Create a snapshot of a mailbox which contains information about every msg.
#define AST_LIST_TRAVERSE(head, var, field)
Loops over (traverses) the entries in a list.
#define ast_calloc(num, len)
A wrapper for calloc()
void ast_hangup(struct ast_channel *chan)
Hang up a channel.
struct ast_frame ast_null_frame
Data structure associated with a single frame of data.
#define AST_TEST_DEFINE(hdr)
#define ASTERISK_GPL_KEY
The text the key() function should return.
#define ast_channel_alloc(needqueue, state, cid_num, cid_name, acctcode, exten, context, assignedids, requestor, amaflag,...)
Create a channel structure.
Asterisk module definitions.
#define ast_string_field_free_memory(x)
free all memory - to be called before destroying the object
Application convenience functions, designed to give consistent look and feel to Asterisk apps...
static force_inline int attribute_pure ast_str_hash(const char *str)
Compute a hash value on a string.
int ast_mkdir(const char *path, int mode)
Recursively create directory path.
#define ast_string_field_set(x, field, data)
Set a field to a simple string value.