You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsHTTPSOnlyModeTest.kt

202 lines
7.6 KiB
Kotlin

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.ui
import androidx.core.net.toUri
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.TestHelper.exitMenu
import org.mozilla.fenix.helpers.TestSetup
import org.mozilla.fenix.ui.robots.clickPageObject
import org.mozilla.fenix.ui.robots.homeScreen
import org.mozilla.fenix.ui.robots.navigationToolbar
class SettingsHTTPSOnlyModeTest : TestSetup() {
private val httpPageUrl = "http://example.com/"
private val httpsPageUrl = "https://example.com/"
private val insecureHttpPage = "http.badssl.com"
// "HTTPs not supported" error page contents:
private val httpsOnlyErrorTitle = "Secure site not available"
private val httpsOnlyErrorMessage = "Most likely, the website simply does not support HTTPS."
private val httpsOnlyErrorMessage2 = "However, its also possible that an attacker is involved. If you continue to the website, you should not enter any sensitive info. If you continue, HTTPS-Only mode will be turned off temporarily for the site."
private val httpsOnlyContinueButton = "Continue to HTTP Site"
private val httpsOnlyBackButton = "Go Back (Recommended)"
@get:Rule
val activityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true)
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1724825
@Test
fun httpsOnlyModeMenuItemsTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openHttpsOnlyModeMenu {
verifyHttpsOnlyModeMenuHeader()
verifyHttpsOnlyModeSummary()
verifyHttpsOnlyModeIsEnabled(false)
verifyHttpsOnlyModeOptionsEnabled(false)
verifyHttpsOnlyOptionSelected(
allTabsOptionSelected = false,
privateTabsOptionSelected = false,
)
clickHttpsOnlyModeSwitch()
verifyHttpsOnlyModeIsEnabled(true)
verifyHttpsOnlyModeOptionsEnabled(true)
verifyHttpsOnlyOptionSelected(
allTabsOptionSelected = true,
privateTabsOptionSelected = false,
)
}.goBack {
verifySettingsToolbar()
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1724827
@SmokeTest
@Test
fun httpsOnlyModeEnabledInNormalBrowsingTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openHttpsOnlyModeMenu {
clickHttpsOnlyModeSwitch()
verifyHttpsOnlyOptionSelected(
allTabsOptionSelected = true,
privateTabsOptionSelected = false,
)
}.goBack {
verifySettingsOptionSummary("HTTPS-Only Mode", "On in all tabs")
exitMenu()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(httpPageUrl.toUri()) {
waitForPageToLoad()
}.openNavigationToolbar {
verifyUrl(httpsPageUrl)
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
verifyPageContent(httpsOnlyErrorTitle)
verifyPageContent(httpsOnlyErrorMessage)
verifyPageContent(httpsOnlyErrorMessage2)
verifyPageContent(httpsOnlyBackButton)
clickPageObject(itemContainingText(httpsOnlyBackButton))
verifyPageContent("Example Domain")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
clickPageObject(itemContainingText(httpsOnlyContinueButton))
verifyPageContent("http.badssl.com")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2091057
@Test
fun httpsOnlyModeExceptionPersistsForCurrentSessionTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openHttpsOnlyModeMenu {
clickHttpsOnlyModeSwitch()
verifyHttpsOnlyOptionSelected(
allTabsOptionSelected = true,
privateTabsOptionSelected = false,
)
exitMenu()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
verifyPageContent(httpsOnlyErrorTitle)
clickPageObject(itemContainingText(httpsOnlyContinueButton))
verifyPageContent("http.badssl.com")
}.openTabDrawer {
closeTab()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
verifyPageContent("http.badssl.com")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1724828
@Test
fun httpsOnlyModeEnabledOnlyInPrivateBrowsingTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openHttpsOnlyModeMenu {
clickHttpsOnlyModeSwitch()
selectHttpsOnlyModeOption(
allTabsOptionSelected = false,
privateTabsOptionSelected = true,
)
}.goBack {
verifySettingsOptionSummary("HTTPS-Only Mode", "On in private tabs")
exitMenu()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
verifyPageContent("http.badssl.com")
}.goToHomescreen {
}.togglePrivateBrowsingMode()
navigationToolbar {
}.enterURLAndEnterToBrowser(httpPageUrl.toUri()) {
waitForPageToLoad()
}.openNavigationToolbar {
verifyUrl(httpsPageUrl)
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
verifyPageContent(httpsOnlyErrorTitle)
verifyPageContent(httpsOnlyErrorMessage)
verifyPageContent(httpsOnlyErrorMessage2)
verifyPageContent(httpsOnlyBackButton)
clickPageObject(itemContainingText(httpsOnlyBackButton))
verifyPageContent("Example Domain")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(insecureHttpPage.toUri()) {
clickPageObject(itemContainingText(httpsOnlyContinueButton))
verifyPageContent("http.badssl.com")
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2091058
@Test
fun turnOffHttpsOnlyModeTest() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openHttpsOnlyModeMenu {
clickHttpsOnlyModeSwitch()
verifyHttpsOnlyOptionSelected(
allTabsOptionSelected = true,
privateTabsOptionSelected = false,
)
exitMenu()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(httpPageUrl.toUri()) {
waitForPageToLoad()
}.openNavigationToolbar {
verifyUrl(httpsPageUrl)
}.goBackToBrowserScreen {
}.openThreeDotMenu {
}.openSettings {
}.openHttpsOnlyModeMenu {
clickHttpsOnlyModeSwitch()
verifyHttpsOnlyModeIsEnabled(false)
}.goBack {
verifySettingsOptionSummary("HTTPS-Only Mode", "Off")
exitMenu()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(httpPageUrl.toUri()) {
waitForPageToLoad()
}.openNavigationToolbar {
verifyUrl(httpPageUrl)
}
}
}