OLD | NEW |
---|---|
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 "components/data_reduction_proxy/browser/data_reduction_proxy_params.h" | 5 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h" |
6 | 6 |
7 #include <map> | |
8 | |
7 #include "base/command_line.h" | 9 #include "base/command_line.h" |
8 #include "base/logging.h" | 10 #include "base/logging.h" |
9 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params_te st_utils.h" | 11 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params_te st_utils.h" |
10 #include "components/data_reduction_proxy/common/data_reduction_proxy_switches.h " | 12 #include "components/data_reduction_proxy/common/data_reduction_proxy_switches.h " |
13 #include "net/proxy/proxy_retry_info.h" | |
14 #include "net/proxy/proxy_server.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
12 | 16 |
13 namespace data_reduction_proxy { | 17 namespace data_reduction_proxy { |
14 class DataReductionProxyParamsTest : public testing::Test { | 18 class DataReductionProxyParamsTest : public testing::Test { |
15 public: | 19 public: |
16 void CheckParams(const TestDataReductionProxyParams& params, | 20 void CheckParams(const TestDataReductionProxyParams& params, |
17 bool expected_init_result, | 21 bool expected_init_result, |
18 bool expected_allowed, | 22 bool expected_allowed, |
19 bool expected_fallback_allowed, | 23 bool expected_fallback_allowed, |
20 bool expected_alternative_allowed, | 24 bool expected_alternative_allowed, |
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
551 std::pair<GURL, GURL> proxy_servers; | 555 std::pair<GURL, GURL> proxy_servers; |
552 EXPECT_EQ(tests[i].expected_result, | 556 EXPECT_EQ(tests[i].expected_result, |
553 params.IsDataReductionProxy( | 557 params.IsDataReductionProxy( |
554 tests[i].host_port_pair, &proxy_servers)); | 558 tests[i].host_port_pair, &proxy_servers)); |
555 EXPECT_TRUE(tests[i].expected_first.Equals( | 559 EXPECT_TRUE(tests[i].expected_first.Equals( |
556 net::HostPortPair::FromURL(proxy_servers.first))); | 560 net::HostPortPair::FromURL(proxy_servers.first))); |
557 EXPECT_TRUE(tests[i].expected_second.Equals( | 561 EXPECT_TRUE(tests[i].expected_second.Equals( |
558 net::HostPortPair::FromURL(proxy_servers.second))); | 562 net::HostPortPair::FromURL(proxy_servers.second))); |
559 } | 563 } |
560 } | 564 } |
565 | |
566 std::string GetRetryMapKeyFromOrigin(std::string origin) { | |
567 // The retry map has the scheme prefix for https but not for http | |
568 return net::ProxyServer(GURL(origin).SchemeIs(url::kHttpsScheme) ? | |
569 net::ProxyServer::SCHEME_HTTPS : net::ProxyServer::SCHEME_HTTP, | |
570 net::HostPortPair::FromURL(GURL(origin))).ToURI(); | |
571 } | |
572 | |
573 TEST_F(DataReductionProxyParamsTest, AreProxiesBypassed) { | |
574 const struct { | |
575 // proxy flags | |
576 bool allowed; | |
577 bool fallback_allowed; | |
578 bool alt_allowed; | |
579 // is https request | |
580 bool is_https; | |
581 // proxies in retry map | |
582 bool origin; | |
583 bool fallback_origin; | |
584 bool alt_origin; | |
585 bool alt_fallback_origin; | |
586 bool ssl_origin; | |
587 | |
588 bool expected_result; | |
589 } tests[] = { | |
590 { // proxy flags | |
591 false, | |
592 false, | |
593 false, | |
594 // is https request | |
595 false, | |
596 // proxies in retry map | |
597 false, | |
598 false, | |
599 false, | |
600 false, | |
601 false, | |
602 // expected result | |
603 false, | |
604 }, | |
605 { // proxy flags | |
606 true, | |
607 false, | |
608 false, | |
609 // is https request | |
610 false, | |
611 // proxies in retry map | |
612 false, | |
613 false, | |
614 false, | |
615 false, | |
616 false, | |
617 // expected result | |
618 false, | |
619 }, | |
620 { // proxy flags | |
621 true, | |
622 true, | |
623 false, | |
624 // is https request | |
625 false, | |
626 // proxies in retry map | |
627 false, | |
628 false, | |
629 false, | |
630 false, | |
631 false, | |
632 // expected result | |
633 false, | |
634 }, | |
635 { // proxy flags | |
636 true, | |
637 true, | |
638 true, | |
639 // is https request | |
640 false, | |
641 // proxies in retry map | |
642 false, | |
643 false, | |
644 false, | |
645 false, | |
646 false, | |
647 // expected result | |
648 false, | |
649 }, | |
650 { // proxy flags | |
651 true, | |
652 true, | |
653 true, | |
654 // is https request | |
655 true, | |
656 // proxies in retry map | |
657 false, | |
658 false, | |
659 false, | |
660 false, | |
661 false, | |
662 // expected result | |
663 false, | |
664 }, | |
665 { // proxy flags | |
666 false, | |
667 false, | |
668 false, | |
669 // is https request | |
670 true, | |
671 // proxies in retry map | |
672 false, | |
673 false, | |
674 false, | |
675 false, | |
676 true, | |
677 // expected result | |
678 false, | |
679 }, | |
680 { // proxy flags | |
681 false, | |
682 false, | |
683 true, | |
684 // is https request | |
685 true, | |
686 // proxies in retry map | |
687 false, | |
688 false, | |
689 false, | |
690 false, | |
691 true, | |
692 // expected result | |
693 true, | |
694 }, | |
695 { // proxy flags | |
696 true, | |
697 true, | |
698 true, | |
699 // is https request | |
700 true, | |
701 // proxies in retry map | |
702 false, | |
703 false, | |
704 false, | |
705 false, | |
706 true, | |
707 // expected result | |
708 true, | |
709 }, | |
710 { // proxy flags | |
711 true, | |
712 false, | |
713 false, | |
714 // is https request | |
715 false, | |
716 // proxies in retry map | |
717 true, | |
718 false, | |
719 false, | |
720 false, | |
721 false, | |
722 // expected result | |
723 true, | |
724 }, | |
725 { // proxy flags | |
726 true, | |
727 true, | |
728 false, | |
729 // is https request | |
730 false, | |
731 // proxies in retry map | |
732 true, | |
733 false, | |
734 false, | |
735 false, | |
736 false, | |
737 // expected result | |
738 false, | |
739 }, | |
740 { // proxy flags | |
741 true, | |
742 true, | |
743 false, | |
744 // is https request | |
745 false, | |
746 // proxies in retry map | |
747 true, | |
748 true, | |
749 false, | |
750 false, | |
751 false, | |
752 // expected result | |
753 true, | |
754 }, | |
755 { // proxy flags | |
756 true, | |
757 true, | |
758 true, | |
759 // is https request | |
760 false, | |
761 // proxies in retry map | |
762 true, | |
763 true, | |
764 false, | |
765 false, | |
766 false, | |
767 // expected result | |
768 true, | |
769 }, | |
770 { // proxy flags | |
771 true, | |
772 true, | |
773 true, | |
774 // is https request | |
775 false, | |
776 // proxies in retry map | |
777 true, | |
778 false, | |
779 true, | |
780 false, | |
781 false, | |
782 // expected result | |
783 false, | |
784 }, | |
785 { // proxy flags | |
786 true, | |
787 true, | |
788 true, | |
789 // is https request | |
790 false, | |
791 // proxies in retry map | |
792 false, | |
793 false, | |
794 true, | |
795 true, | |
796 false, | |
797 // expected result | |
798 true, | |
799 }, | |
800 { // proxy flags | |
801 false, | |
802 true, | |
803 true, | |
804 // is https request | |
805 false, | |
806 // proxies in retry map | |
807 false, | |
808 false, | |
809 true, | |
810 true, | |
811 false, | |
812 // expected result | |
813 true, | |
814 }, | |
815 { // proxy flags | |
816 false, | |
817 true, | |
818 false, | |
819 // is https request | |
820 false, | |
821 // proxies in retry map | |
822 false, | |
823 false, | |
824 true, | |
825 false, | |
826 false, | |
827 // expected result | |
828 false, | |
829 }, | |
830 { // proxy flags | |
831 true, | |
832 true, | |
833 true, | |
834 // is https request | |
835 false, | |
836 // proxies in retry map | |
837 true, | |
838 false, | |
839 true, | |
840 true, | |
841 false, | |
842 // expected result | |
843 true, | |
844 }, | |
845 { // proxy flags | |
846 true, | |
847 true, | |
848 true, | |
849 // is https request | |
850 false, | |
851 // proxies in retry map | |
852 true, | |
853 true, | |
854 true, | |
855 true, | |
856 true, | |
857 // expected result | |
858 true, | |
859 }, | |
860 { // proxy flags | |
861 true, | |
862 true, | |
863 true, | |
864 // is https request | |
865 true, | |
866 // proxies in retry map | |
867 true, | |
868 true, | |
869 true, | |
870 true, | |
871 true, | |
872 // expected result | |
873 true, | |
874 }, | |
875 { // proxy flags | |
876 true, | |
877 true, | |
878 true, | |
879 // is https request | |
880 true, | |
881 // proxies in retry map | |
882 true, | |
883 true, | |
884 true, | |
885 true, | |
886 false, | |
887 // expected result | |
888 false, | |
889 }, | |
890 }; | |
891 | |
892 // The retry map has the scheme prefix for https but not for http. | |
893 std::string origin = GetRetryMapKeyFromOrigin( | |
894 TestDataReductionProxyParams::DefaultOrigin()); | |
895 std::string fallback_origin =GetRetryMapKeyFromOrigin( | |
896 TestDataReductionProxyParams::DefaultFallbackOrigin()); | |
897 std::string alt_origin = GetRetryMapKeyFromOrigin( | |
898 TestDataReductionProxyParams::DefaultAltOrigin()); | |
899 std::string alt_fallback_origin = GetRetryMapKeyFromOrigin( | |
900 TestDataReductionProxyParams::DefaultAltFallbackOrigin()); | |
901 std::string ssl_origin = GetRetryMapKeyFromOrigin( | |
902 TestDataReductionProxyParams::DefaultSSLOrigin()); | |
903 | |
904 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { | |
905 int flags = 0; | |
906 if (tests[i].allowed) | |
907 flags |= DataReductionProxyParams::kAllowed; | |
908 if (tests[i].alt_allowed) | |
909 flags |= DataReductionProxyParams::kAlternativeAllowed; | |
910 if (tests[i].fallback_allowed) | |
911 flags |= DataReductionProxyParams::kFallbackAllowed; | |
912 TestDataReductionProxyParams params( | |
913 flags, TestDataReductionProxyParams::HAS_EVERYTHING & | |
914 ~TestDataReductionProxyParams::HAS_DEV_ORIGIN); | |
Alexei Svitkine (slow)
2014/07/22 23:14:19
Nit: I'd extract the 2nd param into a local variab
megjablon
2014/07/23 20:11:45
Done.
| |
915 | |
916 net::ProxyRetryInfoMap retry_map; | |
917 net::ProxyRetryInfo retry_info; | |
918 | |
919 if (tests[i].origin) | |
920 retry_map[origin] = retry_info; | |
921 if (tests[i].fallback_origin) | |
922 retry_map[fallback_origin] = retry_info; | |
923 if (tests[i].alt_origin) | |
924 retry_map[alt_origin] = retry_info; | |
925 if (tests[i].alt_fallback_origin) | |
926 retry_map[alt_fallback_origin] = retry_info; | |
927 if (tests[i].ssl_origin) | |
928 retry_map[ssl_origin] = retry_info; | |
929 | |
930 bool was_bypassed = params.AreProxiesBypassed(retry_map, | |
931 tests[i].is_https, | |
932 NULL); | |
933 | |
934 EXPECT_EQ(tests[i].expected_result, was_bypassed); | |
935 } | |
936 } | |
561 } // namespace data_reduction_proxy | 937 } // namespace data_reduction_proxy |
OLD | NEW |