def test_client_creation(stack_setup, browser_setup): """Default behavior test with no faulty input.""" db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "clients/") WebDriverWait(driver, 5).until( lambda x: x.find_element_by_id("client_creation_toggle_button")) driver.find_element_by_id("client_creation_toggle_button").click() # create first client WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_name_new")) driver.find_element_by_id("client_name_new").send_keys("BBC") driver.find_element_by_id("client_email_new").send_keys("*****@*****.**") driver.find_element_by_id("new_client_identifier_suggestion").click() assert len( driver.find_element_by_id("client_identifier_new").get_attribute( 'value')) == 128 driver.find_element_by_id("client_identifier_new").clear() driver.find_element_by_id("client_identifier_new").send_keys( "TESTIDENTIFIERS1") driver.find_element_by_id("update_save_btn_new").click() WebDriverWait( driver, 5).until(lambda x: x.find_element_by_id("client_operation_success")) WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_row_1")) # create a second client WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_name_new")) driver.find_element_by_id("client_name_new").send_keys("CNN") driver.find_element_by_id("client_email_new").send_keys("*****@*****.**") driver.find_element_by_id("client_identifier_new").send_keys( "TESTIDENTIFIERS2") driver.find_element_by_id("update_save_btn_new").click() WebDriverWait( driver, 5).until(lambda x: x.find_element_by_id("client_operation_success")) WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_row_2")) # Check entered data clients_tr = list( map( lambda x: x.text, driver.find_element_by_id( "clients_display").find_elements_by_css_selector("tr"))) assert compare_lists(clients_tr, CLIENTS_HTML_TR) # Check DB result = db.engine.execute(text(CLIENTS_MYSQL_QUERY)) assert result.rowcount == 2 client_mysql_tr = [] for row in sql_alchemy_result_to_list(result): client_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(client_mysql_tr, CLIENTS_DB_TR, True)
def test_channel_edition(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "channels/edit/1") assert Select(driver.find_element_by_name("station")).first_selected_option.get_attribute('value') == "1" assert driver.find_element_by_name("name").get_attribute("value") == "CS_VHF_FM" assert Select(driver.find_element_by_name("fk_client")).first_selected_option.text.strip() == "default" assert Select(driver.find_element_by_name("type_id")).first_selected_option.text.strip() == "VHF/FM" assert Select(driver.find_element_by_name("ecc_id")).first_selected_option.text.strip() == "France (FR) [FE1]" # CH 4EI assert driver.find_element_by_name("pi").get_attribute('value') == "C00F" assert driver.find_element_by_name("frequency").get_attribute('value') == "00917" clear_input(driver, "[name=name]") driver.find_element_by_name("name").send_keys("CS_DAB_NEW") driver.find_element_by_id("type").find_element_by_css_selector("option[value=dab]").click() driver.find_element_by_name("eid").send_keys("43e2") driver.find_element_by_name("sid").send_keys("4002") driver.find_element_by_name("scids").send_keys("2") driver.find_element_by_name("mime_type").send_keys("audio/aac") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Check entered data channel_tr = list(map(lambda x: x.text, driver .find_element_by_id("radiodns-channel-table") .find_elements_by_css_selector("tr"))) assert compare_lists(channel_tr, CHANNELS_HTML_TR) # Check DB result = db.engine.execute(text(CHANNELS_MSQL_QUERY)) assert result.rowcount == 7 station_mysql_tr = [] for row in sql_alchemy_result_to_list(result): station_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(station_mysql_tr, CHANNELS_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 bearers = ET.fromstring(res.text).findall(".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 6 assert bearers[0].attrib["id"] == "amss:4001" assert bearers[0].attrib["cost"] == "100" assert bearers[1].attrib["id"] == "dab:fe1.43e1.4001.0" assert bearers[1].attrib["cost"] == "20" assert bearers[1].attrib["mimeValue"] == "audio/mpeg" assert bearers[2].attrib["id"] == "dab:fe1.43e2.4002.2" assert bearers[2].attrib["cost"] == "50" assert bearers[2].attrib["mimeValue"] == "audio/aac" assert bearers[3].attrib["id"] == "drm:4001" assert bearers[3].attrib["cost"] == "100" assert bearers[4].attrib["id"] == "hd:031.0eaff" assert bearers[4].attrib["cost"] == "100" assert bearers[5].attrib["id"] == "http://server/stream" assert bearers[5].attrib["cost"] == "100" assert bearers[5].attrib["offset"] == "2000" assert bearers[5].attrib["mimeValue"] == "audio/mpeg" assert bearers[5].attrib["bitrate"] == "200"
def test_logo(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "serviceprovider/images/edit/-") # Is page loaded? assert ":: PlugIt -Standalone mode" == driver.title # Fill inputs driver.find_element_by_name("name").send_keys("Classic_main") driver.find_element_by_name("file").send_keys(os.getcwd() + "/ressources/classical_music.jpg") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() driver.get(TEST_PROXY_URL + "serviceprovider/images/edit/-") driver.find_element_by_name("name").send_keys("Classic_main_2") driver.find_element_by_name("file").send_keys(os.getcwd() + "/ressources/classical_music.png") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Check HTML images = list(map( lambda x: [x.get_attribute("naturalWidth"), x.get_attribute("naturalHeight"), x.get_attribute("currentSrc")], driver.find_elements_by_css_selector(".tooltipme")) ) for i in range(len(images)): assert compare_lists(images[i], HTML_IMAGES[i], True) images_names = list(map(lambda x: x.text, driver.find_elements_by_css_selector(".sorting_1")) ) assert compare_lists(images_names, HTML_IMAGES_NAMES, True) # Check DB result = db.engine.execute(text(MYSQL_QUERY)) assert result.rowcount == 2 parsed_result = sql_alchemy_result_to_list(result) for i in range(len(parsed_result)): assert compare_lists(parsed_result[i], MSQL_ROWS[i], True) # Select image 1 as first station logo driver.get(TEST_PROXY_URL + "radioepg/logos/") driver.find_element_by_id("logo_select").find_element_by_css_selector("option[value='1']").click() time.sleep(0.5) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 xml_root = ET.fromstring(res.text) multimedias = list(map(lambda x: x.attrib["url"], xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}multimedia"))) assert compare_lists(multimedias, XML_URLS, True) # Check images availability for url in XML_URLS: assert requests.get(url).status_code == 200
def test_create_service_provider(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "serviceprovider/edit/-") # Is page loaded? assert ":: PlugIt -Standalone mode" == driver.title # Fill inputs driver.find_element_by_name("short_name").send_keys("EBU") driver.find_element_by_name("medium_name").send_keys("European BU") driver.find_element_by_name("long_name").send_keys( "European Broadcasting Union") driver.find_element_by_name("short_description").send_keys( "THE EUROPEAN BROADCASTING UNION IS THE WORLD’S LEADING ALLIANCE OF PUBLIC SERVICE MEDIA" ) driver.find_element_by_name( "default_language").find_element_by_css_selector( "option[value=en-GB]").click() driver.find_element_by_name("url_default").send_keys( "https://github.com/ebu") driver.find_element_by_name("postal_name").send_keys("EBU") driver.find_element_by_name("street").send_keys("L'Ancienne-Route 17A") driver.find_element_by_name("zipcode").send_keys("1218") driver.find_element_by_name("city").send_keys("Le Grand-Saconnex") driver.find_element_by_name( "location_country").find_element_by_css_selector( "option[value=fr]").click() driver.find_element_by_name("phone_number").send_keys("022 717 21 11") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Check entered data tr_list = list( map( lambda x: x.text, driver.find_element_by_class_name( "table-responsive").find_elements_by_css_selector("tr"))) assert compare_lists(tr_list, SERVICE_PROVIDER_HTML_TR) # Check db result = db.engine.execute(text(MYSQL_SERVICE_PROVIDER_QUERY)) assert result.rowcount == 1 assert compare_lists( sql_alchemy_result_to_list(result)[0], SERVICE_PROVIDER_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 attrib_root = ET.fromstring(res.text).attrib assert "originator" in attrib_root assert attrib_root["originator"] == "EBU.io RadioDNS Services v3"
def test_delete_channel(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "channels/") driver.find_element_by_css_selector( "[href='/channels/delete/2']").send_keys(Keys.RETURN) accept_alert(driver) WebDriverWait(driver, 5).until( EC.invisibility_of_element_located( (By.CSS_SELECTOR, "[href='/channels/delete/2']"))) channel_tr = list( map( lambda x: x.text, driver.find_element_by_id( "radiodns-channel-table").find_elements_by_css_selector("tr"))) assert compare_lists(channel_tr, CHANNELS_HTML_TR) # Check DB result = db.engine.execute(text(CHANNELS_MSQL_QUERY)) assert result.rowcount == 6 station_mysql_tr = [] for row in sql_alchemy_result_to_list(result): station_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(station_mysql_tr, CHANNELS_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 bearers = ET.fromstring( res.text).findall(".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 5 assert bearers[0].attrib["id"] == "amss:4001" assert bearers[0].attrib["cost"] == "100" assert bearers[1].attrib["id"] == "dab:fe1.43e2.4002.2" assert bearers[1].attrib["cost"] == "50" assert bearers[1].attrib["mimeValue"] == "audio/aac" assert bearers[2].attrib["id"] == "drm:4001" assert bearers[2].attrib["cost"] == "100" assert bearers[3].attrib["id"] == "hd:031.0eaff" assert bearers[3].attrib["cost"] == "100" assert bearers[4].attrib["id"] == "http://server/stream" assert bearers[4].attrib["cost"] == "100" assert bearers[4].attrib["offset"] == "2000" assert bearers[4].attrib["mimeValue"] == "audio/mpeg" assert bearers[4].attrib["bitrate"] == "200"
def test_client_creation(stack_setup, browser_setup): """Default behavior test with no faulty input.""" db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "clients/") WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_creation_toggle_button")) driver.find_element_by_id("client_creation_toggle_button").click() # create first client WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_name_new")) driver.find_element_by_id("client_name_new").send_keys("BBC") driver.find_element_by_id("client_email_new").send_keys("*****@*****.**") driver.find_element_by_id("new_client_identifier_suggestion").click() assert len(driver.find_element_by_id("client_identifier_new").get_attribute('value')) == 128 driver.find_element_by_id("client_identifier_new").clear() driver.find_element_by_id("client_identifier_new").send_keys("TESTIDENTIFIERS1") driver.find_element_by_id("update_save_btn_new").click() WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_operation_success")) WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_row_1")) # create a second client WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_name_new")) driver.find_element_by_id("client_name_new").send_keys("CNN") driver.find_element_by_id("client_email_new").send_keys("*****@*****.**") driver.find_element_by_id("client_identifier_new").send_keys("TESTIDENTIFIERS2") driver.find_element_by_id("update_save_btn_new").click() WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_operation_success")) WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id("client_row_2")) # Check entered data clients_tr = list(map(lambda x: x.text, driver .find_element_by_id("clients_display") .find_elements_by_css_selector("tr"))) assert compare_lists(clients_tr, CLIENTS_HTML_TR) # Check DB result = db.engine.execute(text(CLIENTS_MYSQL_QUERY)) assert result.rowcount == 2 client_mysql_tr = [] for row in sql_alchemy_result_to_list(result): client_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(client_mysql_tr, CLIENTS_DB_TR, True)
def test_delete_channel(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "channels/") driver.find_element_by_css_selector("[href='/channels/delete/2']").send_keys(Keys.RETURN) accept_alert(driver) WebDriverWait(driver, 5).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "[href='/channels/delete/2']"))) channel_tr = list(map(lambda x: x.text, driver .find_element_by_id("radiodns-channel-table") .find_elements_by_css_selector("tr"))) assert compare_lists(channel_tr, CHANNELS_HTML_TR) # Check DB result = db.engine.execute(text(CHANNELS_MSQL_QUERY)) assert result.rowcount == 6 station_mysql_tr = [] for row in sql_alchemy_result_to_list(result): station_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(station_mysql_tr, CHANNELS_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 bearers = ET.fromstring(res.text).findall(".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 5 assert bearers[0].attrib["id"] == "amss:4001" assert bearers[0].attrib["cost"] == "100" assert bearers[1].attrib["id"] == "dab:fe1.43e2.4002.2" assert bearers[1].attrib["cost"] == "50" assert bearers[1].attrib["mimeValue"] == "audio/aac" assert bearers[2].attrib["id"] == "drm:4001" assert bearers[2].attrib["cost"] == "100" assert bearers[3].attrib["id"] == "hd:031.0eaff" assert bearers[3].attrib["cost"] == "100" assert bearers[4].attrib["id"] == "http://server/stream" assert bearers[4].attrib["cost"] == "100" assert bearers[4].attrib["offset"] == "2000" assert bearers[4].attrib["mimeValue"] == "audio/mpeg" assert bearers[4].attrib["bitrate"] == "200"
def test_create_service_provider(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "serviceprovider/edit/-") # Is page loaded? assert ":: PlugIt -Standalone mode" == driver.title # Fill inputs driver.find_element_by_name("short_name").send_keys("EBU") driver.find_element_by_name("medium_name").send_keys("European BU") driver.find_element_by_name("long_name").send_keys("European Broadcasting Union") driver.find_element_by_name("short_description").send_keys( "THE EUROPEAN BROADCASTING UNION IS THE WORLD’S LEADING ALLIANCE OF PUBLIC SERVICE MEDIA") driver.find_element_by_name("default_language").find_element_by_css_selector("option[value=en-GB]").click() driver.find_element_by_name("url_default").send_keys("https://github.com/ebu") driver.find_element_by_name("postal_name").send_keys("EBU") driver.find_element_by_name("street").send_keys("L'Ancienne-Route 17A") driver.find_element_by_name("zipcode").send_keys("1218") driver.find_element_by_name("city").send_keys("Le Grand-Saconnex") driver.find_element_by_name("location_country").find_element_by_css_selector("option[value=fr]").click() driver.find_element_by_name("phone_number").send_keys("022 717 21 11") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Check entered data tr_list = list(map(lambda x: x.text, driver .find_element_by_class_name("table-responsive") .find_elements_by_css_selector("tr"))) assert compare_lists(tr_list, SERVICE_PROVIDER_HTML_TR) # Check db result = db.engine.execute(text(MYSQL_SERVICE_PROVIDER_QUERY)) assert result.rowcount == 1 assert compare_lists(sql_alchemy_result_to_list(result)[0], SERVICE_PROVIDER_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 attrib_root = ET.fromstring(res.text).attrib assert "originator" in attrib_root assert attrib_root["originator"] == "EBU.io RadioDNS Services v3"
def test_list_mix_tabs_spaces_letters(self): assert not compare_lists(["foo \t", "bar"], ["\t", ""]) assert compare_lists(["foo dssdsd\t", "bar"], ["\tfoo dssdsd", "\tbar"])
def test_list_mixed_order(self): assert compare_lists(["", "\t"], ["\t", ""]) assert compare_lists(["", "foo"], ["foo", ""]) assert compare_lists(["foo", ""], ["foo", ""]) assert not compare_lists(["bar", ""], ["foo", ""]) assert not compare_lists(["", "bar"], ["foo", ""])
def test_list_tabs(self): assert compare_lists(["\t", ""], ["\t", ""])
def test_list_empty_and_other_not(self): assert not compare_lists([], ["foo"]) assert not compare_lists(["foo"], [])
def test_list_mixed_order(self): assert compare_lists(["", "\t"], ["\t", ""]) assert compare_lists(["", "foo"], ["foo", ""]) assert compare_lists(["foo", ""], ["foo", ""]) assert not compare_lists(["bar", ""], ["foo", ""]) assert not compare_lists(["", "bar"], ["foo", ""])
def test_lists_not_same_size(self): assert not compare_lists(["", ""], ["", "", ""])
def test_list_empty_and_other_not(self): assert not compare_lists([], ["foo"]) assert not compare_lists(["foo"], [])
def test_logo(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "serviceprovider/images/edit/-") # Is page loaded? assert ":: PlugIt -Standalone mode" == driver.title # Fill inputs driver.find_element_by_name("name").send_keys("Classic_main") driver.find_element_by_name("file").send_keys( os.getcwd() + "/ressources/classical_music.jpg") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() driver.get(TEST_PROXY_URL + "serviceprovider/images/edit/-") driver.find_element_by_name("name").send_keys("Classic_main_2") driver.find_element_by_name("file").send_keys( os.getcwd() + "/ressources/classical_music.png") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Check HTML images = list( map( lambda x: [ x.get_attribute("naturalWidth"), x.get_attribute("naturalHeight"), x.get_attribute("currentSrc") ], driver.find_elements_by_css_selector(".tooltipme"))) for i in range(len(images)): assert compare_lists(images[i], HTML_IMAGES[i], True) images_names = list( map(lambda x: x.text, driver.find_elements_by_css_selector(".sorting_1"))) assert compare_lists(images_names, HTML_IMAGES_NAMES, True) # Check DB result = db.engine.execute(text(MYSQL_QUERY)) assert result.rowcount == 2 parsed_result = sql_alchemy_result_to_list(result) for i in range(len(parsed_result)): assert compare_lists(parsed_result[i], MSQL_ROWS[i], True) # Select image 1 as first station logo driver.get(TEST_PROXY_URL + "radioepg/logos/") driver.find_element_by_id("logo_select").find_element_by_css_selector( "option[value='1']").click() time.sleep(0.5) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 xml_root = ET.fromstring(res.text) multimedias = list( map( lambda x: x.attrib["url"], xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}multimedia"))) assert compare_lists(multimedias, XML_URLS, True) # Check images availability for url in XML_URLS: assert requests.get(url).status_code == 200
def test_lists_not_same_size(self): assert not compare_lists(["", ""], ["", "", ""])
def test_lists_empty_string(self): assert compare_lists(["", "", ""], ["", "", ""])
def test_strict_mode(self): assert not compare_lists(["foo \t", "bar"], ["foo", "bar"], True) assert compare_lists(["foo", "bar"], ["foo", "bar"], True)
def test_list_mix_tabs_spaces_letters(self): assert not compare_lists(["foo \t", "bar"], ["\t", ""]) assert compare_lists(["foo dssdsd\t", "bar"], ["\tfoo dssdsd", "\tbar"])
def test_strict_mode(self): assert not compare_lists(["foo \t", "bar"], ["foo", "bar"], True) assert compare_lists(["foo", "bar"], ["foo", "bar"], True)
def test_lists_empty_string(self): assert compare_lists(["", "", ""], ["", "", ""])
def test_lists_empty(self): assert compare_lists([], [])
def test_create_station(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "stations/edit/-") # Is page loaded? assert ":: PlugIt -Standalone mode" == driver.title # Fill inputs create_station( driver=driver, tab_id=0, station_name="Classical Station", short_name="CS", medium_name="Classical S", long_name="The mighty Classical radio", short_description= "Radio is the technology of using radio waves to carry information", url_default= "https://github.com/ebu/PlugIt/blob/master/docs/protocol.md", phone_number="052 727 53 72", sms_number="052 727 53 72", sms_body="SMS body", sms_description="SMS description", email_address="*****@*****.**", email_description="Email description", genres=['3.6.2', '3.6.4.1'], radioepg_enabled=True, radioepg_service="standalone.ebu.io", radiospi_service="standalone.ebu.io", ) # Check entered data tables = driver.find_elements_by_class_name("table-responsive") assert len(tables) == 2 station_tr = list( map(lambda x: x.text, tables[0].find_elements_by_css_selector("tr"))) status_tr = list( map(lambda x: x.text, tables[1].find_elements_by_css_selector("tr"))) assert compare_lists(station_tr, STATION_HTML_TR) assert compare_lists(status_tr, STATION_SERVICES_HTML_TR) # Check DB result = db.engine.execute(text(MYSQL_STATION_QUERY_ONE)) assert result.rowcount == 1 assert compare_lists( sql_alchemy_result_to_list(result)[0], STATION_MYSQL_TR, True) # Check XML SPI version 3 res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 xml_root = ET.fromstring(res.text) assert len( xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}service")) == 1 assert xml_root.find( ".//{http://www.worlddab.org/schemas/spi/31}shortName").text == "CS" assert xml_root.find( ".//{http://www.worlddab.org/schemas/spi/31}mediumName" ).text == "Classical S" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}longName" ).text == "The mighty Classical radio" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}shortDescription")\ .text == "Radio is the technology of using radio waves to carry information" links = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}link") assert links[0].attrib[ "url"] == "https://github.com/ebu/PlugIt/blob/master/docs/protocol.md" assert links[0].attrib["mimeValue"] == "text/html" assert links[1].attrib[ "uri"] == "postal:EBU/L'Ancienne-Route 17A/Le Grand-Saconnex/1218/France" assert links[2].attrib["uri"] == "tel:052 727 53 72" assert links[3].attrib["description"] == "SMS description" assert links[3].attrib["uri"] == "sms:052 727 53 72?body=SMS+body" assert links[4].attrib["description"] == "Email description" assert links[4].attrib["uri"] == "mailto:[email protected]" assert xml_root.find( ".//{http://www.worlddab.org/schemas/spi/31}radiodns" ).attrib["fqdn"] == "classicalstation.standalone.radio.ebu.io" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}radiodns" ).attrib["serviceIdentifier"] == "ebu1standalone" multimedias = xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}multimedia") assert multimedias[0].attrib["height"] == "32" assert multimedias[0].attrib["width"] == "32" assert multimedias[0].attrib["type"] == "logo_colour_square" assert multimedias[0].attrib["url"] == "" assert multimedias[1].attrib["height"] == "32" assert multimedias[1].attrib["width"] == "112" assert multimedias[1].attrib["type"] == "logo_colour_rectangle" assert multimedias[1].attrib["url"] == "" assert multimedias[2].attrib["height"] == "128" assert multimedias[2].attrib["width"] == "128" assert multimedias[2].attrib["type"] == "logo_unrestricted" assert multimedias[2].attrib["url"] == "" assert multimedias[3].attrib["height"] == "240" assert multimedias[3].attrib["width"] == "320" assert multimedias[3].attrib["type"] == "logo_unrestricted" assert multimedias[3].attrib["url"] == "" assert multimedias[4].attrib["height"] == "600" assert multimedias[4].attrib["width"] == "600" assert multimedias[4].attrib["type"] == "logo_unrestricted" assert multimedias[4].attrib["url"] == "" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}genre" )[1].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.4.1" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}genre")[1].text == "Pop" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}genre" )[0].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.2" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}genre")[0].text == "Jazz" # Check XML SPI version 1 res = requests.get(TEST_RADIO_DNS_URL + "radiodns/epg/XSI.xml") assert res.status_code == 200 xml_root = ET.fromstring(res.text) assert len( xml_root.findall( ".//{http://schemas.radiodns.org/epg/11}service")) == 1 assert xml_root.find( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}shortName" ).text == "CS" assert xml_root.find( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}mediumName" ).text == "Classical S" assert xml_root.find( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}longName" ).text == "The mighty Classical radio" assert xml_root.find(".//{http://www.worlddab.org/schemas/epgDataTypes/14}shortDescription") \ .text == "Radio is the technology of using radio waves to carry information" assert xml_root.find( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}link" ).attrib[ "url"] == "https://github.com/ebu/PlugIt/blob/master/docs/protocol.md" assert xml_root.find( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}link" ).attrib["mimeValue"] == "text/html" assert xml_root.find( ".//{http://schemas.radiodns.org/epg/11}radiodns" ).attrib["fqdn"] == "classicalstation.standalone.radio.ebu.io" assert xml_root.find(".//{http://schemas.radiodns.org/epg/11}radiodns" ).attrib["serviceIdentifier"] == "ebu1standalone" multimedias = xml_root.findall( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}multimedia") assert multimedias[0].attrib["height"] == "32" assert multimedias[0].attrib["width"] == "32" assert multimedias[0].attrib["type"] == "logo_colour_square" assert multimedias[0].attrib["url"] == "" assert multimedias[1].attrib["height"] == "32" assert multimedias[1].attrib["width"] == "112" assert multimedias[1].attrib["type"] == "logo_unrestricted" assert multimedias[1].attrib["url"] == "" assert multimedias[2].attrib["height"] == "128" assert multimedias[2].attrib["width"] == "128" assert multimedias[2].attrib["type"] == "logo_unrestricted" assert multimedias[2].attrib["url"] == "" assert multimedias[3].attrib["height"] == "240" assert multimedias[3].attrib["width"] == "320" assert multimedias[3].attrib["type"] == "logo_unrestricted" assert multimedias[3].attrib["url"] == "" assert multimedias[4].attrib["height"] == "600" assert multimedias[4].attrib["width"] == "600" assert multimedias[4].attrib["type"] == "logo_unrestricted" assert multimedias[4].attrib["url"] == "" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}genre" )[1].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.4.1" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}name" )[1].text == "Pop" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}genre" )[0].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.2" assert xml_root.findall( ".//{http://www.worlddab.org/schemas/epgDataTypes/14}name" )[0].text == "Jazz"
def check_station_override_values(db, driver): """ Verifies the values for this test's suite overrides. :param db: The sqlalchemy database connection. :param driver: The Selenium WebDriver instance. :return: - """ # go to details driver.get(TEST_PROXY_URL + "stations/2") # Check html tables = driver.find_elements_by_class_name("table-responsive") assert len(tables) == 3 station_tr = list(map(lambda x: x.text, tables[0].find_elements_by_css_selector("tr"))) driver.find_element_by_id("nav_tab_2").send_keys(Keys.RETURN) overrides_tr = list(map(lambda x: x.text, tables[2].find_elements_by_css_selector("tr"))) assert compare_lists(station_tr, STATION_DETAILS_DEFAULT_TR) assert compare_lists(overrides_tr, STATION_DETAILS_OVERRIDES_TR) # Check DB result = db.engine.execute(text(MYSQL_STATION_QUERY)) assert result.rowcount == 1 assert compare_lists(sql_alchemy_result_to_list(result)[0], STATION_DATABASE_OVERRIDES_TR, True) # Check XML conn = http.client.HTTPConnection("localhost", TEST_RADIO_DNS_PORT) conn.request('GET', '/radiodns/spi/3.1/SI.xml', headers={"Authorization": "ClientIdentifier TESTIDENTIFIERS2"}) res = conn.getresponse() assert res.code == 200 xml_root = ET.fromstring(res.read().decode()) assert len(xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}service")) == 2 # Select the station that is an override xml_root = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}service")[1] assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}shortName").text == "sno" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}mediumName").text == "sno" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}longName").text == "long name override" links = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}link") assert links[0].attrib["url"] == "https://github.com/ebu" assert links[0].attrib["mimeValue"] == "text/html" assert links[1].attrib["uri"] == "postal:postal name override/street override/city override/1110/Azores [Portugal]" assert links[2].attrib["uri"] == "tel:1111111111" assert links[3].attrib["description"] == "SMS description override" assert links[3].attrib["uri"] == "sms:222222222?body=SMS+body+override" assert links[4].attrib["description"] == "Email description override" assert links[4].attrib["uri"] == "mailto:[email protected] override" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}radiodns").attrib[ "fqdn"] == "stationnameoverride.standalone.radio.ebu.io" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}radiodns").attrib[ "serviceIdentifier"] == "ebu2standalone" multimedias = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}multimedia") assert multimedias[0].attrib["height"] == "32" assert multimedias[0].attrib["width"] == "32" assert multimedias[0].attrib["type"] == "logo_colour_square" assert multimedias[0].attrib["url"] == "http://127.0.0.1:8001/uploads/32x32/classical_music.png" assert multimedias[1].attrib["height"] == "32" assert multimedias[1].attrib["width"] == "112" assert multimedias[1].attrib["type"] == "logo_colour_rectangle" assert multimedias[1].attrib["url"] == "http://127.0.0.1:8001/uploads/112x32/classical_music.png" assert multimedias[2].attrib["height"] == "128" assert multimedias[2].attrib["width"] == "128" assert multimedias[2].attrib["type"] == "logo_unrestricted" assert multimedias[2].attrib["url"] == "http://127.0.0.1:8001/uploads/128x128/classical_music.png" assert multimedias[3].attrib["height"] == "240" assert multimedias[3].attrib["width"] == "320" assert multimedias[3].attrib["type"] == "logo_unrestricted" assert multimedias[3].attrib["url"] == "http://127.0.0.1:8001/uploads/320x240/classical_music.png" assert multimedias[4].attrib["height"] == "600" assert multimedias[4].attrib["width"] == "600" assert multimedias[4].attrib["type"] == "logo_unrestricted" assert multimedias[4].attrib["url"] == "http://127.0.0.1:8001/uploads/600x600/classical_music.png" genres = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}genre") assert len(genres) == 3 assert genres[0].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.1.1.12" assert genres[0].text == "Traffic" assert genres[1].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.3.5" assert genres[1].text == "Travel" assert genres[2].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.4.14.2" assert genres[2].text == "Metal"
def test_lists_empty(self): assert compare_lists([], [])
def test_list_tabs(self): assert compare_lists(["\t", ""], ["\t", ""])
def test_station_edition_with_overrides(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "stations/edit/2") # Modify inputs, remove the last genre. driver.find_element_by_id("station-name_0").send_keys("Modified") driver.find_element_by_id("short_name_0").clear() driver.find_element_by_id("short_name_0").send_keys("snom") driver.find_element_by_id("medium_name_0").clear() driver.find_element_by_id("medium_name_0").send_keys("snom") driver.find_element_by_id("long_name_0").clear() driver.find_element_by_id("long_name_0").send_keys("Modified") driver.find_element_by_id("short_description_0").clear() driver.find_element_by_id("short_description_0").send_keys("Modified") driver.find_element_by_id("default_language_0").find_element_by_css_selector("option[value='it']").click() driver.find_element_by_name("url_default_0").send_keys("Modified url") driver.find_element_by_id("postal_name_0").send_keys("Modified postal name") driver.find_element_by_id("street_0").send_keys("Modified street") driver.find_element_by_id("zipcode_0").send_keys("Modified zipcode") driver.find_element_by_id("city_0").send_keys("Modified city") driver.find_element_by_id("location_country_0").find_element_by_css_selector("option[value='li']").click() driver.find_element_by_id("phone_number_0").send_keys("Modified phone number") driver.find_element_by_id("sms_number_0").send_keys("Modified sms number") driver.find_element_by_id("sms_body_0").send_keys("Modified sms body") driver.find_element_by_id("sms_description_0").send_keys("Modified description") driver.find_element_by_id("email_address_0").send_keys("Modified email") driver.find_element_by_id("email_description_0").send_keys("Modified description") driver.find_element_by_id("genre_row_template_0-0").find_element_by_css_selector( "option[value='3.1.1']").click() # News driver.find_element_by_id("add_gender_button_0").click() driver.find_element_by_id("genre_row_template_0-1").find_element_by_css_selector( "option[value='3.1.1.11']").click() # Local/Regional driver.find_element_by_id("genre_row_template_0-2").find_element_by_css_selector( ".btn.btn-xs.btn-danger").click() driver.find_element_by_id("nav_tab_1").send_keys(Keys.RETURN) # Check overrides indicator visibility assert driver.find_element_by_id("dot_grp_1_name").get_attribute("style") == "" assert driver.find_element_by_id("dot_grp_1_language").get_attribute("style") == "" assert driver.find_element_by_id("dot_grp_1_links").get_attribute("style") == "" assert driver.find_element_by_id("dot_grp_1_address").get_attribute("style") == "" assert driver.find_element_by_id("dot_grp_1_contact").get_attribute("style") == "" assert driver.find_element_by_id("dot_grp_1_genres").get_attribute("style") == "" driver.find_element_by_id("nav_tab_2").send_keys(Keys.RETURN) # Check overrides indicator visibility assert driver.find_element_by_id("dot_grp_2_name").get_attribute("style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_language").get_attribute("style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_links").get_attribute("style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_address").get_attribute("style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_contact").get_attribute("style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_genres").get_attribute("style") == "opacity: 1;" # Assert that overridden inputs are not changed even if the defaults one have. assert driver.find_element_by_id("station-name_2").get_attribute("value") == "station name override" assert driver.find_element_by_id("short_name_2").get_attribute("value") == "sno" assert driver.find_element_by_id("medium_name_2").get_attribute("value") == "sno" assert driver.find_element_by_id("long_name_2").get_attribute("value") == "long name override" assert driver.find_element_by_id("short_description_2").get_attribute("value") == "short description override" assert Select(driver.find_element_by_id("default_language_2"))\ .first_selected_option.get_attribute("value") == "fr" assert driver.find_element_by_name("url_default_2").get_attribute("value") == "https://github.com/ebu" assert driver.find_element_by_id("postal_name_2").get_attribute("value") == "postal name override" assert driver.find_element_by_id("street_2").get_attribute("value") == "street override" assert driver.find_element_by_id("zipcode_2").get_attribute("value") == "1110" assert driver.find_element_by_id("city_2").get_attribute("value") == "city override" assert Select(driver.find_element_by_id("location_country_2"))\ .first_selected_option.get_attribute("value") == "pt" assert driver.find_element_by_id("phone_number_2").get_attribute("value") == "1111111111" assert driver.find_element_by_id("sms_number_2").get_attribute("value") == "222222222" assert driver.find_element_by_id("sms_body_2").get_attribute("value") == "SMS body override" assert driver.find_element_by_id("sms_description_2").get_attribute("value") == "SMS description override" assert driver.find_element_by_id("email_address_2").get_attribute("value") == "[email protected] override" assert driver.find_element_by_id("email_description_2").get_attribute("value") == "Email description override" assert Select(driver.find_element_by_id("genre_row_template_2-0").find_element_by_tag_name("select"))\ .first_selected_option.get_attribute("value") == "3.1.1.12" assert Select(driver.find_element_by_id("genre_row_template_2-1").find_element_by_tag_name("select")) \ .first_selected_option.get_attribute("value") == "3.3.5" assert Select(driver.find_element_by_id("genre_row_template_2-2").find_element_by_tag_name("select")) \ .first_selected_option.get_attribute("value") == "3.6.4.14.2" # Change override's values driver.find_element_by_id("station-name_2").send_keys("Modified Override") driver.find_element_by_id("short_name_2").send_keys("mo") driver.find_element_by_id("medium_name_2").send_keys("mo") driver.find_element_by_id("long_name_2").send_keys("Modified Override") driver.find_element_by_id("short_description_2").send_keys("Modified Override") driver.find_element_by_id("default_language_2").find_element_by_css_selector("option[value='fr']").click() driver.find_element_by_name("url_default_2").send_keys("Modified Override") driver.find_element_by_id("postal_name_2").send_keys("Modified Override") driver.find_element_by_id("street_2").send_keys("Modified Override") driver.find_element_by_id("zipcode_2").send_keys("Modified Override") driver.find_element_by_id("city_2").send_keys("Modified Override") driver.find_element_by_id("location_country_2").find_element_by_css_selector("option[value='pt']").click() driver.find_element_by_id("phone_number_2").send_keys("Modified Override") driver.find_element_by_id("sms_number_2").send_keys("Modified Override") driver.find_element_by_id("sms_body_2").send_keys("Modified Override") driver.find_element_by_id("sms_description_2").send_keys("Modified Override") driver.find_element_by_id("email_address_2").send_keys("Modified Override") driver.find_element_by_id("email_description_2").send_keys("Modified Override") driver.find_element_by_id("genre_row_template_2-0").find_element_by_css_selector( "option[value='3.1.1.13']").click() # Weather forecasts driver.find_element_by_id("genre_row_template_2-1").find_element_by_css_selector( "option[value='3.1.1.16']").click() # Current Affairs driver.find_element_by_id("genre_row_template_2-2").find_element_by_css_selector( "option[value='3.6.4']").click() # Pop-rock driver.find_element_by_css_selector("button[type=submit][value=Save]").click() # go to details driver.get(TEST_PROXY_URL + "stations/2") # Check html tables = driver.find_elements_by_class_name("table-responsive") assert len(tables) == 3 station_tr = list(map(lambda x: x.text, tables[0].find_elements_by_css_selector("tr"))) driver.find_element_by_id("nav_tab_2").send_keys(Keys.RETURN) overrides_tr = list(map(lambda x: x.text, tables[2].find_elements_by_css_selector("tr"))) assert compare_lists(station_tr, STATION_DETAILS_DEFAULT_TR) assert compare_lists(overrides_tr, STATION_DETAILS_OVERRIDES_TR) # Check DB result = db.engine.execute(text(MYSQL_STATION_QUERY)) assert result.rowcount == 1 assert compare_lists(sql_alchemy_result_to_list(result)[0], STATION_DATABASE_OVERRIDES_TR, True) # Check XML conn = http.client.HTTPConnection("localhost", TEST_RADIO_DNS_PORT) conn.request('GET', '/radiodns/spi/3.1/SI.xml', headers={"Authorization": "ClientIdentifier TESTIDENTIFIERS2"}) res = conn.getresponse() assert res.code == 200 xml_root = ET.fromstring(res.read().decode()) assert len(xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}service")) == 2 # Select the station that is an override xml_root = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}service")[1] assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}shortName").text == "snomo" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}mediumName").text == "snomo" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}longName").text == "long name overrideModified Override" links = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}link") assert links[0].attrib["url"] == "https://github.com/ebuModified Override" assert links[0].attrib["mimeValue"] == "text/html" assert links[1].attrib["uri"] == "postal:postal name overrideModified Override/street overrideModified Override/city overrideModified Override/1110Modified Override/Azores [Portugal]" assert links[2].attrib["uri"] == "tel:1111111111Modified Override" assert links[3].attrib["description"] == "SMS description overrideModified Override" assert links[3].attrib["uri"] == "sms:222222222Modified Override?body=SMS+body+overrideModified+Override" assert links[4].attrib["description"] == "Email description overrideModified Override" assert links[4].attrib["uri"] == "mailto:[email protected] overrideModified Override" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}radiodns").attrib[ "fqdn"] == "stationnameoverridemodifiedoverride.standalone.radio.ebu.io" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}radiodns").attrib[ "serviceIdentifier"] == "ebu2standalone" genres = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}genre") assert len(genres) == 3 assert genres[0].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.1.1.13" assert genres[0].text == "Weather forecasts" assert genres[1].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.1.1.16" assert genres[1].text == "Current Affairs" assert genres[2].attrib["href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.4" assert genres[2].text == "Pop-rock"
def test_create_channel(stack_setup, browser_setup): db = stack_setup driver = browser_setup # Fill inputs for VHF/FM driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_VHF_FM") driver.find_element_by_id("type").find_element_by_css_selector( "option[value=fm]").click() driver.find_element_by_id("ecc").find_element_by_css_selector( "option[value='81']").click() driver.find_element_by_name("pi").send_keys("C00F") driver.find_element_by_name("frequency").send_keys("00917") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Fill inputs for DAB driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_DAB") driver.find_element_by_id("type").find_element_by_css_selector( "option[value=dab]").click() driver.find_element_by_id("ecc").find_element_by_css_selector( "option[value='81']").click() driver.find_element_by_name("eid").send_keys("43e1") driver.find_element_by_name("sid").send_keys("4001") driver.find_element_by_name("scids").send_keys("0") driver.find_element_by_name("mime_type").send_keys("audio/mpeg") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Fill inputs for DRM driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_DRM") driver.find_element_by_id("type").find_element_by_css_selector( "option[value=drm]").click() driver.find_element_by_name("sid").send_keys("4001") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Fill inputs for AMSS driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_AMSS") driver.find_element_by_id("type").find_element_by_css_selector( "option[value=amss]").click() driver.find_element_by_name("sid").send_keys("4001") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Fill inputs for HD Radio driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_HD_RADIO") driver.find_element_by_id("type").find_element_by_css_selector( "option[value=hd]").click() driver.find_element_by_name("tx").send_keys("0EAFF") driver.find_element_by_id("cc").find_element_by_css_selector( "option[value='031']").click() driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Fill inputs for IP Radio driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_IP") driver.find_element_by_id("type").find_element_by_css_selector( "option[value=id]").click() driver.find_element_by_id("stream_url").send_keys("http://server/stream") driver.find_element_by_name("mime_type").send_keys("audio/mpeg") driver.find_element_by_name("bitrate").send_keys("200") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Fill inputs for IP Radio with override driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_IP_2") driver.find_element_by_id("clients_select").find_element_by_css_selector( "option[value='2']").click() driver.find_element_by_id("type").find_element_by_css_selector( "option[value=id]").click() driver.find_element_by_id("stream_url").send_keys( "http://server/stream/ouiiiiii") driver.find_element_by_name("mime_type").send_keys("audio/mpeg") driver.find_element_by_name("bitrate").send_keys("200") driver.find_element_by_css_selector( "input[type=submit][value=Save]").click() # Check entered data channel_tr = list( map( lambda x: x.text, driver.find_element_by_id( "radiodns-channel-table").find_elements_by_css_selector("tr"))) assert compare_lists(channel_tr, CHANNELS_HTML_TR) # Check DB result = db.engine.execute(text(CHANNELS_MSQL_QUERY)) assert result.rowcount == 7 station_mysql_tr = [] for row in sql_alchemy_result_to_list(result): station_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(station_mysql_tr, CHANNELS_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 bearers = ET.fromstring( res.text).findall(".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 7 assert bearers[0].attrib["id"] == "amss:4001" assert bearers[0].attrib["cost"] == "100" assert bearers[1].attrib["id"] == "dab:fe1.43e1.4001.0" assert bearers[1].attrib["cost"] == "20" assert bearers[1].attrib["mimeValue"] == "audio/mpeg" assert bearers[2].attrib["id"] == "drm:4001" assert bearers[2].attrib["cost"] == "100" assert bearers[3].attrib["id"] == "hd:031.0eaff" assert bearers[3].attrib["cost"] == "100" assert bearers[4].attrib["id"] == "http://server/stream" assert bearers[4].attrib["cost"] == "100" assert bearers[4].attrib["offset"] == "2000" assert bearers[4].attrib["mimeValue"] == "audio/mpeg" assert bearers[4].attrib["bitrate"] == "200" assert bearers[5].attrib["id"] == "fm:fe1.c00f.00917" assert bearers[5].attrib["cost"] == "50" assert bearers[6].attrib["id"] == "fm:fr.c00f.00917" assert bearers[6].attrib["cost"] == "50" # Check XML overrides conn = http.client.HTTPConnection("localhost", TEST_RADIO_DNS_PORT) conn.request( 'GET', '/radiodns/spi/3.1/SI.xml', headers={"Authorization": "ClientIdentifier TESTIDENTIFIERS2"}) res = conn.getresponse() assert res.code == 200 bearers = ET.fromstring(res.read().decode()).findall( ".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 8 assert bearers[5].attrib["id"] == "http://server/stream/ouiiiiii" assert bearers[5].attrib["cost"] == "100" assert bearers[5].attrib["offset"] == "2000" assert bearers[5].attrib["mimeValue"] == "audio/mpeg" assert bearers[5].attrib["bitrate"] == "200"
def test_station_edition_with_overrides(stack_setup, browser_setup): db = stack_setup driver = browser_setup driver.get(TEST_PROXY_URL + "stations/edit/2") # Modify inputs, remove the last genre. driver.find_element_by_id("station-name_0").send_keys("Modified") driver.find_element_by_id("short_name_0").clear() driver.find_element_by_id("short_name_0").send_keys("snom") driver.find_element_by_id("medium_name_0").clear() driver.find_element_by_id("medium_name_0").send_keys("snom") driver.find_element_by_id("long_name_0").clear() driver.find_element_by_id("long_name_0").send_keys("Modified") driver.find_element_by_id("short_description_0").clear() driver.find_element_by_id("short_description_0").send_keys("Modified") driver.find_element_by_id( "default_language_0").find_element_by_css_selector( "option[value='it']").click() driver.find_element_by_name("url_default_0").send_keys("Modified url") driver.find_element_by_id("postal_name_0").send_keys( "Modified postal name") driver.find_element_by_id("street_0").send_keys("Modified street") driver.find_element_by_id("zipcode_0").send_keys("Modified zipcode") driver.find_element_by_id("city_0").send_keys("Modified city") driver.find_element_by_id( "location_country_0").find_element_by_css_selector( "option[value='li']").click() driver.find_element_by_id("phone_number_0").send_keys( "Modified phone number") driver.find_element_by_id("sms_number_0").send_keys("Modified sms number") driver.find_element_by_id("sms_body_0").send_keys("Modified sms body") driver.find_element_by_id("sms_description_0").send_keys( "Modified description") driver.find_element_by_id("email_address_0").send_keys("Modified email") driver.find_element_by_id("email_description_0").send_keys( "Modified description") driver.find_element_by_id( "genre_row_template_0-0").find_element_by_css_selector( "option[value='3.1.1']").click() # News driver.find_element_by_id("add_gender_button_0").click() driver.find_element_by_id( "genre_row_template_0-1").find_element_by_css_selector( "option[value='3.1.1.11']").click() # Local/Regional driver.find_element_by_id( "genre_row_template_0-2").find_element_by_css_selector( ".btn.btn-xs.btn-danger").click() driver.find_element_by_id("nav_tab_1").send_keys(Keys.RETURN) # Check overrides indicator visibility assert driver.find_element_by_id("dot_grp_1_name").get_attribute( "style") == "" assert driver.find_element_by_id("dot_grp_1_language").get_attribute( "style") == "" assert driver.find_element_by_id("dot_grp_1_links").get_attribute( "style") == "" assert driver.find_element_by_id("dot_grp_1_address").get_attribute( "style") == "" assert driver.find_element_by_id("dot_grp_1_contact").get_attribute( "style") == "" assert driver.find_element_by_id("dot_grp_1_genres").get_attribute( "style") == "" driver.find_element_by_id("nav_tab_2").send_keys(Keys.RETURN) # Check overrides indicator visibility assert driver.find_element_by_id("dot_grp_2_name").get_attribute( "style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_language").get_attribute( "style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_links").get_attribute( "style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_address").get_attribute( "style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_contact").get_attribute( "style") == "opacity: 1;" assert driver.find_element_by_id("dot_grp_2_genres").get_attribute( "style") == "opacity: 1;" # Assert that overridden inputs are not changed even if the defaults one have. assert driver.find_element_by_id("station-name_2").get_attribute( "value") == "station name override" assert driver.find_element_by_id("short_name_2").get_attribute( "value") == "sno" assert driver.find_element_by_id("medium_name_2").get_attribute( "value") == "sno" assert driver.find_element_by_id("long_name_2").get_attribute( "value") == "long name override" assert driver.find_element_by_id("short_description_2").get_attribute( "value") == "short description override" assert Select(driver.find_element_by_id("default_language_2"))\ .first_selected_option.get_attribute("value") == "fr" assert driver.find_element_by_name("url_default_2").get_attribute( "value") == "https://github.com/ebu" assert driver.find_element_by_id("postal_name_2").get_attribute( "value") == "postal name override" assert driver.find_element_by_id("street_2").get_attribute( "value") == "street override" assert driver.find_element_by_id("zipcode_2").get_attribute( "value") == "1110" assert driver.find_element_by_id("city_2").get_attribute( "value") == "city override" assert Select(driver.find_element_by_id("location_country_2"))\ .first_selected_option.get_attribute("value") == "pt" assert driver.find_element_by_id("phone_number_2").get_attribute( "value") == "1111111111" assert driver.find_element_by_id("sms_number_2").get_attribute( "value") == "222222222" assert driver.find_element_by_id("sms_body_2").get_attribute( "value") == "SMS body override" assert driver.find_element_by_id("sms_description_2").get_attribute( "value") == "SMS description override" assert driver.find_element_by_id("email_address_2").get_attribute( "value") == "[email protected] override" assert driver.find_element_by_id("email_description_2").get_attribute( "value") == "Email description override" assert Select(driver.find_element_by_id("genre_row_template_2-0").find_element_by_tag_name("select"))\ .first_selected_option.get_attribute("value") == "3.1.1.12" assert Select(driver.find_element_by_id("genre_row_template_2-1").find_element_by_tag_name("select")) \ .first_selected_option.get_attribute("value") == "3.3.5" assert Select(driver.find_element_by_id("genre_row_template_2-2").find_element_by_tag_name("select")) \ .first_selected_option.get_attribute("value") == "3.6.4.14.2" # Change override's values driver.find_element_by_id("station-name_2").send_keys("Modified Override") driver.find_element_by_id("short_name_2").send_keys("mo") driver.find_element_by_id("medium_name_2").send_keys("mo") driver.find_element_by_id("long_name_2").send_keys("Modified Override") driver.find_element_by_id("short_description_2").send_keys( "Modified Override") driver.find_element_by_id( "default_language_2").find_element_by_css_selector( "option[value='fr']").click() driver.find_element_by_name("url_default_2").send_keys("Modified Override") driver.find_element_by_id("postal_name_2").send_keys("Modified Override") driver.find_element_by_id("street_2").send_keys("Modified Override") driver.find_element_by_id("zipcode_2").send_keys("Modified Override") driver.find_element_by_id("city_2").send_keys("Modified Override") driver.find_element_by_id( "location_country_2").find_element_by_css_selector( "option[value='pt']").click() driver.find_element_by_id("phone_number_2").send_keys("Modified Override") driver.find_element_by_id("sms_number_2").send_keys("Modified Override") driver.find_element_by_id("sms_body_2").send_keys("Modified Override") driver.find_element_by_id("sms_description_2").send_keys( "Modified Override") driver.find_element_by_id("email_address_2").send_keys("Modified Override") driver.find_element_by_id("email_description_2").send_keys( "Modified Override") driver.find_element_by_id( "genre_row_template_2-0").find_element_by_css_selector( "option[value='3.1.1.13']").click() # Weather forecasts driver.find_element_by_id( "genre_row_template_2-1").find_element_by_css_selector( "option[value='3.1.1.16']").click() # Current Affairs driver.find_element_by_id( "genre_row_template_2-2").find_element_by_css_selector( "option[value='3.6.4']").click() # Pop-rock driver.find_element_by_css_selector( "button[type=submit][value=Save]").click() # go to details driver.get(TEST_PROXY_URL + "stations/2") # Check html tables = driver.find_elements_by_class_name("table-responsive") assert len(tables) == 3 station_tr = list( map(lambda x: x.text, tables[0].find_elements_by_css_selector("tr"))) driver.find_element_by_id("nav_tab_2").send_keys(Keys.RETURN) overrides_tr = list( map(lambda x: x.text, tables[2].find_elements_by_css_selector("tr"))) assert compare_lists(station_tr, STATION_DETAILS_DEFAULT_TR) assert compare_lists(overrides_tr, STATION_DETAILS_OVERRIDES_TR) # Check DB result = db.engine.execute(text(MYSQL_STATION_QUERY)) assert result.rowcount == 1 assert compare_lists( sql_alchemy_result_to_list(result)[0], STATION_DATABASE_OVERRIDES_TR, True) # Check XML conn = http.client.HTTPConnection("localhost", TEST_RADIO_DNS_PORT) conn.request( 'GET', '/radiodns/spi/3.1/SI.xml', headers={"Authorization": "ClientIdentifier TESTIDENTIFIERS2"}) res = conn.getresponse() assert res.code == 200 xml_root = ET.fromstring(res.read().decode()) assert len( xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}service")) == 2 # Select the station that is an override xml_root = xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}service")[1] assert xml_root.find( ".//{http://www.worlddab.org/schemas/spi/31}shortName").text == "snomo" assert xml_root.find( ".//{http://www.worlddab.org/schemas/spi/31}mediumName" ).text == "snomo" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}longName" ).text == "long name overrideModified Override" links = xml_root.findall(".//{http://www.worlddab.org/schemas/spi/31}link") assert links[0].attrib["url"] == "https://github.com/ebuModified Override" assert links[0].attrib["mimeValue"] == "text/html" assert links[1].attrib[ "uri"] == "postal:postal name overrideModified Override/street overrideModified Override/city overrideModified Override/1110Modified Override/Azores [Portugal]" assert links[2].attrib["uri"] == "tel:1111111111Modified Override" assert links[3].attrib[ "description"] == "SMS description overrideModified Override" assert links[3].attrib[ "uri"] == "sms:222222222Modified Override?body=SMS+body+overrideModified+Override" assert links[4].attrib[ "description"] == "Email description overrideModified Override" assert links[4].attrib[ "uri"] == "mailto:[email protected] overrideModified Override" assert xml_root.find( ".//{http://www.worlddab.org/schemas/spi/31}radiodns" ).attrib[ "fqdn"] == "stationnameoverridemodifiedoverride.standalone.radio.ebu.io" assert xml_root.find(".//{http://www.worlddab.org/schemas/spi/31}radiodns" ).attrib["serviceIdentifier"] == "ebu2standalone" genres = xml_root.findall( ".//{http://www.worlddab.org/schemas/spi/31}genre") assert len(genres) == 3 assert genres[0].attrib[ "href"] == "urn:tva:metadata:cs:ContentCS:2011:3.1.1.13" assert genres[0].text == "Weather forecasts" assert genres[1].attrib[ "href"] == "urn:tva:metadata:cs:ContentCS:2011:3.1.1.16" assert genres[1].text == "Current Affairs" assert genres[2].attrib[ "href"] == "urn:tva:metadata:cs:ContentCS:2011:3.6.4" assert genres[2].text == "Pop-rock"
def test_create_channel(stack_setup, browser_setup): db = stack_setup driver = browser_setup # Fill inputs for VHF/FM driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_VHF_FM") driver.find_element_by_id("type").find_element_by_css_selector("option[value=fm]").click() driver.find_element_by_id("ecc").find_element_by_css_selector("option[value='81']").click() driver.find_element_by_name("pi").send_keys("C00F") driver.find_element_by_name("frequency").send_keys("00917") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Fill inputs for DAB driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_DAB") driver.find_element_by_id("type").find_element_by_css_selector("option[value=dab]").click() driver.find_element_by_id("ecc").find_element_by_css_selector("option[value='81']").click() driver.find_element_by_name("eid").send_keys("43e1") driver.find_element_by_name("sid").send_keys("4001") driver.find_element_by_name("scids").send_keys("0") driver.find_element_by_name("mime_type").send_keys("audio/mpeg") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Fill inputs for DRM driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_DRM") driver.find_element_by_id("type").find_element_by_css_selector("option[value=drm]").click() driver.find_element_by_name("sid").send_keys("4001") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Fill inputs for AMSS driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_AMSS") driver.find_element_by_id("type").find_element_by_css_selector("option[value=amss]").click() driver.find_element_by_name("sid").send_keys("4001") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Fill inputs for HD Radio driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_HD_RADIO") driver.find_element_by_id("type").find_element_by_css_selector("option[value=hd]").click() driver.find_element_by_name("tx").send_keys("0EAFF") driver.find_element_by_id("cc").find_element_by_css_selector("option[value='031']").click() driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Fill inputs for IP Radio driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_IP") driver.find_element_by_id("type").find_element_by_css_selector("option[value=id]").click() driver.find_element_by_id("stream_url").send_keys("http://server/stream") driver.find_element_by_name("mime_type").send_keys("audio/mpeg") driver.find_element_by_name("bitrate").send_keys("200") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Fill inputs for IP Radio with override driver.get(TEST_PROXY_URL + "channels/edit/-") driver.find_element_by_name("name").send_keys("CS_IP_2") driver.find_element_by_id("clients_select").find_element_by_css_selector("option[value='2']").click() driver.find_element_by_id("type").find_element_by_css_selector("option[value=id]").click() driver.find_element_by_id("stream_url").send_keys("http://server/stream/ouiiiiii") driver.find_element_by_name("mime_type").send_keys("audio/mpeg") driver.find_element_by_name("bitrate").send_keys("200") driver.find_element_by_css_selector("input[type=submit][value=Save]").click() # Check entered data channel_tr = list(map(lambda x: x.text, driver .find_element_by_id("radiodns-channel-table") .find_elements_by_css_selector("tr"))) assert compare_lists(channel_tr, CHANNELS_HTML_TR) # Check DB result = db.engine.execute(text(CHANNELS_MSQL_QUERY)) assert result.rowcount == 7 station_mysql_tr = [] for row in sql_alchemy_result_to_list(result): station_mysql_tr.append(reduce(lambda x, y: str(x) + " " + str(y), row)) assert compare_lists(station_mysql_tr, CHANNELS_MYSQL_TR, True) # Check XML res = requests.get(TEST_RADIO_DNS_URL + "radiodns/spi/3.1/SI.xml") assert res.status_code == 200 bearers = ET.fromstring(res.text).findall(".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 7 assert bearers[0].attrib["id"] == "amss:4001" assert bearers[0].attrib["cost"] == "100" assert bearers[1].attrib["id"] == "dab:fe1.43e1.4001.0" assert bearers[1].attrib["cost"] == "20" assert bearers[1].attrib["mimeValue"] == "audio/mpeg" assert bearers[2].attrib["id"] == "drm:4001" assert bearers[2].attrib["cost"] == "100" assert bearers[3].attrib["id"] == "hd:031.0eaff" assert bearers[3].attrib["cost"] == "100" assert bearers[4].attrib["id"] == "http://server/stream" assert bearers[4].attrib["cost"] == "100" assert bearers[4].attrib["offset"] == "2000" assert bearers[4].attrib["mimeValue"] == "audio/mpeg" assert bearers[4].attrib["bitrate"] == "200" assert bearers[5].attrib["id"] == "fm:fe1.c00f.00917" assert bearers[5].attrib["cost"] == "50" assert bearers[6].attrib["id"] == "fm:fr.c00f.00917" assert bearers[6].attrib["cost"] == "50" # Check XML overrides conn = http.client.HTTPConnection("localhost", TEST_RADIO_DNS_PORT) conn.request('GET', '/radiodns/spi/3.1/SI.xml', headers={"Authorization": "ClientIdentifier TESTIDENTIFIERS2"}) res = conn.getresponse() assert res.code == 200 bearers = ET.fromstring(res.read().decode()).findall(".//{http://www.worlddab.org/schemas/spi/31}bearer") assert len(bearers) == 8 assert bearers[5].attrib["id"] == "http://server/stream/ouiiiiii" assert bearers[5].attrib["cost"] == "100" assert bearers[5].attrib["offset"] == "2000" assert bearers[5].attrib["mimeValue"] == "audio/mpeg" assert bearers[5].attrib["bitrate"] == "200"