ios_serialized_navigation_driver_unittest.cc 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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
  3. // found in the LICENSE file.
  4. #include "components/sessions/ios/ios_serialized_navigation_driver.h"
  5. #include "components/sessions/core/serialized_navigation_entry.h"
  6. #include "components/sessions/core/serialized_navigation_entry_test_helper.h"
  7. #include "ios/web/public/navigation/referrer.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. #include "ui/base/page_transition_types.h"
  10. namespace sessions {
  11. // Tests that PageState data is properly sanitized when post data is present.
  12. TEST(IOSSerializedNavigationDriverTest, PickleSanitization) {
  13. IOSSerializedNavigationDriver* driver =
  14. IOSSerializedNavigationDriver::GetInstance();
  15. SerializedNavigationEntry navigation =
  16. SerializedNavigationEntryTestHelper::CreateNavigationForTest();
  17. EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
  18. // Sanitization always clears the page state.
  19. std::string sanitized_page_state =
  20. driver->GetSanitizedPageStateForPickle(&navigation);
  21. EXPECT_EQ(std::string(), sanitized_page_state);
  22. }
  23. // Tests that the input data is left unsanitized when the referrer policy is
  24. // Always.
  25. TEST(IOSSerializedNavigationDriverTest, SanitizeWithReferrerPolicyAlways) {
  26. IOSSerializedNavigationDriver* driver =
  27. IOSSerializedNavigationDriver::GetInstance();
  28. SerializedNavigationEntry navigation =
  29. SerializedNavigationEntryTestHelper::CreateNavigationForTest();
  30. SerializedNavigationEntryTestHelper::SetReferrerPolicy(
  31. web::ReferrerPolicyAlways, &navigation);
  32. driver->Sanitize(&navigation);
  33. SerializedNavigationEntry reference_navigation =
  34. SerializedNavigationEntryTestHelper::CreateNavigationForTest();
  35. EXPECT_EQ(reference_navigation.index(), navigation.index());
  36. EXPECT_EQ(reference_navigation.unique_id(), navigation.unique_id());
  37. EXPECT_EQ(reference_navigation.referrer_url(), navigation.referrer_url());
  38. EXPECT_EQ(web::ReferrerPolicyAlways, navigation.referrer_policy());
  39. EXPECT_EQ(reference_navigation.virtual_url(), navigation.virtual_url());
  40. EXPECT_EQ(reference_navigation.title(), navigation.title());
  41. EXPECT_EQ(reference_navigation.encoded_page_state(),
  42. navigation.encoded_page_state());
  43. EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
  44. navigation.transition_type(), reference_navigation.transition_type()));
  45. EXPECT_EQ(reference_navigation.has_post_data(), navigation.has_post_data());
  46. EXPECT_EQ(reference_navigation.post_id(), navigation.post_id());
  47. EXPECT_EQ(reference_navigation.original_request_url(),
  48. navigation.original_request_url());
  49. EXPECT_EQ(reference_navigation.is_overriding_user_agent(),
  50. navigation.is_overriding_user_agent());
  51. EXPECT_EQ(reference_navigation.timestamp(), navigation.timestamp());
  52. EXPECT_EQ(reference_navigation.favicon_url(), navigation.favicon_url());
  53. EXPECT_EQ(reference_navigation.http_status_code(),
  54. navigation.http_status_code());
  55. }
  56. // Tests that the input data is properly sanitized when the referrer policy is
  57. // Never.
  58. TEST(IOSSerializedNavigationDriverTest, SanitizeWithReferrerPolicyNever) {
  59. IOSSerializedNavigationDriver* driver =
  60. IOSSerializedNavigationDriver::GetInstance();
  61. SerializedNavigationEntry navigation =
  62. SerializedNavigationEntryTestHelper::CreateNavigationForTest();
  63. SerializedNavigationEntryTestHelper::SetReferrerPolicy(
  64. web::ReferrerPolicyNever, &navigation);
  65. driver->Sanitize(&navigation);
  66. // Fields that should remain untouched.
  67. SerializedNavigationEntry reference_navigation =
  68. SerializedNavigationEntryTestHelper::CreateNavigationForTest();
  69. EXPECT_EQ(reference_navigation.index(), navigation.index());
  70. EXPECT_EQ(reference_navigation.unique_id(), navigation.unique_id());
  71. EXPECT_EQ(reference_navigation.virtual_url(), navigation.virtual_url());
  72. EXPECT_EQ(reference_navigation.title(), navigation.title());
  73. EXPECT_EQ(reference_navigation.encoded_page_state(),
  74. navigation.encoded_page_state());
  75. EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
  76. navigation.transition_type(), reference_navigation.transition_type()));
  77. EXPECT_EQ(reference_navigation.has_post_data(), navigation.has_post_data());
  78. EXPECT_EQ(reference_navigation.post_id(), navigation.post_id());
  79. EXPECT_EQ(reference_navigation.original_request_url(),
  80. navigation.original_request_url());
  81. EXPECT_EQ(reference_navigation.is_overriding_user_agent(),
  82. navigation.is_overriding_user_agent());
  83. EXPECT_EQ(reference_navigation.timestamp(), navigation.timestamp());
  84. EXPECT_EQ(reference_navigation.favicon_url(), navigation.favicon_url());
  85. EXPECT_EQ(reference_navigation.http_status_code(),
  86. navigation.http_status_code());
  87. // Fields that were sanitized.
  88. EXPECT_EQ(GURL(), navigation.referrer_url());
  89. EXPECT_EQ(web::ReferrerPolicyDefault, navigation.referrer_policy());
  90. }
  91. } // namespace sessions