blob: 2eb6f51b870f3bdd613acc30af308a934cab358f [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "quiche/common/masque/connect_ip_datagram_payload.h"
#include <memory>
#include <string>
#include "absl/strings/string_view.h"
#include "quiche/common/platform/api/quiche_test.h"
namespace quiche::test {
namespace {
TEST(ConnectIpDatagramPayloadTest, ParseIpPacket) {
static constexpr char kDatagramPayload[] = "\x00packet";
std::unique_ptr<ConnectIpDatagramPayload> parsed =
ConnectIpDatagramPayload::Parse(
absl::string_view(kDatagramPayload, sizeof(kDatagramPayload) - 1));
ASSERT_TRUE(parsed);
EXPECT_EQ(parsed->GetContextId(),
ConnectIpDatagramIpPacketPayload::kContextId);
EXPECT_EQ(parsed->GetType(), ConnectIpDatagramPayload::Type::kIpPacket);
EXPECT_EQ(parsed->GetIpProxyingPayload(), "packet");
}
TEST(ConnectIpDatagramPayloadTest, SerializeIpPacket) {
static constexpr absl::string_view kIpPacket = "packet";
ConnectIpDatagramIpPacketPayload payload(kIpPacket);
EXPECT_EQ(payload.GetIpProxyingPayload(), kIpPacket);
EXPECT_EQ(payload.Serialize(), std::string("\x00packet", 7));
}
TEST(ConnectIpDatagramPayloadTest, ParseUnknownPacket) {
static constexpr char kDatagramPayload[] = "\x05packet";
std::unique_ptr<ConnectIpDatagramPayload> parsed =
ConnectIpDatagramPayload::Parse(
absl::string_view(kDatagramPayload, sizeof(kDatagramPayload) - 1));
ASSERT_TRUE(parsed);
EXPECT_EQ(parsed->GetContextId(), 5);
EXPECT_EQ(parsed->GetType(), ConnectIpDatagramPayload::Type::kUnknown);
EXPECT_EQ(parsed->GetIpProxyingPayload(), "packet");
}
TEST(ConnectIpDatagramPayloadTest, SerializeUnknownPacket) {
static constexpr absl::string_view kInnerIpProxyingPayload = "packet";
ConnectIpDatagramUnknownPayload payload(4u, kInnerIpProxyingPayload);
EXPECT_EQ(payload.GetIpProxyingPayload(), kInnerIpProxyingPayload);
EXPECT_EQ(payload.Serialize(), std::string("\x04packet", 7));
}
} // namespace
} // namespace quiche::test