root/src/tests/kits/net/netservices2/HttpProtocolTest.h
/*
 * Copyright 2021 Haiku, inc.
 * Distributed under the terms of the MIT License.
 */
#ifndef HTTP_TEST_H
#define HTTP_TEST_H


#include <HttpSession.h>
#include <TestCase.h>
#include <TestSuite.h>
#include <tools/cppunit/ThreadedTestCase.h>

#include "HttpDebugLogger.h"
#include "TestServer.h"

using BPrivate::Network::BHttpSession;


class HttpProtocolTest : public BTestCase
{
public:
                                                                HttpProtocolTest();

                        void                            HttpFieldsTest();
                        void                            HttpMethodTest();
                        void                            HttpRequestTest();
                        void                            HttpTimeTest();

        static  void                            AddTests(BTestSuite& suite);
};


class HttpIntegrationTest : public BThreadedTestCase
{
public:
                                                                HttpIntegrationTest(TestServerMode mode);

        virtual void                            setUp() override;
        virtual void                            tearDown() override;

                        void                            HostAndNetworkFailTest();
                        void                            GetTest();
                        void                            GetWithBufferTest();
                        void                            HeadTest();
                        void                            NoContentTest();
                        void                            AutoRedirectTest();
                        void                            BasicAuthTest();
                        void                            StopOnErrorTest();
                        void                            RequestCancelTest();
                        void                            PostTest();

        static  void                            AddTests(BTestSuite& suite);

private:
                        TestServer                      fTestServer;
                        BHttpSession            fSession;
                        HttpDebugLogger*        fLogger;
                        BMessenger                      fLoggerMessenger;
};

#endif