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

Side by Side Diff: webrtc/p2p/base/stun_unittest.cc

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 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 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 // Read the RFC5389 fields from the RFC5769 sample STUN request. 607 // Read the RFC5389 fields from the RFC5769 sample STUN request.
608 TEST_F(StunTest, ReadRfc5769RequestMessage) { 608 TEST_F(StunTest, ReadRfc5769RequestMessage) {
609 StunMessage msg; 609 StunMessage msg;
610 size_t size = ReadStunMessage(&msg, kRfc5769SampleRequest); 610 size_t size = ReadStunMessage(&msg, kRfc5769SampleRequest);
611 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 611 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
612 CheckStunTransactionID(msg, kRfc5769SampleMsgTransactionId, 612 CheckStunTransactionID(msg, kRfc5769SampleMsgTransactionId,
613 kStunTransactionIdLength); 613 kStunTransactionIdLength);
614 614
615 const StunByteStringAttribute* software = 615 const StunByteStringAttribute* software =
616 msg.GetByteString(STUN_ATTR_SOFTWARE); 616 msg.GetByteString(STUN_ATTR_SOFTWARE);
617 ASSERT_TRUE(software != NULL); 617 ASSERT_TRUE(software != nullptr);
618 EXPECT_EQ(kRfc5769SampleMsgClientSoftware, software->GetString()); 618 EXPECT_EQ(kRfc5769SampleMsgClientSoftware, software->GetString());
619 619
620 const StunByteStringAttribute* username = 620 const StunByteStringAttribute* username =
621 msg.GetByteString(STUN_ATTR_USERNAME); 621 msg.GetByteString(STUN_ATTR_USERNAME);
622 ASSERT_TRUE(username != NULL); 622 ASSERT_TRUE(username != nullptr);
623 EXPECT_EQ(kRfc5769SampleMsgUsername, username->GetString()); 623 EXPECT_EQ(kRfc5769SampleMsgUsername, username->GetString());
624 624
625 // Actual M-I value checked in a later test. 625 // Actual M-I value checked in a later test.
626 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != NULL); 626 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != nullptr);
627 627
628 // Fingerprint checked in a later test, but double-check the value here. 628 // Fingerprint checked in a later test, but double-check the value here.
629 const StunUInt32Attribute* fingerprint = 629 const StunUInt32Attribute* fingerprint =
630 msg.GetUInt32(STUN_ATTR_FINGERPRINT); 630 msg.GetUInt32(STUN_ATTR_FINGERPRINT);
631 ASSERT_TRUE(fingerprint != NULL); 631 ASSERT_TRUE(fingerprint != nullptr);
632 EXPECT_EQ(0xe57a3bcf, fingerprint->value()); 632 EXPECT_EQ(0xe57a3bcf, fingerprint->value());
633 } 633 }
634 634
635 // Read the RFC5389 fields from the RFC5769 sample STUN response. 635 // Read the RFC5389 fields from the RFC5769 sample STUN response.
636 TEST_F(StunTest, ReadRfc5769ResponseMessage) { 636 TEST_F(StunTest, ReadRfc5769ResponseMessage) {
637 StunMessage msg; 637 StunMessage msg;
638 size_t size = ReadStunMessage(&msg, kRfc5769SampleResponse); 638 size_t size = ReadStunMessage(&msg, kRfc5769SampleResponse);
639 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size); 639 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size);
640 CheckStunTransactionID(msg, kRfc5769SampleMsgTransactionId, 640 CheckStunTransactionID(msg, kRfc5769SampleMsgTransactionId,
641 kStunTransactionIdLength); 641 kStunTransactionIdLength);
642 642
643 const StunByteStringAttribute* software = 643 const StunByteStringAttribute* software =
644 msg.GetByteString(STUN_ATTR_SOFTWARE); 644 msg.GetByteString(STUN_ATTR_SOFTWARE);
645 ASSERT_TRUE(software != NULL); 645 ASSERT_TRUE(software != nullptr);
646 EXPECT_EQ(kRfc5769SampleMsgServerSoftware, software->GetString()); 646 EXPECT_EQ(kRfc5769SampleMsgServerSoftware, software->GetString());
647 647
648 const StunAddressAttribute* mapped_address = 648 const StunAddressAttribute* mapped_address =
649 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS); 649 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS);
650 ASSERT_TRUE(mapped_address != NULL); 650 ASSERT_TRUE(mapped_address != nullptr);
651 EXPECT_EQ(kRfc5769SampleMsgMappedAddress, mapped_address->GetAddress()); 651 EXPECT_EQ(kRfc5769SampleMsgMappedAddress, mapped_address->GetAddress());
652 652
653 // Actual M-I and fingerprint checked in later tests. 653 // Actual M-I and fingerprint checked in later tests.
654 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != NULL); 654 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != nullptr);
655 ASSERT_TRUE(msg.GetUInt32(STUN_ATTR_FINGERPRINT) != NULL); 655 ASSERT_TRUE(msg.GetUInt32(STUN_ATTR_FINGERPRINT) != nullptr);
656 } 656 }
657 657
658 // Read the RFC5389 fields from the RFC5769 sample STUN response for IPv6. 658 // Read the RFC5389 fields from the RFC5769 sample STUN response for IPv6.
659 TEST_F(StunTest, ReadRfc5769ResponseMessageIPv6) { 659 TEST_F(StunTest, ReadRfc5769ResponseMessageIPv6) {
660 StunMessage msg; 660 StunMessage msg;
661 size_t size = ReadStunMessage(&msg, kRfc5769SampleResponseIPv6); 661 size_t size = ReadStunMessage(&msg, kRfc5769SampleResponseIPv6);
662 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size); 662 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size);
663 CheckStunTransactionID(msg, kRfc5769SampleMsgTransactionId, 663 CheckStunTransactionID(msg, kRfc5769SampleMsgTransactionId,
664 kStunTransactionIdLength); 664 kStunTransactionIdLength);
665 665
666 const StunByteStringAttribute* software = 666 const StunByteStringAttribute* software =
667 msg.GetByteString(STUN_ATTR_SOFTWARE); 667 msg.GetByteString(STUN_ATTR_SOFTWARE);
668 ASSERT_TRUE(software != NULL); 668 ASSERT_TRUE(software != nullptr);
669 EXPECT_EQ(kRfc5769SampleMsgServerSoftware, software->GetString()); 669 EXPECT_EQ(kRfc5769SampleMsgServerSoftware, software->GetString());
670 670
671 const StunAddressAttribute* mapped_address = 671 const StunAddressAttribute* mapped_address =
672 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS); 672 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS);
673 ASSERT_TRUE(mapped_address != NULL); 673 ASSERT_TRUE(mapped_address != nullptr);
674 EXPECT_EQ(kRfc5769SampleMsgIPv6MappedAddress, mapped_address->GetAddress()); 674 EXPECT_EQ(kRfc5769SampleMsgIPv6MappedAddress, mapped_address->GetAddress());
675 675
676 // Actual M-I and fingerprint checked in later tests. 676 // Actual M-I and fingerprint checked in later tests.
677 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != NULL); 677 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != nullptr);
678 ASSERT_TRUE(msg.GetUInt32(STUN_ATTR_FINGERPRINT) != NULL); 678 ASSERT_TRUE(msg.GetUInt32(STUN_ATTR_FINGERPRINT) != nullptr);
679 } 679 }
680 680
681 // Read the RFC5389 fields from the RFC5769 sample STUN response with auth. 681 // Read the RFC5389 fields from the RFC5769 sample STUN response with auth.
682 TEST_F(StunTest, ReadRfc5769RequestMessageLongTermAuth) { 682 TEST_F(StunTest, ReadRfc5769RequestMessageLongTermAuth) {
683 StunMessage msg; 683 StunMessage msg;
684 size_t size = ReadStunMessage(&msg, kRfc5769SampleRequestLongTermAuth); 684 size_t size = ReadStunMessage(&msg, kRfc5769SampleRequestLongTermAuth);
685 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 685 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
686 CheckStunTransactionID(msg, kRfc5769SampleMsgWithAuthTransactionId, 686 CheckStunTransactionID(msg, kRfc5769SampleMsgWithAuthTransactionId,
687 kStunTransactionIdLength); 687 kStunTransactionIdLength);
688 688
689 const StunByteStringAttribute* username = 689 const StunByteStringAttribute* username =
690 msg.GetByteString(STUN_ATTR_USERNAME); 690 msg.GetByteString(STUN_ATTR_USERNAME);
691 ASSERT_TRUE(username != NULL); 691 ASSERT_TRUE(username != nullptr);
692 EXPECT_EQ(kRfc5769SampleMsgWithAuthUsername, username->GetString()); 692 EXPECT_EQ(kRfc5769SampleMsgWithAuthUsername, username->GetString());
693 693
694 const StunByteStringAttribute* nonce = 694 const StunByteStringAttribute* nonce =
695 msg.GetByteString(STUN_ATTR_NONCE); 695 msg.GetByteString(STUN_ATTR_NONCE);
696 ASSERT_TRUE(nonce != NULL); 696 ASSERT_TRUE(nonce != nullptr);
697 EXPECT_EQ(kRfc5769SampleMsgWithAuthNonce, nonce->GetString()); 697 EXPECT_EQ(kRfc5769SampleMsgWithAuthNonce, nonce->GetString());
698 698
699 const StunByteStringAttribute* realm = 699 const StunByteStringAttribute* realm =
700 msg.GetByteString(STUN_ATTR_REALM); 700 msg.GetByteString(STUN_ATTR_REALM);
701 ASSERT_TRUE(realm != NULL); 701 ASSERT_TRUE(realm != nullptr);
702 EXPECT_EQ(kRfc5769SampleMsgWithAuthRealm, realm->GetString()); 702 EXPECT_EQ(kRfc5769SampleMsgWithAuthRealm, realm->GetString());
703 703
704 // No fingerprint, actual M-I checked in later tests. 704 // No fingerprint, actual M-I checked in later tests.
705 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != NULL); 705 ASSERT_TRUE(msg.GetByteString(STUN_ATTR_MESSAGE_INTEGRITY) != nullptr);
706 ASSERT_TRUE(msg.GetUInt32(STUN_ATTR_FINGERPRINT) == NULL); 706 ASSERT_TRUE(msg.GetUInt32(STUN_ATTR_FINGERPRINT) == nullptr);
707 } 707 }
708 708
709 // The RFC3489 packet in this test is the same as 709 // The RFC3489 packet in this test is the same as
710 // kStunMessageWithIPv4MappedAddress, but with a different value where the 710 // kStunMessageWithIPv4MappedAddress, but with a different value where the
711 // magic cookie was. 711 // magic cookie was.
712 TEST_F(StunTest, ReadLegacyMessage) { 712 TEST_F(StunTest, ReadLegacyMessage) {
713 unsigned char rfc3489_packet[sizeof(kStunMessageWithIPv4MappedAddress)]; 713 unsigned char rfc3489_packet[sizeof(kStunMessageWithIPv4MappedAddress)];
714 memcpy(rfc3489_packet, kStunMessageWithIPv4MappedAddress, 714 memcpy(rfc3489_packet, kStunMessageWithIPv4MappedAddress,
715 sizeof(kStunMessageWithIPv4MappedAddress)); 715 sizeof(kStunMessageWithIPv4MappedAddress));
716 // Overwrite the magic cookie here. 716 // Overwrite the magic cookie here.
(...skipping 20 matching lines...) Expand all
737 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size); 737 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size);
738 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength); 738 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength);
739 739
740 const StunAddressAttribute* addr = 740 const StunAddressAttribute* addr =
741 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS); 741 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS);
742 CheckStunAddressAttribute(addr, STUN_ADDRESS_IPV6, 742 CheckStunAddressAttribute(addr, STUN_ADDRESS_IPV6,
743 kTestMessagePort1, test_address); 743 kTestMessagePort1, test_address);
744 744
745 // Owner with a different transaction ID. 745 // Owner with a different transaction ID.
746 msg2.SetTransactionID("ABCDABCDABCD"); 746 msg2.SetTransactionID("ABCDABCDABCD");
747 StunXorAddressAttribute addr2(STUN_ATTR_XOR_MAPPED_ADDRESS, 20, NULL); 747 StunXorAddressAttribute addr2(STUN_ATTR_XOR_MAPPED_ADDRESS, 20, nullptr);
748 addr2.SetIP(addr->ipaddr()); 748 addr2.SetIP(addr->ipaddr());
749 addr2.SetPort(addr->port()); 749 addr2.SetPort(addr->port());
750 addr2.SetOwner(&msg2); 750 addr2.SetOwner(&msg2);
751 // The internal IP address shouldn't change. 751 // The internal IP address shouldn't change.
752 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr()); 752 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr());
753 753
754 rtc::ByteBufferWriter correct_buf; 754 rtc::ByteBufferWriter correct_buf;
755 rtc::ByteBufferWriter wrong_buf; 755 rtc::ByteBufferWriter wrong_buf;
756 EXPECT_TRUE(addr->Write(&correct_buf)); 756 EXPECT_TRUE(addr->Write(&correct_buf));
757 EXPECT_TRUE(addr2.Write(&wrong_buf)); 757 EXPECT_TRUE(addr2.Write(&wrong_buf));
758 // But when written out, the buffers should look different. 758 // But when written out, the buffers should look different.
759 ASSERT_NE(0, 759 ASSERT_NE(0,
760 memcmp(correct_buf.Data(), wrong_buf.Data(), wrong_buf.Length())); 760 memcmp(correct_buf.Data(), wrong_buf.Data(), wrong_buf.Length()));
761 // And when reading a known good value, the address should be wrong. 761 // And when reading a known good value, the address should be wrong.
762 rtc::ByteBufferReader read_buf(correct_buf); 762 rtc::ByteBufferReader read_buf(correct_buf);
763 addr2.Read(&read_buf); 763 addr2.Read(&read_buf);
764 ASSERT_NE(addr->ipaddr(), addr2.ipaddr()); 764 ASSERT_NE(addr->ipaddr(), addr2.ipaddr());
765 addr2.SetIP(addr->ipaddr()); 765 addr2.SetIP(addr->ipaddr());
766 addr2.SetPort(addr->port()); 766 addr2.SetPort(addr->port());
767 // Try writing with no owner at all, should fail and write nothing. 767 // Try writing with no owner at all, should fail and write nothing.
768 addr2.SetOwner(NULL); 768 addr2.SetOwner(nullptr);
769 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr()); 769 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr());
770 wrong_buf.Clear(); 770 wrong_buf.Clear();
771 EXPECT_FALSE(addr2.Write(&wrong_buf)); 771 EXPECT_FALSE(addr2.Write(&wrong_buf));
772 ASSERT_EQ(0U, wrong_buf.Length()); 772 ASSERT_EQ(0U, wrong_buf.Length());
773 } 773 }
774 774
775 TEST_F(StunTest, SetIPv4XorAddressAttributeOwner) { 775 TEST_F(StunTest, SetIPv4XorAddressAttributeOwner) {
776 // Unlike the IPv6XorAddressAttributeOwner test, IPv4 XOR address attributes 776 // Unlike the IPv6XorAddressAttributeOwner test, IPv4 XOR address attributes
777 // should _not_ be affected by a change in owner. IPv4 XOR address uses the 777 // should _not_ be affected by a change in owner. IPv4 XOR address uses the
778 // magic cookie value which is fixed. 778 // magic cookie value which is fixed.
779 StunMessage msg; 779 StunMessage msg;
780 StunMessage msg2; 780 StunMessage msg2;
781 size_t size = ReadStunMessage(&msg, kStunMessageWithIPv4XorMappedAddress); 781 size_t size = ReadStunMessage(&msg, kStunMessageWithIPv4XorMappedAddress);
782 782
783 rtc::IPAddress test_address(kIPv4TestAddress1); 783 rtc::IPAddress test_address(kIPv4TestAddress1);
784 784
785 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size); 785 CheckStunHeader(msg, STUN_BINDING_RESPONSE, size);
786 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength); 786 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength);
787 787
788 const StunAddressAttribute* addr = 788 const StunAddressAttribute* addr =
789 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS); 789 msg.GetAddress(STUN_ATTR_XOR_MAPPED_ADDRESS);
790 CheckStunAddressAttribute(addr, STUN_ADDRESS_IPV4, 790 CheckStunAddressAttribute(addr, STUN_ADDRESS_IPV4,
791 kTestMessagePort3, test_address); 791 kTestMessagePort3, test_address);
792 792
793 // Owner with a different transaction ID. 793 // Owner with a different transaction ID.
794 msg2.SetTransactionID("ABCDABCDABCD"); 794 msg2.SetTransactionID("ABCDABCDABCD");
795 StunXorAddressAttribute addr2(STUN_ATTR_XOR_MAPPED_ADDRESS, 20, NULL); 795 StunXorAddressAttribute addr2(STUN_ATTR_XOR_MAPPED_ADDRESS, 20, nullptr);
796 addr2.SetIP(addr->ipaddr()); 796 addr2.SetIP(addr->ipaddr());
797 addr2.SetPort(addr->port()); 797 addr2.SetPort(addr->port());
798 addr2.SetOwner(&msg2); 798 addr2.SetOwner(&msg2);
799 // The internal IP address shouldn't change. 799 // The internal IP address shouldn't change.
800 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr()); 800 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr());
801 801
802 rtc::ByteBufferWriter correct_buf; 802 rtc::ByteBufferWriter correct_buf;
803 rtc::ByteBufferWriter wrong_buf; 803 rtc::ByteBufferWriter wrong_buf;
804 EXPECT_TRUE(addr->Write(&correct_buf)); 804 EXPECT_TRUE(addr->Write(&correct_buf));
805 EXPECT_TRUE(addr2.Write(&wrong_buf)); 805 EXPECT_TRUE(addr2.Write(&wrong_buf));
806 // The same address data should be written. 806 // The same address data should be written.
807 ASSERT_EQ(0, 807 ASSERT_EQ(0,
808 memcmp(correct_buf.Data(), wrong_buf.Data(), wrong_buf.Length())); 808 memcmp(correct_buf.Data(), wrong_buf.Data(), wrong_buf.Length()));
809 // And an attribute should be able to un-XOR an address belonging to a message 809 // And an attribute should be able to un-XOR an address belonging to a message
810 // with a different transaction ID. 810 // with a different transaction ID.
811 rtc::ByteBufferReader read_buf(correct_buf); 811 rtc::ByteBufferReader read_buf(correct_buf);
812 EXPECT_TRUE(addr2.Read(&read_buf)); 812 EXPECT_TRUE(addr2.Read(&read_buf));
813 ASSERT_EQ(addr->ipaddr(), addr2.ipaddr()); 813 ASSERT_EQ(addr->ipaddr(), addr2.ipaddr());
814 814
815 // However, no owner is still an error, should fail and write nothing. 815 // However, no owner is still an error, should fail and write nothing.
816 addr2.SetOwner(NULL); 816 addr2.SetOwner(nullptr);
817 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr()); 817 ASSERT_EQ(addr2.ipaddr(), addr->ipaddr());
818 wrong_buf.Clear(); 818 wrong_buf.Clear();
819 EXPECT_FALSE(addr2.Write(&wrong_buf)); 819 EXPECT_FALSE(addr2.Write(&wrong_buf));
820 } 820 }
821 821
822 TEST_F(StunTest, CreateIPv6AddressAttribute) { 822 TEST_F(StunTest, CreateIPv6AddressAttribute) {
823 rtc::IPAddress test_ip(kIPv6TestAddress2); 823 rtc::IPAddress test_ip(kIPv6TestAddress2);
824 824
825 StunAddressAttribute* addr = 825 StunAddressAttribute* addr =
826 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS); 826 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS);
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 } 992 }
993 993
994 TEST_F(StunTest, ReadByteStringAttribute) { 994 TEST_F(StunTest, ReadByteStringAttribute) {
995 StunMessage msg; 995 StunMessage msg;
996 size_t size = ReadStunMessage(&msg, kStunMessageWithByteStringAttribute); 996 size_t size = ReadStunMessage(&msg, kStunMessageWithByteStringAttribute);
997 997
998 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 998 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
999 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength); 999 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength);
1000 const StunByteStringAttribute* username = 1000 const StunByteStringAttribute* username =
1001 msg.GetByteString(STUN_ATTR_USERNAME); 1001 msg.GetByteString(STUN_ATTR_USERNAME);
1002 ASSERT_TRUE(username != NULL); 1002 ASSERT_TRUE(username != nullptr);
1003 EXPECT_EQ(kTestUserName1, username->GetString()); 1003 EXPECT_EQ(kTestUserName1, username->GetString());
1004 } 1004 }
1005 1005
1006 TEST_F(StunTest, ReadPaddedByteStringAttribute) { 1006 TEST_F(StunTest, ReadPaddedByteStringAttribute) {
1007 StunMessage msg; 1007 StunMessage msg;
1008 size_t size = ReadStunMessage(&msg, 1008 size_t size = ReadStunMessage(&msg,
1009 kStunMessageWithPaddedByteStringAttribute); 1009 kStunMessageWithPaddedByteStringAttribute);
1010 ASSERT_NE(0U, size); 1010 ASSERT_NE(0U, size);
1011 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 1011 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
1012 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength); 1012 CheckStunTransactionID(msg, kTestTransactionId2, kStunTransactionIdLength);
1013 const StunByteStringAttribute* username = 1013 const StunByteStringAttribute* username =
1014 msg.GetByteString(STUN_ATTR_USERNAME); 1014 msg.GetByteString(STUN_ATTR_USERNAME);
1015 ASSERT_TRUE(username != NULL); 1015 ASSERT_TRUE(username != nullptr);
1016 EXPECT_EQ(kTestUserName2, username->GetString()); 1016 EXPECT_EQ(kTestUserName2, username->GetString());
1017 } 1017 }
1018 1018
1019 TEST_F(StunTest, ReadErrorCodeAttribute) { 1019 TEST_F(StunTest, ReadErrorCodeAttribute) {
1020 StunMessage msg; 1020 StunMessage msg;
1021 size_t size = ReadStunMessage(&msg, kStunMessageWithErrorAttribute); 1021 size_t size = ReadStunMessage(&msg, kStunMessageWithErrorAttribute);
1022 1022
1023 CheckStunHeader(msg, STUN_BINDING_ERROR_RESPONSE, size); 1023 CheckStunHeader(msg, STUN_BINDING_ERROR_RESPONSE, size);
1024 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength); 1024 CheckStunTransactionID(msg, kTestTransactionId1, kStunTransactionIdLength);
1025 const StunErrorCodeAttribute* errorcode = msg.GetErrorCode(); 1025 const StunErrorCodeAttribute* errorcode = msg.GetErrorCode();
1026 ASSERT_TRUE(errorcode != NULL); 1026 ASSERT_TRUE(errorcode != nullptr);
1027 EXPECT_EQ(kTestErrorClass, errorcode->eclass()); 1027 EXPECT_EQ(kTestErrorClass, errorcode->eclass());
1028 EXPECT_EQ(kTestErrorNumber, errorcode->number()); 1028 EXPECT_EQ(kTestErrorNumber, errorcode->number());
1029 EXPECT_EQ(kTestErrorReason, errorcode->reason()); 1029 EXPECT_EQ(kTestErrorReason, errorcode->reason());
1030 EXPECT_EQ(kTestErrorCode, errorcode->code()); 1030 EXPECT_EQ(kTestErrorCode, errorcode->code());
1031 } 1031 }
1032 1032
1033 TEST_F(StunTest, ReadMessageWithAUInt16ListAttribute) { 1033 TEST_F(StunTest, ReadMessageWithAUInt16ListAttribute) {
1034 StunMessage msg; 1034 StunMessage msg;
1035 size_t size = ReadStunMessage(&msg, kStunMessageWithUInt16ListAttribute); 1035 size_t size = ReadStunMessage(&msg, kStunMessageWithUInt16ListAttribute);
1036 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 1036 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
1037 const StunUInt16ListAttribute* types = msg.GetUnknownAttributes(); 1037 const StunUInt16ListAttribute* types = msg.GetUnknownAttributes();
1038 ASSERT_TRUE(types != NULL); 1038 ASSERT_TRUE(types != nullptr);
1039 EXPECT_EQ(3U, types->Size()); 1039 EXPECT_EQ(3U, types->Size());
1040 EXPECT_EQ(0x1U, types->GetType(0)); 1040 EXPECT_EQ(0x1U, types->GetType(0));
1041 EXPECT_EQ(0x1000U, types->GetType(1)); 1041 EXPECT_EQ(0x1000U, types->GetType(1));
1042 EXPECT_EQ(0xAB0CU, types->GetType(2)); 1042 EXPECT_EQ(0xAB0CU, types->GetType(2));
1043 } 1043 }
1044 1044
1045 TEST_F(StunTest, ReadMessageWithAnUnknownAttribute) { 1045 TEST_F(StunTest, ReadMessageWithAnUnknownAttribute) {
1046 StunMessage msg; 1046 StunMessage msg;
1047 size_t size = ReadStunMessage(&msg, kStunMessageWithUnknownAttribute); 1047 size_t size = ReadStunMessage(&msg, kStunMessageWithUnknownAttribute);
1048 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 1048 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
1049 1049
1050 // Parsing should have succeeded and there should be a USERNAME attribute 1050 // Parsing should have succeeded and there should be a USERNAME attribute
1051 const StunByteStringAttribute* username = 1051 const StunByteStringAttribute* username =
1052 msg.GetByteString(STUN_ATTR_USERNAME); 1052 msg.GetByteString(STUN_ATTR_USERNAME);
1053 ASSERT_TRUE(username != NULL); 1053 ASSERT_TRUE(username != nullptr);
1054 EXPECT_EQ(kTestUserName2, username->GetString()); 1054 EXPECT_EQ(kTestUserName2, username->GetString());
1055 } 1055 }
1056 1056
1057 TEST_F(StunTest, ReadMessageWithOriginAttribute) { 1057 TEST_F(StunTest, ReadMessageWithOriginAttribute) {
1058 StunMessage msg; 1058 StunMessage msg;
1059 size_t size = ReadStunMessage(&msg, kStunMessageWithOriginAttribute); 1059 size_t size = ReadStunMessage(&msg, kStunMessageWithOriginAttribute);
1060 CheckStunHeader(msg, STUN_BINDING_REQUEST, size); 1060 CheckStunHeader(msg, STUN_BINDING_REQUEST, size);
1061 const StunByteStringAttribute* origin = 1061 const StunByteStringAttribute* origin =
1062 msg.GetByteString(STUN_ATTR_ORIGIN); 1062 msg.GetByteString(STUN_ATTR_ORIGIN);
1063 ASSERT_TRUE(origin != NULL); 1063 ASSERT_TRUE(origin != nullptr);
1064 EXPECT_EQ(kTestOrigin, origin->GetString()); 1064 EXPECT_EQ(kTestOrigin, origin->GetString());
1065 } 1065 }
1066 1066
1067 TEST_F(StunTest, WriteMessageWithAnErrorCodeAttribute) { 1067 TEST_F(StunTest, WriteMessageWithAnErrorCodeAttribute) {
1068 StunMessage msg; 1068 StunMessage msg;
1069 size_t size = sizeof(kStunMessageWithErrorAttribute); 1069 size_t size = sizeof(kStunMessageWithErrorAttribute);
1070 1070
1071 msg.SetType(STUN_BINDING_ERROR_RESPONSE); 1071 msg.SetType(STUN_BINDING_ERROR_RESPONSE);
1072 msg.SetTransactionID( 1072 msg.SetTransactionID(
1073 std::string(reinterpret_cast<const char*>(kTestTransactionId1), 1073 std::string(reinterpret_cast<const char*>(kTestTransactionId1),
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 EXPECT_EQ("0123456789ab", msg.transaction_id()); 1377 EXPECT_EQ("0123456789ab", msg.transaction_id());
1378 1378
1379 msg2.SetType(STUN_BINDING_REQUEST); 1379 msg2.SetType(STUN_BINDING_REQUEST);
1380 msg2.SetTransactionID("0123456789ab"); 1380 msg2.SetTransactionID("0123456789ab");
1381 1381
1382 in_addr legacy_in_addr; 1382 in_addr legacy_in_addr;
1383 legacy_in_addr.s_addr = htonl(17U); 1383 legacy_in_addr.s_addr = htonl(17U);
1384 rtc::IPAddress legacy_ip(legacy_in_addr); 1384 rtc::IPAddress legacy_ip(legacy_in_addr);
1385 1385
1386 const StunAddressAttribute* addr = msg.GetAddress(STUN_ATTR_MAPPED_ADDRESS); 1386 const StunAddressAttribute* addr = msg.GetAddress(STUN_ATTR_MAPPED_ADDRESS);
1387 ASSERT_TRUE(addr != NULL); 1387 ASSERT_TRUE(addr != nullptr);
1388 EXPECT_EQ(1, addr->family()); 1388 EXPECT_EQ(1, addr->family());
1389 EXPECT_EQ(13, addr->port()); 1389 EXPECT_EQ(13, addr->port());
1390 EXPECT_EQ(legacy_ip, addr->ipaddr()); 1390 EXPECT_EQ(legacy_ip, addr->ipaddr());
1391 1391
1392 StunAddressAttribute* addr2 = 1392 StunAddressAttribute* addr2 =
1393 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS); 1393 StunAttribute::CreateAddress(STUN_ATTR_MAPPED_ADDRESS);
1394 addr2->SetPort(13); 1394 addr2->SetPort(13);
1395 addr2->SetIP(legacy_ip); 1395 addr2->SetIP(legacy_ip);
1396 msg2.AddAttribute(addr2); 1396 msg2.AddAttribute(addr2);
1397 1397
1398 const StunByteStringAttribute* bytes = msg.GetByteString(STUN_ATTR_USERNAME); 1398 const StunByteStringAttribute* bytes = msg.GetByteString(STUN_ATTR_USERNAME);
1399 ASSERT_TRUE(bytes != NULL); 1399 ASSERT_TRUE(bytes != nullptr);
1400 EXPECT_EQ(12U, bytes->length()); 1400 EXPECT_EQ(12U, bytes->length());
1401 EXPECT_EQ("abcdefghijkl", bytes->GetString()); 1401 EXPECT_EQ("abcdefghijkl", bytes->GetString());
1402 1402
1403 StunByteStringAttribute* bytes2 = 1403 StunByteStringAttribute* bytes2 =
1404 StunAttribute::CreateByteString(STUN_ATTR_USERNAME); 1404 StunAttribute::CreateByteString(STUN_ATTR_USERNAME);
1405 bytes2->CopyBytes("abcdefghijkl"); 1405 bytes2->CopyBytes("abcdefghijkl");
1406 msg2.AddAttribute(bytes2); 1406 msg2.AddAttribute(bytes2);
1407 1407
1408 const StunUInt32Attribute* uval = msg.GetUInt32(STUN_ATTR_LIFETIME); 1408 const StunUInt32Attribute* uval = msg.GetUInt32(STUN_ATTR_LIFETIME);
1409 ASSERT_TRUE(uval != NULL); 1409 ASSERT_TRUE(uval != nullptr);
1410 EXPECT_EQ(11U, uval->value()); 1410 EXPECT_EQ(11U, uval->value());
1411 1411
1412 StunUInt32Attribute* uval2 = StunAttribute::CreateUInt32(STUN_ATTR_LIFETIME); 1412 StunUInt32Attribute* uval2 = StunAttribute::CreateUInt32(STUN_ATTR_LIFETIME);
1413 uval2->SetValue(11); 1413 uval2->SetValue(11);
1414 msg2.AddAttribute(uval2); 1414 msg2.AddAttribute(uval2);
1415 1415
1416 bytes = msg.GetByteString(STUN_ATTR_MAGIC_COOKIE); 1416 bytes = msg.GetByteString(STUN_ATTR_MAGIC_COOKIE);
1417 ASSERT_TRUE(bytes != NULL); 1417 ASSERT_TRUE(bytes != nullptr);
1418 EXPECT_EQ(4U, bytes->length()); 1418 EXPECT_EQ(4U, bytes->length());
1419 EXPECT_EQ(0, 1419 EXPECT_EQ(0,
1420 memcmp(bytes->bytes(), 1420 memcmp(bytes->bytes(),
1421 TURN_MAGIC_COOKIE_VALUE, 1421 TURN_MAGIC_COOKIE_VALUE,
1422 sizeof(TURN_MAGIC_COOKIE_VALUE))); 1422 sizeof(TURN_MAGIC_COOKIE_VALUE)));
1423 1423
1424 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_MAGIC_COOKIE); 1424 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_MAGIC_COOKIE);
1425 bytes2->CopyBytes(reinterpret_cast<const char*>(TURN_MAGIC_COOKIE_VALUE), 1425 bytes2->CopyBytes(reinterpret_cast<const char*>(TURN_MAGIC_COOKIE_VALUE),
1426 sizeof(TURN_MAGIC_COOKIE_VALUE)); 1426 sizeof(TURN_MAGIC_COOKIE_VALUE));
1427 msg2.AddAttribute(bytes2); 1427 msg2.AddAttribute(bytes2);
1428 1428
1429 uval = msg.GetUInt32(STUN_ATTR_BANDWIDTH); 1429 uval = msg.GetUInt32(STUN_ATTR_BANDWIDTH);
1430 ASSERT_TRUE(uval != NULL); 1430 ASSERT_TRUE(uval != nullptr);
1431 EXPECT_EQ(6U, uval->value()); 1431 EXPECT_EQ(6U, uval->value());
1432 1432
1433 uval2 = StunAttribute::CreateUInt32(STUN_ATTR_BANDWIDTH); 1433 uval2 = StunAttribute::CreateUInt32(STUN_ATTR_BANDWIDTH);
1434 uval2->SetValue(6); 1434 uval2->SetValue(6);
1435 msg2.AddAttribute(uval2); 1435 msg2.AddAttribute(uval2);
1436 1436
1437 addr = msg.GetAddress(STUN_ATTR_DESTINATION_ADDRESS); 1437 addr = msg.GetAddress(STUN_ATTR_DESTINATION_ADDRESS);
1438 ASSERT_TRUE(addr != NULL); 1438 ASSERT_TRUE(addr != nullptr);
1439 EXPECT_EQ(1, addr->family()); 1439 EXPECT_EQ(1, addr->family());
1440 EXPECT_EQ(13, addr->port()); 1440 EXPECT_EQ(13, addr->port());
1441 EXPECT_EQ(legacy_ip, addr->ipaddr()); 1441 EXPECT_EQ(legacy_ip, addr->ipaddr());
1442 1442
1443 addr2 = StunAttribute::CreateAddress(STUN_ATTR_DESTINATION_ADDRESS); 1443 addr2 = StunAttribute::CreateAddress(STUN_ATTR_DESTINATION_ADDRESS);
1444 addr2->SetPort(13); 1444 addr2->SetPort(13);
1445 addr2->SetIP(legacy_ip); 1445 addr2->SetIP(legacy_ip);
1446 msg2.AddAttribute(addr2); 1446 msg2.AddAttribute(addr2);
1447 1447
1448 addr = msg.GetAddress(STUN_ATTR_SOURCE_ADDRESS2); 1448 addr = msg.GetAddress(STUN_ATTR_SOURCE_ADDRESS2);
1449 ASSERT_TRUE(addr != NULL); 1449 ASSERT_TRUE(addr != nullptr);
1450 EXPECT_EQ(1, addr->family()); 1450 EXPECT_EQ(1, addr->family());
1451 EXPECT_EQ(13, addr->port()); 1451 EXPECT_EQ(13, addr->port());
1452 EXPECT_EQ(legacy_ip, addr->ipaddr()); 1452 EXPECT_EQ(legacy_ip, addr->ipaddr());
1453 1453
1454 addr2 = StunAttribute::CreateAddress(STUN_ATTR_SOURCE_ADDRESS2); 1454 addr2 = StunAttribute::CreateAddress(STUN_ATTR_SOURCE_ADDRESS2);
1455 addr2->SetPort(13); 1455 addr2->SetPort(13);
1456 addr2->SetIP(legacy_ip); 1456 addr2->SetIP(legacy_ip);
1457 msg2.AddAttribute(addr2); 1457 msg2.AddAttribute(addr2);
1458 1458
1459 bytes = msg.GetByteString(STUN_ATTR_DATA); 1459 bytes = msg.GetByteString(STUN_ATTR_DATA);
1460 ASSERT_TRUE(bytes != NULL); 1460 ASSERT_TRUE(bytes != nullptr);
1461 EXPECT_EQ(7U, bytes->length()); 1461 EXPECT_EQ(7U, bytes->length());
1462 EXPECT_EQ("abcdefg", bytes->GetString()); 1462 EXPECT_EQ("abcdefg", bytes->GetString());
1463 1463
1464 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_DATA); 1464 bytes2 = StunAttribute::CreateByteString(STUN_ATTR_DATA);
1465 bytes2->CopyBytes("abcdefg"); 1465 bytes2->CopyBytes("abcdefg");
1466 msg2.AddAttribute(bytes2); 1466 msg2.AddAttribute(bytes2);
1467 1467
1468 rtc::ByteBufferWriter out; 1468 rtc::ByteBufferWriter out;
1469 EXPECT_TRUE(msg.Write(&out)); 1469 EXPECT_TRUE(msg.Write(&out));
1470 EXPECT_EQ(size, out.Length()); 1470 EXPECT_EQ(size, out.Length());
1471 size_t len1 = out.Length(); 1471 size_t len1 = out.Length();
1472 rtc::ByteBufferReader read_buf(out); 1472 rtc::ByteBufferReader read_buf(out);
1473 std::string outstring; 1473 std::string outstring;
1474 read_buf.ReadString(&outstring, len1); 1474 read_buf.ReadString(&outstring, len1);
1475 EXPECT_EQ(0, memcmp(outstring.c_str(), input, len1)); 1475 EXPECT_EQ(0, memcmp(outstring.c_str(), input, len1));
1476 1476
1477 rtc::ByteBufferWriter out2; 1477 rtc::ByteBufferWriter out2;
1478 EXPECT_TRUE(msg2.Write(&out2)); 1478 EXPECT_TRUE(msg2.Write(&out2));
1479 EXPECT_EQ(size, out2.Length()); 1479 EXPECT_EQ(size, out2.Length());
1480 size_t len2 = out2.Length(); 1480 size_t len2 = out2.Length();
1481 rtc::ByteBufferReader read_buf2(out2); 1481 rtc::ByteBufferReader read_buf2(out2);
1482 std::string outstring2; 1482 std::string outstring2;
1483 read_buf2.ReadString(&outstring2, len2); 1483 read_buf2.ReadString(&outstring2, len2);
1484 EXPECT_EQ(0, memcmp(outstring2.c_str(), input, len2)); 1484 EXPECT_EQ(0, memcmp(outstring2.c_str(), input, len2));
1485 } 1485 }
1486 1486
1487 } // namespace cricket 1487 } // namespace cricket
OLDNEW
« webrtc/base/event.cc ('K') | « webrtc/p2p/base/stun.cc ('k') | webrtc/p2p/base/stunport.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698