tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_addonid.py (5101B)


      1 #!/usr/bin/env python
      2 
      3 import os
      4 
      5 import mozunit
      6 import pytest
      7 from mozprofile import addons
      8 
      9 here = os.path.dirname(os.path.abspath(__file__))
     10 
     11 
     12 """Test finding the addon id in a variety of install.rdf styles"""
     13 
     14 
     15 ADDON_ID_TESTS = [
     16    """
     17 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     18     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
     19   <Description about="urn:mozilla:install-manifest">
     20     <em:id>winning</em:id>
     21     <em:name>MozMill</em:name>
     22     <em:version>2.0a</em:version>
     23     <em:creator>Adam Christian</em:creator>
     24     <em:description>A testing extension based on the
     25            Windmill Testing Framework client source</em:description>
     26     <em:unpack>true</em:unpack>
     27     <em:targetApplication>
     28       <!-- Firefox -->
     29       <Description>
     30         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
     31         <em:minVersion>3.5</em:minVersion>
     32         <em:maxVersion>8.*</em:maxVersion>
     33       </Description>
     34     </em:targetApplication>
     35     <em:targetApplication>
     36       <!-- Thunderbird -->
     37       <Description>
     38         <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
     39         <em:minVersion>3.0a1pre</em:minVersion>
     40         <em:maxVersion>3.2*</em:maxVersion>
     41       </Description>
     42     </em:targetApplication>
     43     <em:targetApplication>
     44       <!-- Sunbird -->
     45       <Description>
     46         <em:id>{718e30fb-e89b-41dd-9da7-e25a45638b28}</em:id>
     47         <em:minVersion>0.6a1</em:minVersion>
     48         <em:maxVersion>1.0pre</em:maxVersion>
     49       </Description>
     50     </em:targetApplication>
     51     <em:targetApplication>
     52       <!-- SeaMonkey -->
     53       <Description>
     54         <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
     55         <em:minVersion>2.0a1</em:minVersion>
     56         <em:maxVersion>2.1*</em:maxVersion>
     57       </Description>
     58     </em:targetApplication>
     59    <em:targetApplication>
     60       <!-- Songbird -->
     61       <Description>
     62         <em:id>songbird@songbirdnest.com</em:id>
     63         <em:minVersion>0.3pre</em:minVersion>
     64         <em:maxVersion>1.3.0a</em:maxVersion>
     65       </Description>
     66    </em:targetApplication>
     67    <em:targetApplication>
     68         <Description>
     69          <em:id>toolkit@mozilla.org</em:id>
     70          <em:minVersion>1.9.1</em:minVersion>
     71          <em:maxVersion>2.0*</em:maxVersion>
     72         </Description>
     73     </em:targetApplication>
     74   </Description>
     75 </RDF>""",
     76    """
     77 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     78     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
     79   <Description about="urn:mozilla:install-manifest">
     80     <em:targetApplication>
     81       <!-- Firefox -->
     82       <Description>
     83         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
     84         <em:minVersion>3.5</em:minVersion>
     85         <em:maxVersion>8.*</em:maxVersion>
     86       </Description>
     87     </em:targetApplication>
     88     <em:id>winning</em:id>
     89     <em:name>MozMill</em:name>
     90     <em:version>2.0a</em:version>
     91     <em:creator>Adam Christian</em:creator>
     92     <em:description>A testing extension based on the
     93            Windmill Testing Framework client source</em:description>
     94     <em:unpack>true</em:unpack>
     95    </Description>
     96 </RDF>""",
     97    """
     98 <RDF xmlns="http://www.mozilla.org/2004/em-rdf#"
     99        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    100   <rdf:Description about="urn:mozilla:install-manifest">
    101     <id>winning</id>
    102     <name>foo</name>
    103     <version>42</version>
    104     <description>A testing extension based on the
    105            Windmill Testing Framework client source</description>
    106 </rdf:Description>
    107 </RDF>""",
    108    """
    109 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    110     xmlns:foobar="http://www.mozilla.org/2004/em-rdf#">
    111   <Description about="urn:mozilla:install-manifest">
    112     <foobar:targetApplication>
    113       <!-- Firefox -->
    114       <Description>
    115         <foobar:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</foobar:id>
    116         <foobar:minVersion>3.5</foobar:minVersion>
    117         <foobar:maxVersion>8.*</foobar:maxVersion>
    118       </Description>
    119     </foobar:targetApplication>
    120     <foobar:id>winning</foobar:id>
    121     <foobar:name>MozMill</foobar:name>
    122     <foobar:version>2.0a</foobar:version>
    123     <foobar:creator>Adam Christian</foobar:creator>
    124     <foobar:description>A testing extension based on the
    125            Windmill Testing Framework client source</foobar:description>
    126     <foobar:unpack>true</foobar:unpack>
    127    </Description>
    128 </RDF>""",
    129 ]
    130 
    131 
    132 @pytest.fixture(
    133    params=ADDON_ID_TESTS, ids=[str(i) for i in range(0, len(ADDON_ID_TESTS))]
    134 )
    135 def profile(request, tmpdir):
    136    test = request.param
    137    path = tmpdir.mkdtemp().strpath
    138 
    139    with open(os.path.join(path, "install.rdf"), "w") as fh:
    140        fh.write(test)
    141    return path
    142 
    143 
    144 def test_addonID(profile):
    145    a = addons.AddonManager(os.path.join(profile, "profile"))
    146    addon_id = a.addon_details(profile)["id"]
    147    assert addon_id == "winning"
    148 
    149 
    150 def test_addonID_xpi():
    151    a = addons.AddonManager("profile")
    152    addon = a.addon_details(os.path.join(here, "addons", "empty.xpi"))
    153    assert addon["id"] == "test-empty@quality.mozilla.org"
    154 
    155 
    156 if __name__ == "__main__":
    157    mozunit.main()