1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
#ifndef _POSIX_SOURCE
#define _POSIX_SOURCE /* For getaddrinfo(3) */
#endif
#ifndef _BSD_SOURCE
#define _BSD_SOURCE /* For NI_MAXHOST up to glibc-2.19 */
#endif
#ifndef _DEFAULT_SOURCE
#define _DEFAULT_SOURCE /* For NI_MAXHOST since glibc-2.20 */
#endif
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE 600 /* For unsetenv(3) */
#endif
#include "../test.h"
#include "server.h"
#include "isds.h"
static const char *username = "Doug1as$";
static const char *password = "42aA#bc8";
static int test_login(const isds_error error, struct isds_ctx *context,
const char *url, const char *username, const char *password,
const struct isds_pki_credentials *pki_credentials,
struct isds_otp *otp) {
isds_error err;
err = isds_login(context, url, username, password, pki_credentials, otp);
if (error != err)
FAIL_TEST("Wrong return code: expected=%s, returned=%s (%s)",
isds_strerror(error), isds_strerror(err),
isds_long_message(context));
PASS_TEST;
}
static int test_isds_delete_message_from_storage(const isds_error error,
struct isds_ctx *context, const char *message_id, _Bool incoming) {
isds_error err;
err = isds_delete_message_from_storage(context, message_id, incoming);
if (error != err)
FAIL_TEST("Wrong return code: expected=%s, returned=%s (%s)",
isds_strerror(error), isds_strerror(err),
isds_long_message(context));
PASS_TEST;
}
int main(int argc, char **argv) {
int error;
pid_t server_process;
struct isds_ctx *context = NULL;
char *url = NULL;
INIT_TEST("isds_delete_message_from_storage");
if (unsetenv("http_proxy")) {
ABORT_UNIT("Could not remove http_proxy variable from environment\n");
}
if (isds_init()) {
isds_cleanup();
ABORT_UNIT("isds_init() failed\n");
}
context = isds_ctx_create();
if (!context) {
isds_cleanup();
ABORT_UNIT("isds_ctx_create() failed\n");
}
{
const struct arguments_DS_Dx_EraseMessage service_arguments = {
.message_id = "1234567",
.incoming = 1
};
const struct service_configuration services[] = {
{ SERVICE_DS_Dz_DummyOperation, NULL },
{ SERVICE_DS_Dx_EraseMessage, &service_arguments },
{ SERVICE_END, NULL }
};
const struct arguments_basic_authentication server_arguments = {
.username = username,
.password = password,
.isds_deviations = 1,
.services = services
};
error = start_server(&server_process, &url,
server_basic_authentication, &server_arguments, NULL);
if (error == -1) {
isds_ctx_free(&context);
isds_cleanup();
ABORT_UNIT(server_error);
}
TEST("prior logging in", test_isds_delete_message_from_storage,
IE_CONNECTION_CLOSED, context, "1234567", 1);
TEST("login", test_login, IE_SUCCESS,
context, url, username, password, NULL, NULL);
TEST("bad message ID", test_isds_delete_message_from_storage, IE_INVAL,
context, "1000000", 1);
TEST("bad direction", test_isds_delete_message_from_storage, IE_INVAL,
context, "1234567", 0);
TEST("good ID and direction", test_isds_delete_message_from_storage,
IE_SUCCESS, context, "1234567", 1);
if (stop_server(server_process)) {
ABORT_UNIT(server_error);
}
free(url);
url = NULL;
}
isds_logout(context);
isds_ctx_free(&context);
isds_cleanup();
SUM_TEST();
}
|