diff --git a/test/http/http2_connection_test.cpp b/test/http/http2_connection_test.cpp
index ea130e1..d972be6 100644
--- a/test/http/http2_connection_test.cpp
+++ b/test/http/http2_connection_test.cpp
@@ -5,6 +5,7 @@
 #include "http/http_request.hpp"
 #include "http/http_response.hpp"
 #include "nghttp2_adapters.hpp"
+#include "test_stream.hpp"
 
 #include <nghttp2/nghttp2.h>
 #include <unistd.h>
@@ -13,7 +14,6 @@
 #include <boost/asio/io_context.hpp>
 #include <boost/asio/steady_timer.hpp>
 #include <boost/asio/write.hpp>
-#include <boost/beast/_experimental/test/stream.hpp>
 #include <boost/beast/http/field.hpp>
 
 #include <bit>
@@ -96,8 +96,8 @@
 {
     using namespace std::literals;
     boost::asio::io_context io;
-    boost::beast::test::stream stream(io);
-    boost::beast::test::stream out(io);
+    TestStream stream(io);
+    TestStream out(io);
     stream.connect(out);
     // This is a binary pre-encrypted stream captured from curl for a request to
     // curl https://localhost:18080/redfish/v1/
@@ -124,8 +124,7 @@
     FakeHandler handler;
     boost::asio::steady_timer timer(io);
     std::function<std::string()> date(getDateStr);
-    auto conn = std::make_shared<
-        HTTP2Connection<boost::beast::test::stream, FakeHandler>>(
+    auto conn = std::make_shared<HTTP2Connection<TestStream, FakeHandler>>(
         std::move(stream), &handler, date);
     conn->start();
 
diff --git a/test/http/http_connection_test.cpp b/test/http/http_connection_test.cpp
index 5e58f62..69cf21a 100644
--- a/test/http/http_connection_test.cpp
+++ b/test/http/http_connection_test.cpp
@@ -4,9 +4,12 @@
 #include "http/http_connection.hpp"
 #include "http/http_request.hpp"
 #include "http/http_response.hpp"
+#include "http_connect_types.hpp"
+#include "test_stream.hpp"
 
 #include <boost/asio/buffer.hpp>
 #include <boost/asio/io_context.hpp>
+#include <boost/asio/ssl/context.hpp>
 #include <boost/asio/steady_timer.hpp>
 #include <boost/beast/_experimental/test/stream.hpp>
 #include <boost/beast/http/field.hpp>
@@ -24,10 +27,11 @@
 
 struct FakeHandler
 {
+    template <typename Adaptor>
     static void handleUpgrade(
         const std::shared_ptr<Request>& /*req*/,
         const std::shared_ptr<bmcweb::AsyncResp>& /*asyncResp*/,
-        boost::beast::test::stream&& /*adaptor*/)
+        Adaptor&& /*adaptor*/)
     {
         // Handle Upgrade should never be called
         EXPECT_FALSE(true);
@@ -63,8 +67,8 @@
 {
     boost::asio::io_context io;
     ClockFake clock;
-    boost::beast::test::stream stream(io);
-    boost::beast::test::stream out(io);
+    TestStream stream(io);
+    TestStream out(io);
     stream.connect(out);
 
     out.write_some(boost::asio::buffer(
@@ -73,10 +77,13 @@
     boost::asio::steady_timer timer(io);
     std::function<std::string()> date(
         std::bind_front(&ClockFake::getDateStr, &clock));
-    std::shared_ptr<crow::Connection<boost::beast::test::stream, FakeHandler>>
-        conn = std::make_shared<
-            crow::Connection<boost::beast::test::stream, FakeHandler>>(
-            &handler, std::move(timer), date, std::move(stream));
+
+    boost::asio::ssl::context context{boost::asio::ssl::context::tls};
+    std::shared_ptr<crow::Connection<TestStream, FakeHandler>> conn =
+        std::make_shared<crow::Connection<TestStream, FakeHandler>>(
+            &handler, HttpType::HTTP, std::move(timer), date,
+            boost::asio::ssl::stream<TestStream>(std::move(stream), context));
+    conn->disableAuth();
     conn->start();
     io.run_for(std::chrono::seconds(1000));
     EXPECT_TRUE(handler.called);
diff --git a/test/http/server_sent_event_test.cpp b/test/http/server_sent_event_test.cpp
index 199f9b3..e18686e 100644
--- a/test/http/server_sent_event_test.cpp
+++ b/test/http/server_sent_event_test.cpp
@@ -2,11 +2,11 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #include "http/server_sent_event.hpp"
 #include "http_request.hpp"
+#include "test_stream.hpp"
 
 #include <boost/asio/buffer.hpp>
 #include <boost/asio/io_context.hpp>
 #include <boost/asio/read.hpp>
-#include <boost/beast/_experimental/test/stream.hpp>
 
 #include <chrono>
 #include <memory>
@@ -26,8 +26,8 @@
 TEST(ServerSentEvent, SseWorks)
 {
     boost::asio::io_context io;
-    boost::beast::test::stream stream(io);
-    boost::beast::test::stream out(io);
+    TestStream stream(io);
+    TestStream out(io);
     stream.connect(out);
 
     Request req;
@@ -40,9 +40,9 @@
     bool closeCalled = false;
     auto closeHandler = [&closeCalled](Connection&) { closeCalled = true; };
 
-    std::shared_ptr<ConnectionImpl<boost::beast::test::stream>> conn =
-        std::make_shared<ConnectionImpl<boost::beast::test::stream>>(
-            std::move(stream), openHandler, closeHandler);
+    std::shared_ptr<ConnectionImpl<TestStream>> conn =
+        std::make_shared<ConnectionImpl<TestStream>>(std::move(stream),
+                                                     openHandler, closeHandler);
     conn->start(req);
     // Connect
     {
