Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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"
Exemplo n.º 3
0
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"
Exemplo n.º 5
0
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"
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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"
Exemplo n.º 8
0
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"
Exemplo n.º 9
0
 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"])
Exemplo n.º 10
0
 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", ""])
Exemplo n.º 11
0
 def test_list_tabs(self):
     assert compare_lists(["\t", ""], ["\t", ""])
Exemplo n.º 12
0
 def test_list_empty_and_other_not(self):
     assert not compare_lists([], ["foo"])
     assert not compare_lists(["foo"], [])
Exemplo n.º 13
0
 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", ""])
Exemplo n.º 14
0
 def test_lists_not_same_size(self):
     assert not compare_lists(["", ""], ["", "", ""])
Exemplo n.º 15
0
 def test_list_empty_and_other_not(self):
     assert not compare_lists([], ["foo"])
     assert not compare_lists(["foo"], [])
Exemplo n.º 16
0
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
Exemplo n.º 17
0
 def test_lists_not_same_size(self):
     assert not compare_lists(["", ""], ["", "", ""])
Exemplo n.º 18
0
 def test_lists_empty_string(self):
     assert compare_lists(["", "", ""], ["", "", ""])
Exemplo n.º 19
0
 def test_strict_mode(self):
     assert not compare_lists(["foo \t", "bar"], ["foo", "bar"], True)
     assert compare_lists(["foo", "bar"], ["foo", "bar"], True)
Exemplo n.º 20
0
 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"])
Exemplo n.º 21
0
 def test_strict_mode(self):
     assert not compare_lists(["foo \t", "bar"], ["foo", "bar"], True)
     assert compare_lists(["foo", "bar"], ["foo", "bar"], True)
Exemplo n.º 22
0
 def test_lists_empty_string(self):
     assert compare_lists(["", "", ""], ["", "", ""])
Exemplo n.º 23
0
 def test_lists_empty(self):
     assert compare_lists([], [])
Exemplo n.º 24
0
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"
Exemplo n.º 26
0
 def test_lists_empty(self):
     assert compare_lists([], [])
Exemplo n.º 27
0
 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"
Exemplo n.º 30
0
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"
Exemplo n.º 31
0
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"