Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(318)

Side by Side Diff: extensions/browser/api/cast_channel/cast_framer_unittest.cc

Issue 2891923004: [cast_channel] Make cast_channel related files not depend on "cast_channel.h" (Closed)
Patch Set: fix windows compile errors Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/api/cast_channel/cast_framer.h" 5 #include "extensions/browser/api/cast_channel/cast_framer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <string> 10 #include <string>
11 11
12 #include "extensions/common/api/cast_channel/cast_channel.pb.h" 12 #include "extensions/common/api/cast_channel/cast_channel.pb.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace extensions { 15 namespace extensions {
16 namespace api { 16 namespace api {
17 namespace cast_channel { 17 namespace cast_channel {
18
19 using ::cast_channel::ChannelError;
20
18 class CastFramerTest : public testing::Test { 21 class CastFramerTest : public testing::Test {
19 public: 22 public:
20 CastFramerTest() {} 23 CastFramerTest() {}
21 ~CastFramerTest() override {} 24 ~CastFramerTest() override {}
22 25
23 void SetUp() override { 26 void SetUp() override {
24 cast_message_.set_protocol_version(CastMessage::CASTV2_1_0); 27 cast_message_.set_protocol_version(CastMessage::CASTV2_1_0);
25 cast_message_.set_source_id("source"); 28 cast_message_.set_source_id("source");
26 cast_message_.set_destination_id("destination"); 29 cast_message_.set_destination_id("destination");
27 cast_message_.set_namespace_("namespace"); 30 cast_message_.set_namespace_("namespace");
(...skipping 19 matching lines...) Expand all
47 50
48 TEST_F(CastFramerTest, TestMessageFramerCompleteMessage) { 51 TEST_F(CastFramerTest, TestMessageFramerCompleteMessage) {
49 ChannelError error; 52 ChannelError error;
50 size_t message_length; 53 size_t message_length;
51 54
52 WriteToBuffer(cast_message_str_); 55 WriteToBuffer(cast_message_str_);
53 56
54 // Receive 1 byte of the header, framer demands 3 more bytes. 57 // Receive 1 byte of the header, framer demands 3 more bytes.
55 EXPECT_EQ(4u, framer_->BytesRequested()); 58 EXPECT_EQ(4u, framer_->BytesRequested());
56 EXPECT_EQ(nullptr, framer_->Ingest(1, &message_length, &error).get()); 59 EXPECT_EQ(nullptr, framer_->Ingest(1, &message_length, &error).get());
57 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, error); 60 EXPECT_EQ(ChannelError::NONE, error);
58 EXPECT_EQ(3u, framer_->BytesRequested()); 61 EXPECT_EQ(3u, framer_->BytesRequested());
59 62
60 // Ingest remaining 3, expect that the framer has moved on to requesting the 63 // Ingest remaining 3, expect that the framer has moved on to requesting the
61 // body contents. 64 // body contents.
62 EXPECT_EQ(nullptr, framer_->Ingest(3, &message_length, &error).get()); 65 EXPECT_EQ(nullptr, framer_->Ingest(3, &message_length, &error).get());
63 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, error); 66 EXPECT_EQ(ChannelError::NONE, error);
64 EXPECT_EQ( 67 EXPECT_EQ(
65 cast_message_str_.size() - MessageFramer::MessageHeader::header_size(), 68 cast_message_str_.size() - MessageFramer::MessageHeader::header_size(),
66 framer_->BytesRequested()); 69 framer_->BytesRequested());
67 70
68 // Remainder of packet sent over the wire. 71 // Remainder of packet sent over the wire.
69 std::unique_ptr<CastMessage> message; 72 std::unique_ptr<CastMessage> message;
70 message = framer_->Ingest(framer_->BytesRequested(), &message_length, &error); 73 message = framer_->Ingest(framer_->BytesRequested(), &message_length, &error);
71 EXPECT_NE(static_cast<CastMessage*>(nullptr), message.get()); 74 EXPECT_NE(static_cast<CastMessage*>(nullptr), message.get());
72 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, error); 75 EXPECT_EQ(ChannelError::NONE, error);
73 EXPECT_EQ(message->SerializeAsString(), cast_message_.SerializeAsString()); 76 EXPECT_EQ(message->SerializeAsString(), cast_message_.SerializeAsString());
74 EXPECT_EQ(4u, framer_->BytesRequested()); 77 EXPECT_EQ(4u, framer_->BytesRequested());
75 EXPECT_EQ(message->SerializeAsString().size(), message_length); 78 EXPECT_EQ(message->SerializeAsString().size(), message_length);
76 } 79 }
77 80
78 TEST_F(CastFramerTest, TestSerializeErrorMessageTooLarge) { 81 TEST_F(CastFramerTest, TestSerializeErrorMessageTooLarge) {
79 std::string serialized; 82 std::string serialized;
80 CastMessage big_message; 83 CastMessage big_message;
81 big_message.CopyFrom(cast_message_); 84 big_message.CopyFrom(cast_message_);
82 std::string payload; 85 std::string payload;
83 payload.append(MessageFramer::MessageHeader::max_message_size() + 1, 'x'); 86 payload.append(MessageFramer::MessageHeader::max_message_size() + 1, 'x');
84 big_message.set_payload_utf8(payload); 87 big_message.set_payload_utf8(payload);
85 EXPECT_FALSE(MessageFramer::Serialize(big_message, &serialized)); 88 EXPECT_FALSE(MessageFramer::Serialize(big_message, &serialized));
86 } 89 }
87 90
88 TEST_F(CastFramerTest, TestIngestIllegalLargeMessage) { 91 TEST_F(CastFramerTest, TestIngestIllegalLargeMessage) {
89 std::string mangled_cast_message = cast_message_str_; 92 std::string mangled_cast_message = cast_message_str_;
90 mangled_cast_message[0] = 88; 93 mangled_cast_message[0] = 88;
91 mangled_cast_message[1] = 88; 94 mangled_cast_message[1] = 88;
92 mangled_cast_message[2] = 88; 95 mangled_cast_message[2] = 88;
93 mangled_cast_message[3] = 88; 96 mangled_cast_message[3] = 88;
94 WriteToBuffer(mangled_cast_message); 97 WriteToBuffer(mangled_cast_message);
95 98
96 size_t bytes_ingested; 99 size_t bytes_ingested;
97 ChannelError error; 100 ChannelError error;
98 EXPECT_EQ(4u, framer_->BytesRequested()); 101 EXPECT_EQ(4u, framer_->BytesRequested());
99 EXPECT_EQ(nullptr, framer_->Ingest(4, &bytes_ingested, &error).get()); 102 EXPECT_EQ(nullptr, framer_->Ingest(4, &bytes_ingested, &error).get());
100 EXPECT_EQ(cast_channel::CHANNEL_ERROR_INVALID_MESSAGE, error); 103 EXPECT_EQ(ChannelError::INVALID_MESSAGE, error);
101 EXPECT_EQ(0u, framer_->BytesRequested()); 104 EXPECT_EQ(0u, framer_->BytesRequested());
102 105
103 // Test that the parser enters a terminal error state. 106 // Test that the parser enters a terminal error state.
104 WriteToBuffer(cast_message_str_); 107 WriteToBuffer(cast_message_str_);
105 EXPECT_EQ(0u, framer_->BytesRequested()); 108 EXPECT_EQ(0u, framer_->BytesRequested());
106 EXPECT_EQ(nullptr, framer_->Ingest(4, &bytes_ingested, &error).get()); 109 EXPECT_EQ(nullptr, framer_->Ingest(4, &bytes_ingested, &error).get());
107 EXPECT_EQ(cast_channel::CHANNEL_ERROR_INVALID_MESSAGE, error); 110 EXPECT_EQ(ChannelError::INVALID_MESSAGE, error);
108 EXPECT_EQ(0u, framer_->BytesRequested()); 111 EXPECT_EQ(0u, framer_->BytesRequested());
109 } 112 }
110 113
111 TEST_F(CastFramerTest, TestUnparsableBodyProto) { 114 TEST_F(CastFramerTest, TestUnparsableBodyProto) {
112 // Message header is OK, but the body is replaced with "x"en. 115 // Message header is OK, but the body is replaced with "x"en.
113 std::string mangled_cast_message = cast_message_str_; 116 std::string mangled_cast_message = cast_message_str_;
114 for (size_t i = MessageFramer::MessageHeader::header_size(); 117 for (size_t i = MessageFramer::MessageHeader::header_size();
115 i < mangled_cast_message.size(); 118 i < mangled_cast_message.size();
116 ++i) { 119 ++i) {
117 std::fill(mangled_cast_message.begin() + 120 std::fill(mangled_cast_message.begin() +
118 MessageFramer::MessageHeader::header_size(), 121 MessageFramer::MessageHeader::header_size(),
119 mangled_cast_message.end(), 122 mangled_cast_message.end(),
120 'x'); 123 'x');
121 } 124 }
122 WriteToBuffer(mangled_cast_message); 125 WriteToBuffer(mangled_cast_message);
123 126
124 // Send header. 127 // Send header.
125 size_t message_length; 128 size_t message_length;
126 ChannelError error; 129 ChannelError error;
127 EXPECT_EQ(4u, framer_->BytesRequested()); 130 EXPECT_EQ(4u, framer_->BytesRequested());
128 EXPECT_EQ(nullptr, framer_->Ingest(4, &message_length, &error).get()); 131 EXPECT_EQ(nullptr, framer_->Ingest(4, &message_length, &error).get());
129 EXPECT_EQ(cast_channel::CHANNEL_ERROR_NONE, error); 132 EXPECT_EQ(ChannelError::NONE, error);
130 EXPECT_EQ(cast_message_str_.size() - 4, framer_->BytesRequested()); 133 EXPECT_EQ(cast_message_str_.size() - 4, framer_->BytesRequested());
131 134
132 // Send body, expect an error. 135 // Send body, expect an error.
133 std::unique_ptr<CastMessage> message; 136 std::unique_ptr<CastMessage> message;
134 EXPECT_EQ(nullptr, framer_->Ingest(framer_->BytesRequested(), &message_length, 137 EXPECT_EQ(nullptr, framer_->Ingest(framer_->BytesRequested(), &message_length,
135 &error).get()); 138 &error).get());
136 EXPECT_EQ(cast_channel::CHANNEL_ERROR_INVALID_MESSAGE, error); 139 EXPECT_EQ(ChannelError::INVALID_MESSAGE, error);
137 } 140 }
138 } // namespace cast_channel 141 } // namespace cast_channel
139 } // namespace api 142 } // namespace api
140 } // namespace extensions 143 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/cast_channel/cast_framer.cc ('k') | extensions/browser/api/cast_channel/cast_socket.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698