Add test for StunMessage::ValidateMessageIntegrity

This also tests the UMA stats newly added to it.

Bug: chromium:1177125
Change-Id: I89bb17c1897565cd91ea5bbd92062018317738ca
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/278600
Reviewed-by: Johannes Kron <kron@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38345}
This commit is contained in:
Harald Alvestrand
2022-10-10 09:24:21 +00:00
committed by WebRTC LUCI CQ
parent 8c8b5c3f82
commit 1f4f672687
2 changed files with 24 additions and 0 deletions

View File

@ -146,6 +146,7 @@ if (rtc_include_tests) {
"../../rtc_base:byte_order", "../../rtc_base:byte_order",
"../../rtc_base:macromagic", "../../rtc_base:macromagic",
"../../rtc_base:socket_address", "../../rtc_base:socket_address",
"../../system_wrappers:metrics",
"../../test:test_support", "../../test:test_support",
"//testing/gtest", "//testing/gtest",
] ]

View File

@ -20,6 +20,7 @@
#include "rtc_base/byte_buffer.h" #include "rtc_base/byte_buffer.h"
#include "rtc_base/byte_order.h" #include "rtc_base/byte_order.h"
#include "rtc_base/socket_address.h" #include "rtc_base/socket_address.h"
#include "system_wrappers/include/metrics.h"
#include "test/gtest.h" #include "test/gtest.h"
namespace cricket { namespace cricket {
@ -1855,4 +1856,26 @@ TEST_F(StunTest, SizeRestrictionOnAttributes) {
ASSERT_FALSE(msg.Write(&out)); ASSERT_FALSE(msg.Write(&out));
} }
TEST_F(StunTest, ValidateMessageIntegrityWithParser) {
// Try the messages from RFC 5769.
StunMessage message;
rtc::ByteBufferReader reader(
reinterpret_cast<const char*>(kRfc5769SampleRequest),
sizeof(kRfc5769SampleRequest));
EXPECT_TRUE(message.Read(&reader));
EXPECT_EQ(message.ValidateMessageIntegrity(kRfc5769SampleMsgPassword),
StunMessage::IntegrityStatus::kIntegrityOk);
EXPECT_EQ(webrtc::metrics::NumEvents(
"WebRTC.Stun.Integrity.Request",
static_cast<int>(StunMessage::IntegrityStatus::kIntegrityOk)),
1);
EXPECT_EQ(message.ValidateMessageIntegrity("Invalid password"),
StunMessage::IntegrityStatus::kIntegrityBad);
EXPECT_EQ(webrtc::metrics::NumEvents(
"WebRTC.Stun.Integrity.Request",
static_cast<int>(StunMessage::IntegrityStatus::kIntegrityBad)),
1);
EXPECT_EQ(webrtc::metrics::NumSamples("WebRTC.Stun.Integrity.Request"), 2);
}
} // namespace cricket } // namespace cricket