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()