|
Packit |
875988 |
/*
|
|
Packit |
875988 |
This file is part of libmicrohttpd
|
|
Packit |
875988 |
Copyright (C) 2017 Karlson2k (Evgeny Grin)
|
|
Packit |
875988 |
|
|
Packit |
875988 |
This test tool is free software; you can redistribute it and/or
|
|
Packit |
875988 |
modify it under the terms of the GNU General Public License as
|
|
Packit |
875988 |
published by the Free Software Foundation; either version 2, or
|
|
Packit |
875988 |
(at your option) any later version.
|
|
Packit |
875988 |
|
|
Packit |
875988 |
This test tool is distributed in the hope that it will be useful,
|
|
Packit |
875988 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
875988 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
875988 |
Lesser General Public License for more details.
|
|
Packit |
875988 |
|
|
Packit |
875988 |
You should have received a copy of the GNU Lesser General Public
|
|
Packit |
875988 |
License along with this library; if not, write to the Free Software
|
|
Packit |
875988 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
875988 |
*/
|
|
Packit |
875988 |
|
|
Packit |
875988 |
/**
|
|
Packit |
875988 |
* @file microhttpd/test_http_reasons.c
|
|
Packit |
875988 |
* @brief Unit tests for MHD_get_reason_phrase_for() function
|
|
Packit |
875988 |
* @author Karlson2k (Evgeny Grin)
|
|
Packit |
875988 |
*/
|
|
Packit |
875988 |
|
|
Packit |
875988 |
#include "mhd_options.h"
|
|
Packit |
875988 |
#include <stdio.h>
|
|
Packit |
875988 |
#include "microhttpd.h"
|
|
Packit |
875988 |
#include "mhd_str.h"
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int expect_result(int code, const char* expected)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
const char* const reason = MHD_get_reason_phrase_for(code);
|
|
Packit |
875988 |
if (MHD_str_equal_caseless_(reason, expected))
|
|
Packit |
875988 |
return 0;
|
|
Packit |
875988 |
fprintf(stderr, "Incorrect reason returned for code %d:\n Returned: \"%s\" \tExpected: \"%s\"\n",
|
|
Packit |
875988 |
code, reason, expected);
|
|
Packit |
875988 |
return 1;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int expect_absent(int code)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
return expect_result(code, "unknown");
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int test_absent_codes(void)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
errcount += expect_absent(0);
|
|
Packit |
875988 |
errcount += expect_absent(1);
|
|
Packit |
875988 |
errcount += expect_absent(50);
|
|
Packit |
875988 |
errcount += expect_absent(99);
|
|
Packit |
875988 |
errcount += expect_absent(600);
|
|
Packit |
875988 |
errcount += expect_absent(601);
|
|
Packit |
875988 |
errcount += expect_absent(900);
|
|
Packit |
875988 |
errcount += expect_absent(10000);
|
|
Packit |
875988 |
return errcount;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int test_1xx(void)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_CONTINUE, "continue");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_PROCESSING, "processing");
|
|
Packit |
875988 |
errcount += expect_absent(110);
|
|
Packit |
875988 |
errcount += expect_absent(190);
|
|
Packit |
875988 |
return errcount;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int test_2xx(void)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_OK, "ok");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_ALREADY_REPORTED, "already reported");
|
|
Packit |
875988 |
errcount += expect_absent(217);
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_IM_USED, "im used");
|
|
Packit |
875988 |
errcount += expect_absent(230);
|
|
Packit |
875988 |
errcount += expect_absent(295);
|
|
Packit |
875988 |
return errcount;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int test_3xx(void)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_MULTIPLE_CHOICES, "multiple choices");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_SEE_OTHER, "see other");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_PERMANENT_REDIRECT, "permanent redirect");
|
|
Packit |
875988 |
errcount += expect_absent(311);
|
|
Packit |
875988 |
errcount += expect_absent(399);
|
|
Packit |
875988 |
return errcount;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int test_4xx(void)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_BAD_REQUEST, "bad request");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_NOT_FOUND, "not found");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_URI_TOO_LONG, "uri too long");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_EXPECTATION_FAILED, "expectation failed");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE, "request header fields too large");
|
|
Packit |
875988 |
errcount += expect_absent(441);
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_NO_RESPONSE, "no response");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_UNAVAILABLE_FOR_LEGAL_REASONS, "unavailable for legal reasons");
|
|
Packit |
875988 |
errcount += expect_absent(470);
|
|
Packit |
875988 |
errcount += expect_absent(493);
|
|
Packit |
875988 |
return errcount;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
static int test_5xx(void)
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_INTERNAL_SERVER_ERROR, "internal server error");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_BAD_GATEWAY, "bad gateway");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_HTTP_VERSION_NOT_SUPPORTED, "http version not supported");
|
|
Packit |
875988 |
errcount += expect_result(MHD_HTTP_NETWORK_AUTHENTICATION_REQUIRED, "network authentication required");
|
|
Packit |
875988 |
errcount += expect_absent(520);
|
|
Packit |
875988 |
errcount += expect_absent(597);
|
|
Packit |
875988 |
return errcount;
|
|
Packit |
875988 |
}
|
|
Packit |
875988 |
|
|
Packit |
875988 |
int main(int argc, char * argv[])
|
|
Packit |
875988 |
{
|
|
Packit |
875988 |
int errcount = 0;
|
|
Packit |
875988 |
(void)argc; (void)argv; /* Unused. Silent compiler warning. */
|
|
Packit |
875988 |
|
|
Packit |
875988 |
errcount += test_absent_codes();
|
|
Packit |
875988 |
errcount += test_1xx();
|
|
Packit |
875988 |
errcount += test_2xx();
|
|
Packit |
875988 |
errcount += test_3xx();
|
|
Packit |
875988 |
errcount += test_4xx();
|
|
Packit |
875988 |
errcount += test_5xx();
|
|
Packit |
875988 |
return errcount == 0 ? 0 : 1;
|
|
Packit |
875988 |
}
|