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

Side by Side Diff: net/spdy/spdy_framer_test.cc

Issue 9521011: Remove the origin field from the CREDENTIAL frame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_http_stream_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "net/spdy/spdy_framer.h" 9 #include "net/spdy/spdy_framer.h"
10 #include "net/spdy/spdy_protocol.h" 10 #include "net/spdy/spdy_protocol.h"
(...skipping 1501 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 } 1512 }
1513 } 1513 }
1514 1514
1515 TEST_F(SpdyFramerTest, CreateCredential) { 1515 TEST_F(SpdyFramerTest, CreateCredential) {
1516 SpdyFramer framer; 1516 SpdyFramer framer;
1517 1517
1518 { 1518 {
1519 const char kDescription[] = "CREDENTIAL frame"; 1519 const char kDescription[] = "CREDENTIAL frame";
1520 const unsigned char kFrameData[] = { 1520 const unsigned char kFrameData[] = {
1521 0x80, 0x02, 0x00, 0x0A, 1521 0x80, 0x02, 0x00, 0x0A,
1522 0x00, 0x00, 0x00, 0x3F, 1522 0x00, 0x00, 0x00, 0x33,
1523 0x00, 0x03, 0x00, 0x0A, 1523 0x00, 0x03, 0x00, 0x00,
1524 'g', 'o', 'o', 'g',
1525 'l', 'e', '.', 'c',
1526 'o', 'm', 0x00, 0x00,
1527 0x00, 0x05, 'p', 'r', 1524 0x00, 0x05, 'p', 'r',
1528 'o', 'o', 'f', 0x00, 1525 'o', 'o', 'f', 0x00,
1529 0x00, 0x00, 0x06, 'a', 1526 0x00, 0x00, 0x06, 'a',
1530 ' ', 'c', 'e', 'r', 1527 ' ', 'c', 'e', 'r',
1531 't', 0x00, 0x00, 0x00, 1528 't', 0x00, 0x00, 0x00,
1532 0x0C, 'a', 'n', 'o', 1529 0x0C, 'a', 'n', 'o',
1533 't', 'h', 'e', 'r', 1530 't', 'h', 'e', 'r',
1534 ' ', 'c', 'e', 'r', 1531 ' ', 'c', 'e', 'r',
1535 't', 0x00, 0x00, 0x00, 1532 't', 0x00, 0x00, 0x00,
1536 0x0A, 'f', 'i', 'n', 1533 0x0A, 'f', 'i', 'n',
1537 'a', 'l', ' ', 'c', 1534 'a', 'l', ' ', 'c',
1538 'e', 'r', 't', 1535 'e', 'r', 't',
1539 }; 1536 };
1540 SpdyCredential credential; 1537 SpdyCredential credential;
1541 credential.slot = 3; 1538 credential.slot = 3;
1542 credential.origin = "google.com";
1543 credential.proof = "proof"; 1539 credential.proof = "proof";
1544 credential.certs.push_back("a cert"); 1540 credential.certs.push_back("a cert");
1545 credential.certs.push_back("another cert"); 1541 credential.certs.push_back("another cert");
1546 credential.certs.push_back("final cert"); 1542 credential.certs.push_back("final cert");
1547 scoped_ptr<SpdyFrame> frame(framer.CreateCredentialFrame(credential)); 1543 scoped_ptr<SpdyFrame> frame(framer.CreateCredentialFrame(credential));
1548 CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData)); 1544 CompareFrame(kDescription, *frame, kFrameData, arraysize(kFrameData));
1549 } 1545 }
1550 } 1546 }
1551 1547
1552 TEST_F(SpdyFramerTest, ParseCredentialFrame) { 1548 TEST_F(SpdyFramerTest, ParseCredentialFrame) {
1553 SpdyFramer framer; 1549 SpdyFramer framer;
1554 1550
1555 { 1551 {
1556 unsigned char kFrameData[] = { 1552 unsigned char kFrameData[] = {
1557 0x80, 0x02, 0x00, 0x0A, 1553 0x80, 0x02, 0x00, 0x0A,
1558 0x00, 0x00, 0x00, 0x3F, 1554 0x00, 0x00, 0x00, 0x33,
1559 0x00, 0x03, 0x00, 0x0A, 1555 0x00, 0x03, 0x00, 0x00,
1560 'g', 'o', 'o', 'g',
1561 'l', 'e', '.', 'c',
1562 'o', 'm', 0x00, 0x00,
1563 0x00, 0x05, 'p', 'r', 1556 0x00, 0x05, 'p', 'r',
1564 'o', 'o', 'f', 0x00, 1557 'o', 'o', 'f', 0x00,
1565 0x00, 0x00, 0x06, 'a', 1558 0x00, 0x00, 0x06, 'a',
1566 ' ', 'c', 'e', 'r', 1559 ' ', 'c', 'e', 'r',
1567 't', 0x00, 0x00, 0x00, 1560 't', 0x00, 0x00, 0x00,
1568 0x0C, 'a', 'n', 'o', 1561 0x0C, 'a', 'n', 'o',
1569 't', 'h', 'e', 'r', 1562 't', 'h', 'e', 'r',
1570 ' ', 'c', 'e', 'r', 1563 ' ', 'c', 'e', 'r',
1571 't', 0x00, 0x00, 0x00, 1564 't', 0x00, 0x00, 0x00,
1572 0x0A, 'f', 'i', 'n', 1565 0x0A, 'f', 'i', 'n',
1573 'a', 'l', ' ', 'c', 1566 'a', 'l', ' ', 'c',
1574 'e', 'r', 't', 1567 'e', 'r', 't',
1575 }; 1568 };
1576 SpdyCredentialControlFrame frame(reinterpret_cast<char*>(kFrameData), 1569 SpdyCredentialControlFrame frame(reinterpret_cast<char*>(kFrameData),
1577 false); 1570 false);
1578 SpdyCredential credential; 1571 SpdyCredential credential;
1579 EXPECT_TRUE(SpdyFramer::ParseCredentialData(frame.payload(), 1572 EXPECT_TRUE(SpdyFramer::ParseCredentialData(frame.payload(),
1580 frame.length(), 1573 frame.length(),
1581 &credential)); 1574 &credential));
1582 EXPECT_EQ(3u, credential.slot); 1575 EXPECT_EQ(3u, credential.slot);
1583 EXPECT_EQ("google.com", credential.origin);
1584 EXPECT_EQ("proof", credential.proof); 1576 EXPECT_EQ("proof", credential.proof);
1585 EXPECT_EQ("a cert", credential.certs.front()); 1577 EXPECT_EQ("a cert", credential.certs.front());
1586 credential.certs.erase(credential.certs.begin()); 1578 credential.certs.erase(credential.certs.begin());
1587 EXPECT_EQ("another cert", credential.certs.front()); 1579 EXPECT_EQ("another cert", credential.certs.front());
1588 credential.certs.erase(credential.certs.begin()); 1580 credential.certs.erase(credential.certs.begin());
1589 EXPECT_EQ("final cert", credential.certs.front()); 1581 EXPECT_EQ("final cert", credential.certs.front());
1590 credential.certs.erase(credential.certs.begin()); 1582 credential.certs.erase(credential.certs.begin());
1591 EXPECT_TRUE(credential.certs.empty()); 1583 EXPECT_TRUE(credential.certs.empty());
1592 } 1584 }
1593 } 1585 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1639 visitor.SimulateInFramer( 1631 visitor.SimulateInFramer(
1640 reinterpret_cast<unsigned char*>(template_frame.get()->data()), 1632 reinterpret_cast<unsigned char*>(template_frame.get()->data()),
1641 template_frame.get()->length() + SpdyControlFrame::kHeaderSize); 1633 template_frame.get()->length() + SpdyControlFrame::kHeaderSize);
1642 EXPECT_EQ(1, visitor.syn_frame_count_); 1634 EXPECT_EQ(1, visitor.syn_frame_count_);
1643 } 1635 }
1644 } 1636 }
1645 1637
1646 TEST_F(SpdyFramerTest, ReadCredentialFrame) { 1638 TEST_F(SpdyFramerTest, ReadCredentialFrame) {
1647 SpdyCredential credential; 1639 SpdyCredential credential;
1648 credential.slot = 3; 1640 credential.slot = 3;
1649 credential.origin = "google.com";
1650 credential.proof = "proof"; 1641 credential.proof = "proof";
1651 credential.certs.push_back("a cert"); 1642 credential.certs.push_back("a cert");
1652 credential.certs.push_back("another cert"); 1643 credential.certs.push_back("another cert");
1653 credential.certs.push_back("final cert"); 1644 credential.certs.push_back("final cert");
1654 SpdyFramer framer; 1645 SpdyFramer framer;
1655 scoped_ptr<SpdyFrame> control_frame( 1646 scoped_ptr<SpdyFrame> control_frame(
1656 framer.CreateCredentialFrame(credential)); 1647 framer.CreateCredentialFrame(credential));
1657 EXPECT_TRUE(control_frame.get() != NULL); 1648 EXPECT_TRUE(control_frame.get() != NULL);
1658 TestSpdyVisitor visitor; 1649 TestSpdyVisitor visitor;
1659 visitor.use_compression_ = false; 1650 visitor.use_compression_ = false;
1660 visitor.SimulateInFramer( 1651 visitor.SimulateInFramer(
1661 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 1652 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
1662 control_frame.get()->length() + SpdyControlFrame::kHeaderSize); 1653 control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
1663 EXPECT_EQ(0, visitor.error_count_); 1654 EXPECT_EQ(0, visitor.error_count_);
1664 EXPECT_EQ(1, visitor.credential_count_); 1655 EXPECT_EQ(1, visitor.credential_count_);
1665 EXPECT_EQ(control_frame->length(), visitor.credential_buffer_length_); 1656 EXPECT_EQ(control_frame->length(), visitor.credential_buffer_length_);
1666 EXPECT_EQ(credential.slot, visitor.credential_.slot); 1657 EXPECT_EQ(credential.slot, visitor.credential_.slot);
1667 EXPECT_EQ(credential.origin, visitor.credential_.origin);
1668 EXPECT_EQ(credential.proof, visitor.credential_.proof); 1658 EXPECT_EQ(credential.proof, visitor.credential_.proof);
1669 EXPECT_EQ(credential.certs.size(), visitor.credential_.certs.size()); 1659 EXPECT_EQ(credential.certs.size(), visitor.credential_.certs.size());
1670 for (size_t i = 0; i < credential.certs.size(); i++) { 1660 for (size_t i = 0; i < credential.certs.size(); i++) {
1671 EXPECT_EQ(credential.certs[i], visitor.credential_.certs[i]); 1661 EXPECT_EQ(credential.certs[i], visitor.credential_.certs[i]);
1672 } 1662 }
1673 } 1663 }
1674 1664
1675 TEST_F(SpdyFramerTest, ReadCredentialFrameWithCorruptOrigin) {
1676 SpdyCredential credential;
1677 credential.slot = 3;
1678 credential.origin = "google.com";
1679 credential.proof = "proof";
1680 credential.certs.push_back("a cert");
1681 credential.certs.push_back("another cert");
1682 credential.certs.push_back("final cert");
1683 SpdyFramer framer;
1684 scoped_ptr<SpdyFrame> control_frame(
1685 framer.CreateCredentialFrame(credential));
1686 EXPECT_TRUE(control_frame.get() != NULL);
1687 TestSpdyVisitor visitor;
1688 visitor.use_compression_ = false;
1689 unsigned char* data =
1690 reinterpret_cast<unsigned char*>(control_frame.get()->data());
1691 // Origin length is past the end of the frame
1692 data[SpdyControlFrame::kHeaderSize + 2] = 0xFF;
1693 visitor.SimulateInFramer(
1694 data, control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
1695 EXPECT_EQ(1, visitor.error_count_);
1696 }
1697
1698 TEST_F(SpdyFramerTest, ReadCredentialFrameWithCorruptProof) { 1665 TEST_F(SpdyFramerTest, ReadCredentialFrameWithCorruptProof) {
1699 SpdyCredential credential; 1666 SpdyCredential credential;
1700 credential.slot = 3; 1667 credential.slot = 3;
1701 credential.origin = "google.com";
1702 credential.proof = "proof"; 1668 credential.proof = "proof";
1703 credential.certs.push_back("a cert"); 1669 credential.certs.push_back("a cert");
1704 credential.certs.push_back("another cert"); 1670 credential.certs.push_back("another cert");
1705 credential.certs.push_back("final cert"); 1671 credential.certs.push_back("final cert");
1706 SpdyFramer framer; 1672 SpdyFramer framer;
1707 scoped_ptr<SpdyFrame> control_frame( 1673 scoped_ptr<SpdyFrame> control_frame(
1708 framer.CreateCredentialFrame(credential)); 1674 framer.CreateCredentialFrame(credential));
1709 EXPECT_TRUE(control_frame.get() != NULL); 1675 EXPECT_TRUE(control_frame.get() != NULL);
1710 TestSpdyVisitor visitor; 1676 TestSpdyVisitor visitor;
1711 visitor.use_compression_ = false; 1677 visitor.use_compression_ = false;
1712 unsigned char* data = 1678 unsigned char* data =
1713 reinterpret_cast<unsigned char*>(control_frame.get()->data()); 1679 reinterpret_cast<unsigned char*>(control_frame.get()->data());
1714 size_t offset = SpdyControlFrame::kHeaderSize + 4 + 1680 size_t offset = SpdyControlFrame::kHeaderSize + 4;
1715 credential.origin.length();
1716 data[offset] = 0xFF; // Proof length is past the end of the frame 1681 data[offset] = 0xFF; // Proof length is past the end of the frame
1717 visitor.SimulateInFramer( 1682 visitor.SimulateInFramer(
1718 data, control_frame.get()->length() + SpdyControlFrame::kHeaderSize); 1683 data, control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
1719 EXPECT_EQ(1, visitor.error_count_); 1684 EXPECT_EQ(1, visitor.error_count_);
1720 } 1685 }
1721 1686
1722 TEST_F(SpdyFramerTest, ReadCredentialFrameWithCorruptCertificate) { 1687 TEST_F(SpdyFramerTest, ReadCredentialFrameWithCorruptCertificate) {
1723 SpdyCredential credential; 1688 SpdyCredential credential;
1724 credential.slot = 3; 1689 credential.slot = 3;
1725 credential.origin = "google.com";
1726 credential.proof = "proof"; 1690 credential.proof = "proof";
1727 credential.certs.push_back("a cert"); 1691 credential.certs.push_back("a cert");
1728 credential.certs.push_back("another cert"); 1692 credential.certs.push_back("another cert");
1729 credential.certs.push_back("final cert"); 1693 credential.certs.push_back("final cert");
1730 SpdyFramer framer; 1694 SpdyFramer framer;
1731 scoped_ptr<SpdyFrame> control_frame( 1695 scoped_ptr<SpdyFrame> control_frame(
1732 framer.CreateCredentialFrame(credential)); 1696 framer.CreateCredentialFrame(credential));
1733 EXPECT_TRUE(control_frame.get() != NULL); 1697 EXPECT_TRUE(control_frame.get() != NULL);
1734 TestSpdyVisitor visitor; 1698 TestSpdyVisitor visitor;
1735 visitor.use_compression_ = false; 1699 visitor.use_compression_ = false;
1736 unsigned char* data = 1700 unsigned char* data =
1737 reinterpret_cast<unsigned char*>(control_frame.get()->data()); 1701 reinterpret_cast<unsigned char*>(control_frame.get()->data());
1738 size_t offset = SpdyControlFrame::kHeaderSize + 4 + 1702 size_t offset = SpdyControlFrame::kHeaderSize + credential.proof.length();
1739 credential.origin.length() + 4 + credential.proof.length();
1740 data[offset] = 0xFF; // Certificate length is past the end of the frame 1703 data[offset] = 0xFF; // Certificate length is past the end of the frame
1741 visitor.SimulateInFramer( 1704 visitor.SimulateInFramer(
1742 data, control_frame.get()->length() + SpdyControlFrame::kHeaderSize); 1705 data, control_frame.get()->length() + SpdyControlFrame::kHeaderSize);
1743 EXPECT_EQ(1, visitor.error_count_); 1706 EXPECT_EQ(1, visitor.error_count_);
1744 } 1707 }
1745 1708
1746 TEST_F(SpdyFramerTest, ReadGarbage) { 1709 TEST_F(SpdyFramerTest, ReadGarbage) {
1747 SpdyFramer framer; 1710 SpdyFramer framer;
1748 unsigned char garbage_frame[256]; 1711 unsigned char garbage_frame[256];
1749 memset(garbage_frame, ~0, sizeof(garbage_frame)); 1712 memset(garbage_frame, ~0, sizeof(garbage_frame));
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1899 } 1862 }
1900 1863
1901 std::string RandomString(int length) { 1864 std::string RandomString(int length) {
1902 std::string rv; 1865 std::string rv;
1903 for (int index = 0; index < length; index++) 1866 for (int index = 0; index < length; index++)
1904 rv += static_cast<char>('a' + (rand() % 26)); 1867 rv += static_cast<char>('a' + (rand() % 26));
1905 return rv; 1868 return rv;
1906 } 1869 }
1907 1870
1908 } // namespace 1871 } // namespace
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_http_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698