def test_addon_record():
    xml_node = _to_ElementTree(ADDON_DATA)
    expected = get_record_from_xml(main.ADDONS_ITEMS_FIELDS, xml_node)
    assert expected == {
        'blockID': 'i15',
        'os': 'Linux',
        'id': 'e7e359be-51be-096b-c4c2-07727469a754',
        'guid': '*****@*****.**',
        'prefs': ['browser.startup.homepage',
                  'browser.search.defaultenginename'],
        'versionRange': [
            {'minVersion': '1.6',
             'maxVersion': '1.6',
             'targetApplication': [
                 {'guid': '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}',
                  'minVersion': '3.6',
                  'maxVersion': '3.6.*'},
                 {'guid': '{some-other-application}',
                  'minVersion': '1.2',
                  'maxVersion': '1.4'}
                 ]},
            {'minVersion': '1.5',
             'maxVersion': '2.5',
             'targetApplication': [],
             'severity': '1'}]}
def test_certificate_record():
    xml_node = _to_ElementTree(CERTIFICATE_DATA)
    expected = get_record_from_xml(main.CERT_ITEMS_FIELDS, xml_node)
    assert expected == {
        'id': '7c8a594f-2d88-4175-75f3-5b7b2d569036',
        'issuerName': 'MIGQMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE2MDQGA1UEAxMtQ09NT0RPIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB',  # noqa
        'serialNumber': 'D9UltDPl4XVfSSqQOvdiwQ=='}
def test_if_match_name_cannot_be_found():
    plugin_data = """
        <pluginItem os="Linux" blockID="p328">
            <match name="description" exp="some description"/>
            <infoURL>https://get.adobe.com/flashplayer/</infoURL>
            <versionRange minVersion="5.1" maxVersion="5.2"
                          severity="0" vulnerabilitystatus="1">
            </versionRange>
        </pluginItem>
    """

    xml_node = _to_ElementTree(plugin_data)
    expected = get_record_from_xml(main.PLUGINS_ITEMS_FIELDS, xml_node)
    assert expected == {
        'blockID': 'p328',
        'id': '772b9bb5-8eb4-edc1-359e-43d1932c0b47',
        'matchDescription': 'some description',
        'os': 'Linux',
        'infoURL': 'https://get.adobe.com/flashplayer/',
        'versionRange': [
            {'minVersion': '5.1',
             'maxVersion': '5.2',
             'severity': '0',
             'vulnerabilityStatus': '1',
             'targetApplication': []}]}
def test_gfx_record():
    xml_node = _to_ElementTree(GFX_DATA)
    expected = get_record_from_xml(main.GFX_ITEMS_FIELDS, xml_node)
    assert expected == {
        'blockID': 'g35',
        'id': 'cd673bf9-e7d4-a490-40bf-f86e1b99fd2c',
        'os': 'WINNT 6.1',
        'vendor': '0x10de',
        'feature': 'DIRECT2D',
        'featureStatus': 'BLOCKED_DRIVER_VERSION',
        'driverVersion': '8.17.12.5896',
        'driverVersionMax': '8.18',
        'driverVersionComparator': 'BETWEEN_INCLUSIVE',
        'devices': ['0x0a6c', '0x0a6d']}
def test_plugin_record():
    xml_node = _to_ElementTree(PLUGIN_DATA)
    expected = get_record_from_xml(main.PLUGINS_ITEMS_FIELDS, xml_node)
    assert expected == {
        'blockID': 'p328',
        'id': 'af9baa03-da4e-5a03-9a2c-9e20ec2d7994',
        'infoURL': 'https://get.adobe.com/flashplayer/',
        'os': 'Linux',
        'matchName': 'some name',
        'matchFilename': 'Silverlight\.plugin',
        'matchDescription': 'some description',
        'versionRange': [
            {'minVersion': '5.1',
             'maxVersion': '5.2',
             'severity': '0',
             'vulnerabilityStatus': '1',
             'targetApplication': [
                 {'guid': '{ec8030f7-c20a-464f-9b0e-13a3a9e97384}',
                  'minVersion': '19.0a1',
                  'maxVersion': '*'}]}]}