Merge pull request #320 from Telecominfraproject/WIFI-6016

Fixture for WPA2 ios Captive Portal
This commit is contained in:
Shivam Thakur
2022-01-03 14:35:06 +05:30
committed by GitHub
9 changed files with 91 additions and 74 deletions

View File

@@ -394,6 +394,25 @@ class UProfileUtility:
self.base_profile_config['services']['lldp']['describe'] = "OpenWiFi - expressWiFi"
self.base_profile_config['services']['lldp']['location'] = "Hotspot"
def set_captive_portal(self):
if self.mode == "NAT":
max_client = {
"max-clients": 32
}
# sourceFile = open('captive_config.py', 'w')
self.base_profile_config["interfaces"][1]["name"] = "captive"
self.base_profile_config["interfaces"][1]["ipv4"]["subnet"] = "192.168.2.1/24"
self.base_profile_config["interfaces"][1]["captive"] = max_client
del self.base_profile_config["interfaces"][1]["ethernet"]
del self.base_profile_config["interfaces"][1]["services"]
del self.base_profile_config["metrics"]["wifi-frames"]
del self.base_profile_config["metrics"]["dhcp-snooping"]
# print(self.base_profile_config)
# print(self.base_profile_config, file=sourceFile)
# sourceFile.close()
def encryption_lookup(self, encryption="psk"):

View File

@@ -2139,7 +2139,7 @@ def wifi_connect_eap(request, WifiName, User, ttls_passwd, setup_perfectoMobile,
#Captive Portal
def captive_portal_ios(request, WifiName, WifiPass, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("CaptivePortal Connection IOS")
print("CaptivePortal Connection iOS")
print("-------------------------------------")
reportFlag = True
@@ -2160,12 +2160,11 @@ def captive_portal_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
try:
time.sleep(2)
driver.implicitly_wait(2)
time.sleep(1)
try:
print("Verifying Connected Wifi Connection")
report.step_start("Loading Wifi Page")
element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//XCUIElementTypeCell[@name='Wi-Fi']")))
element.click()
except NoSuchElementException:
print("Exception: Verify Xpath - unable to click on Wifi")
@@ -2223,12 +2222,11 @@ def captive_portal_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
try:
print("getting in to Additional details")
additional_details_element = driver.find_element_by_xpath(
"//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
additional_details_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")))
additional_details_element.click()
try:
print("Forget Connected Network")
forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
forget_ssid = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
forget_ssid.click()
print("Forget old ssid")
try:
@@ -2307,45 +2305,36 @@ def captive_portal_ios(request, WifiName, WifiPass, setup_perfectoMobile, connDa
# ---------------------Click on join-------------------------------
try:
time.sleep(4)
driver.implicitly_wait(4)
time.sleep(8)
try:
time.sleep(8)
driver.implicitly_wait(2)
print("Acceptiong terms and Services")
report.step_start("loading Terms Page")
element = driver.find_element_by_xpath("//*[@label='Accept Terms of Service']")
element = WebDriverWait(driver,40).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Accept Terms of Service']")))
element.click()
except NoSuchElementException:
print("Exception: Accept Terms of Service Button Not Found")
reportFlag = False
assert reportFlag
try:
time.sleep(2)
driver.implicitly_wait(2)
print("Continue to connect the services")
report.step_start("Continiue Terms and Services Page")
element = driver.find_element_by_xpath("//*[@label='Continue']")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Continue']")))
element.click()
except NoSuchElementException:
print("Exception: Continue to connect Terms of Service Button Not Found")
try:
time.sleep(2)
driver.implicitly_wait(2)
print("Continue to the services")
report.step_start("Continue to use captive portal services")
element = driver.find_element_by_xpath("//*[@label='Continue']")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Continue']")))
element.click()
except NoSuchElementException:
print("Exception: Continue to use captive portal services not found")
try:
time.sleep(2)
driver.implicitly_wait(2)
print("Final Result Page")
report.step_start("Final Confirmation Page for Captive Portal Login")
time.sleep(2)
driver.implicitly_wait(2)
element = driver.find_element_by_xpath("//*[@label='Done']")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Done']")))
element.click()
# if element == driver.find_element_by_xpath("//XCUIElementTypeOther[@label='Success']"):
# element1 = driver.find_element_by_xpath("//*[@label='Done']")

View File

@@ -692,4 +692,4 @@ PASSPOINT_PROFILE_INFO = {
}
}
open_flow = {}
open_flow = {}

View File

@@ -21,32 +21,33 @@ from android_lib import closeApp, set_APconnMobileDevice_android, Toggle_Airplan
get_ip_address_and, verifyUploadDownloadSpeed_android, wifi_connect, wifi_disconnect_and_forget, captive_portal_and
pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.android, pytest.mark.interop_and, pytest.mark.captive_portal
,pytest.mark.interop_uc_sanity, pytest.mark.bridge]
,pytest.mark.regression_interop, pytest.mark.nat]
setup_params_general = {
"mode": "BRIDGE",
"mode": "NAT",
"ssid_modes": {
"open": [{"ssid_name": "captive_open_2g", "appliedRadios": ["2G"]},
{"ssid_name": "captive_open_5g", "appliedRadios": ["5G"]}],
"wpa": [{"ssid_name": "captive_wpa_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "captive_wpa_5g", "appliedRadios": ["5G"],
"open": [{"ssid_name": "nat_captive_open_2g", "appliedRadios": ["2G"]},
{"ssid_name": "nat_captive_open_5g", "appliedRadios": ["5G"]}],
"wpa": [{"ssid_name": "nat_captive_wpa_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "nat_captive_wpa_5g", "appliedRadios": ["5G"],
"security_key": "lanforge"}],
"wpa2_personal": [{"ssid_name": "captive_wpa2_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "captive_wpa2_5g", "appliedRadios": ["5G"],
"wpa2_personal": [{"ssid_name": "nat_captive_wpa2_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "nat_captive_wpa2_5g", "appliedRadios": ["5G"],
"security_key": "lanforge"}],
"wpa3_personal": [
{"ssid_name": "captive_wpa3_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "captive_wpa3_5g", "appliedRadios": ["5G"],
{"ssid_name": "nat_captive_wpa3_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "nat_captive_wpa3_5g", "appliedRadios": ["5G"],
"security_key": "lanforge"}]},
"rf": {},
"radius": False
"radius": False,
"captive_portal": True
}
@allure.suite(suite_name="interop sanity")
@allure.sub_suite(sub_suite_name="Bridge Mode Captive Portal : Suite-A")
@allure.sub_suite(sub_suite_name="Nat Mode Captive Portal : Suite-A")
@pytest.mark.InteropsuiteA
@allure.feature("BRIDGE MODE CAPTIVE PORTAL")
@allure.feature("NAT MODE CAPTIVE PORTAL")
@pytest.mark.parametrize(
'setup_profiles',
[setup_params_general],
@@ -54,14 +55,14 @@ setup_params_general = {
scope="class"
)
@pytest.mark.usefixtures("setup_profiles")
class TestBridgeModeCaptivePortalSuiteOneBridge(object):
class TestNATModeCaptivePortalSuiteOneNAT(object):
""" Captive Portal SuiteA
pytest -m "captive portal and bridge and InteropsuiteA"
pytest -m "captive portal and nat and InteropsuiteA"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5178", name="WIFI-5178")
@pytest.mark.twog
@pytest.mark.open
def test_Captive_Portal_Open_2g_BRIDGE(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_Open_2g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_android):
profile_data = setup_params_general["ssid_modes"]["open"][0]
@@ -96,7 +97,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5141", name="WIFI-5141")
@pytest.mark.fiveg
@pytest.mark.open
def test_Captive_Portal_Open_5g_BRIDGE(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_Open_5g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_android):
profile_data = setup_params_general["ssid_modes"]["open"][1]
@@ -132,7 +133,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5180", name="WIFI-5180")
@pytest.mark.twog
@pytest.mark.wpa
def test_Captive_Portal_WPA_2g_Bridge(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_WPA_2g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_android):
profile_data = setup_params_general["ssid_modes"]["wpa"][0]
@@ -167,7 +168,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5144", name="WIFI-5144")
@pytest.mark.fiveg
@pytest.mark.wpa
def test_Captive_Portal_WPA_5g_Bridge(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_WPA_5g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_android):
profile_data = setup_params_general["ssid_modes"]["wpa"][1]
@@ -203,7 +204,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5184", name="WIFI-5184")
@pytest.mark.twog
@pytest.mark.wpa2_personal
def test_Captive_Portal_WPA2_2g_Personal_Bridge(self, request, get_vif_state, get_ap_logs,
def test_Captive_Portal_WPA2_2g_Personal_NAT(self, request, get_vif_state, get_ap_logs,
get_APToMobileDevice_data,
setup_perfectoMobile_android):
@@ -240,7 +241,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5147", name="WIFI-5147")
@pytest.mark.fiveg
@pytest.mark.wpa2_personal
def test_Captive_Portal_WPA2_5g_Personal_Bridge(self, request, get_vif_state, get_ap_logs,
def test_Captive_Portal_WPA2_5g_Personal_NAT(self, request, get_vif_state, get_ap_logs,
get_APToMobileDevice_data,
setup_perfectoMobile_android):

View File

@@ -22,48 +22,50 @@ from iOS_lib import closeApp, openApp, get_WifiIPAddress_iOS, ForgetWifiConnecti
verifyUploadDownloadSpeediOS, get_ip_address_ios, captive_portal_ios, wifi_connect, wifi_disconnect_and_forget
pytestmark = [pytest.mark.sanity, pytest.mark.interop, pytest.mark.ios, pytest.mark.interop_ios,
pytest.mark.captive_portal, pytest.mark.interop_uc_sanity, pytest.mark.bridge]
pytest.mark.captive_portal, pytest.mark.regression_interop, pytest.mark.nat]
setup_params_general = {
"mode": "BRIDGE",
"mode": "NAT",
"ssid_modes": {
"open": [{"ssid_name": "captive_open_2g", "appliedRadios": ["2G"]},
{"ssid_name": "captive_open_5g", "appliedRadios": ["5G"]}],
"wpa": [{"ssid_name": "captive_wpa_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "captive_wpa_5g", "appliedRadios": ["5G"],
"open": [{"ssid_name": "nat_captive_open_2g", "appliedRadios": ["2G"]},
{"ssid_name": "nat_captive_open_5g", "appliedRadios": ["5G"]}],
"wpa": [{"ssid_name": "nat_captive_wpa_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "nat_captive_wpa_5g", "appliedRadios": ["5G"],
"security_key": "lanforge"}],
"wpa2": [{"ssid_name": "captive_wpa2_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "captive2_wpa_5g", "appliedRadios": ["5G"],
"wpa2_personal": [{"ssid_name": "nat_captive_wpa2_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "nat_captive_wpa2_5g", "appliedRadios": ["5G"],
"security_key": "lanforge"}],
"wpa3_personal": [
{"ssid_name": "captive_wpa3_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "captive_wpa3_5g", "appliedRadios": ["5G"],
{"ssid_name": "nat_captive_wpa3_2g", "appliedRadios": ["2G"], "security_key": "lanforge"},
{"ssid_name": "nat_captive_wpa3_5g", "appliedRadios": ["5G"],
"security_key": "lanforge"}]},
"rf": {},
"radius": False
"radius": False,
"captive_portal": True
}
@allure.suite(suite_name="interop sanity")
@allure.sub_suite(sub_suite_name="Bridge Mode Captive Portal : Suite-A")
@allure.sub_suite(sub_suite_name="NAT Mode Captive Portal : Suite-A")
@pytest.mark.InteropsuiteA
@allure.feature("BRIDGE MODE CAPTIVE PORTAL")
# @pytest.mark.parametrize(
# 'setup_profiles',
# [setup_params_general],
# indirect=True,
# scope="class"
# )
#@pytest.mark.usefixtures("setup_profiles")
class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.feature("NAT MODE CAPTIVE PORTAL")
@pytest.mark.parametrize(
'setup_profiles',
[setup_params_general],
indirect=True,
scope="class"
)
@pytest.mark.usefixtures("setup_profiles")
class TestNatModeCaptivePortalSuiteOneNAT(object):
""" Captive Portal SuiteA
pytest -m "captive portal and bridge and InteropsuiteA"
pytest -m "captive portal and nat and InteropsuiteA"
"""
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5179", name="WIFI-5179")
@pytest.mark.twog
@pytest.mark.open
def test_Captive_Portal_Open_2g_BRIDGE(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_Open_2g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
profile_data = setup_params_general["ssid_modes"]["open"][0]
@@ -98,7 +100,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5146", name="WIFI-5146")
@pytest.mark.fiveg
@pytest.mark.open
def test_Captive_Portal_Open_5g_BRIDGE(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_Open_5g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
profile_data = setup_params_general["ssid_modes"]["open"][1]
@@ -133,7 +135,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5182", name="WIFI-5182")
@pytest.mark.twog
@pytest.mark.wpa
def test_Captive_Portal_WPA_2g_Bridge(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_WPA_2g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
profile_data = setup_params_general["ssid_modes"]["wpa"][0]
@@ -168,7 +170,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5149", name="WIFI-5149")
@pytest.mark.fiveg
@pytest.mark.wpa
def test_Captive_Portal_WPA_5g_Bridge(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
def test_Captive_Portal_WPA_5g_NAT(self, request, get_vif_state, get_ap_logs, get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
profile_data = setup_params_general["ssid_modes"]["wpa"][1]
@@ -203,7 +205,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5186", name="WIFI-5186")
@pytest.mark.twog
@pytest.mark.wpa2_personal
def test_Captive_Portal_WPA2_2g_Personal_Bridge(self, request, get_vif_state, get_ap_logs,
def test_Captive_Portal_WPA2_2g_Personal_NAT(self, request, get_vif_state, get_ap_logs,
get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
@@ -240,7 +242,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5153", name="WIFI-5153")
@pytest.mark.fiveg
@pytest.mark.wpa2_personal
def test_Captive_Portal_WPA2_5g_Personal_Bridge(self, request, get_vif_state, get_ap_logs,
def test_Captive_Portal_WPA2_5g_Personal_NAT(self, request, get_vif_state, get_ap_logs,
get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
@@ -277,7 +279,7 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5130", name="WIFI-5130")
@pytest.mark.twog
@pytest.mark.wpa3_personal
def test_Captive_Portal_WPA3_2g_Personal_Bridge(self, request, get_vif_state, get_ap_logs,
def test_Captive_Portal_WPA3_2g_Personal_NAT(self, request, get_vif_state, get_ap_logs,
get_APToMobileDevice_data,
setup_perfectoMobile_iOS):
@@ -312,10 +314,9 @@ class TestBridgeModeCaptivePortalSuiteOneBridge(object):
assert False
@allure.testcase(url="https://telecominfraproject.atlassian.net/browse/WIFI-5140", name="WIFI-5140")
@pytest.mark.sg123
@pytest.mark.fiveg
@pytest.mark.wpa3_personal
def test_Captive_Portal_WPA3_5g_Personal_Bridge(self, request, get_vif_state, get_ap_logs,
def test_Captive_Portal_WPA3_5g_Personal_NAT(self, request, get_vif_state, get_ap_logs,
get_APToMobileDevice_data,
setup_perfectoMobile_iOS):

View File

@@ -567,6 +567,13 @@ class Fixtures_2x:
except Exception as e:
pass
try:
if parameter['captive_portal']:
instantiate_profile_obj.set_captive_portal()
# print(json.loads(str(instantiate_profile_obj.base_profile_config).replace(" ", "").replace("'", '"')))
except:
pass
ap_ssh = get_apnos(get_configuration['access_point'][0], pwd="../libs/apnos/", sdk="2.x")
# Get ucentral status