tor-browser

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

test_update_verify.py (15071B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 import os
      6 import unittest
      7 from pathlib import Path
      8 from tempfile import mkstemp
      9 
     10 import mozunit
     11 
     12 from mozrelease.update_verify import UpdateVerifyConfig, UpdateVerifyError
     13 
     14 DATA_PATH = Path(__file__).with_name("data")
     15 
     16 
     17 class TestUpdateVerifyConfig(unittest.TestCase):
     18    config = str(DATA_PATH.joinpath("sample-update-verify.cfg"))
     19 
     20    def setUp(self):
     21        self.uvc = UpdateVerifyConfig()
     22        fd, self.tmpfilename = mkstemp()
     23        self.tmpfile = os.fdopen(fd, "wb")
     24 
     25    def tearDown(self):
     26        self.tmpfile.close()
     27        os.unlink(self.tmpfilename)
     28 
     29    def testEq(self):
     30        self.uvc.product = "foo"
     31        self.uvc.channel = "betatest"
     32        self.uvc.aus_server = "aus"
     33        self.uvc.ftp_server_from = "ftp"
     34        self.uvc.ftp_server_to = "ftp"
     35        self.uvc.to = "/firefox/4.0rc2.tar.bz2"
     36        self.uvc.mar_channel_IDs = "baz"
     37        self.uvc.to_build_id = "999"
     38        self.uvc.to_display_version = "99.0 Zeta 9"
     39        self.uvc.to_app_version = "99.0"
     40        uvc2 = UpdateVerifyConfig()
     41        uvc2.product = "foo"
     42        uvc2.channel = "betatest"
     43        uvc2.aus_server = "aus"
     44        uvc2.ftp_server_form = "ftp"
     45        uvc2.ftp_server_to = "ftp"
     46        uvc2.to = "/firefox/4.0rc2.tar.bz2"
     47        uvc2.mar_channel_IDs = "baz"
     48        uvc2.to_build_id = "999"
     49        uvc2.to_display_version = "99.0 Zeta 9"
     50        uvc2.to_app_version = "99.0"
     51        self.assertEqual(self.uvc, uvc2)
     52 
     53    def testNe(self):
     54        self.uvc.product = "foo"
     55        uvc2 = UpdateVerifyConfig()
     56        # assertNotEqual doesn't test the __ne__ function, so we do this
     57        self.assertTrue(self.uvc != uvc2)
     58 
     59    def testAddRelease(self):
     60        releases = [
     61            {
     62                "release": "4.0",
     63                "platform": "bar",
     64                "build_id": 555,
     65                "locales": ["af", "de"],
     66                "patch_types": ["partial", "complete"],
     67                "from": "/pub/firefox/foo.bz2",
     68                "ftp_server_from": "from",
     69                "ftp_server_to": "to",
     70                "mar_channel_IDs": "firefox-mozilla-booyah",
     71                "updater_package": None,
     72            }
     73        ]
     74        self.uvc.addRelease(
     75            "4.0",
     76            build_id=555,
     77            locales=["af", "de"],
     78            patch_types=["partial", "complete"],
     79            from_path="/pub/firefox/foo.bz2",
     80            ftp_server_from="from",
     81            ftp_server_to="to",
     82            mar_channel_IDs="firefox-mozilla-booyah",
     83            platform="bar",
     84        )
     85        self.assertEqual(self.uvc.releases, releases)
     86 
     87    def testAddReleasesWithDifferentPlatforms(self):
     88        releases = [
     89            {
     90                "release": "4.0",
     91                "platform": "WINNT_x86-msvc",
     92                "build_id": 555,
     93                "locales": ["af", "de"],
     94                "patch_types": ["partial", "complete"],
     95                "from": "/pub/firefox/foo.bz2",
     96                "ftp_server_from": "from",
     97                "ftp_server_to": "to",
     98                "mar_channel_IDs": "firefox-mozilla-booyah",
     99                "updater_package": None,
    100            },
    101            {
    102                "release": "5.0",
    103                "platform": "WINNT_x86-msvc-x86",
    104                "build_id": 666,
    105                "locales": ["af", "de"],
    106                "patch_types": ["partial", "complete"],
    107                "from": "/pub/firefox/foo2.bz2",
    108                "ftp_server_from": "from",
    109                "ftp_server_to": "to",
    110                "mar_channel_IDs": "firefox-mozilla-booyah",
    111                "updater_package": None,
    112            },
    113        ]
    114        self.uvc.addRelease(
    115            "4.0",
    116            build_id=555,
    117            locales=["af", "de"],
    118            patch_types=["partial", "complete"],
    119            from_path="/pub/firefox/foo.bz2",
    120            ftp_server_from="from",
    121            ftp_server_to="to",
    122            mar_channel_IDs="firefox-mozilla-booyah",
    123            platform="WINNT_x86-msvc",
    124        )
    125        self.uvc.addRelease(
    126            "5.0",
    127            build_id=666,
    128            locales=["af", "de"],
    129            patch_types=["partial", "complete"],
    130            from_path="/pub/firefox/foo2.bz2",
    131            ftp_server_from="from",
    132            ftp_server_to="to",
    133            mar_channel_IDs="firefox-mozilla-booyah",
    134            platform="WINNT_x86-msvc-x86",
    135        )
    136        self.assertEqual(self.uvc.releases, releases)
    137 
    138    def testRead(self):
    139        ftp_server_from = "stage.mozilla.org/firefox"
    140        ftp_server_to = "stage.mozilla.org/firefox"
    141        uvc2 = UpdateVerifyConfig()
    142        uvc2.product = "Firefox"
    143        uvc2.channel = "betatest"
    144        uvc2.aus_server = "https://aus4.mozilla.org"
    145        uvc2.to = "/firefox/4.0rc2.tar.bz2"
    146        uvc2.to_build_id = "999"
    147        uvc2.to_display_version = "99.0 Zeta 9"
    148        uvc2.to_app_version = "99.0"
    149        uvc2.addRelease(
    150            "4.0",
    151            build_id="888",
    152            platform="Linux_x86-gcc3",
    153            locales=["af", "de", "en-US", "ja", "zh-TW"],
    154            patch_types=["partial", "complete"],
    155            from_path="/firefox/4.0rc1.tar.bz2",
    156            ftp_server_from=ftp_server_from,
    157            ftp_server_to=ftp_server_to,
    158            mar_channel_IDs="firefox-mozilla-beta",
    159        )
    160        uvc2.addRelease(
    161            "4.0b12",
    162            build_id="777",
    163            platform="Linux_x86-gcc3",
    164            locales=["af", "en-US"],
    165            from_path="/firefox/4.0b12.tar.bz2",
    166            ftp_server_from=ftp_server_from,
    167            ftp_server_to=ftp_server_to,
    168        )
    169        uvc2.addRelease(
    170            "4.0b12",
    171            build_id="777",
    172            platform="Linux_x86-gcc3",
    173            locales=["de", "ja", "zh-TW"],
    174            ftp_server_from=ftp_server_from,
    175            ftp_server_to=ftp_server_to,
    176        )
    177        uvc2.addRelease(
    178            "3.7a1",
    179            build_id="666",
    180            locales=["en-US"],
    181            ftp_server_from=ftp_server_from,
    182            ftp_server_to=ftp_server_to,
    183            platform="Linux_x86-gcc3",
    184        )
    185 
    186        self.uvc.read(self.config)
    187        self.assertEqual(self.uvc, uvc2)
    188 
    189    def testWrite(self):
    190        ftp_server_from = "stage.mozilla.org/firefox"
    191        ftp_server_to = "stage.mozilla.org/firefox"
    192        self.uvc.product = "Firefox"
    193        self.uvc.channel = "betatest"
    194        self.uvc.aus_server = "https://aus4.mozilla.org"
    195        self.uvc.to = "/firefox/4.0rc2.tar.bz2"
    196        self.uvc.to_build_id = "999"
    197        self.uvc.to_display_version = "99.0 Zeta 9"
    198        self.uvc.to_app_version = "99.0"
    199        self.uvc.addRelease(
    200            "4.0",
    201            build_id="888",
    202            platform="Linux_x86-gcc3",
    203            locales=("af", "de", "en-US", "ja", "zh-TW"),
    204            patch_types=("partial", "complete"),
    205            from_path="/firefox/4.0rc1.tar.bz2",
    206            ftp_server_from=ftp_server_from,
    207            ftp_server_to=ftp_server_to,
    208            mar_channel_IDs="firefox-mozilla-beta",
    209        )
    210        self.uvc.addRelease(
    211            "4.0b12",
    212            build_id="777",
    213            platform="Linux_x86-gcc3",
    214            locales=["af", "en-US"],
    215            from_path="/firefox/4.0b12.tar.bz2",
    216            ftp_server_from=ftp_server_from,
    217            ftp_server_to=ftp_server_to,
    218        )
    219        self.uvc.addRelease(
    220            "4.0b12",
    221            build_id="777",
    222            platform="Linux_x86-gcc3",
    223            locales=("de", "ja", "zh-TW"),
    224            ftp_server_from=ftp_server_from,
    225            ftp_server_to=ftp_server_to,
    226        )
    227        self.uvc.addRelease(
    228            "3.7a1",
    229            build_id="666",
    230            locales=("en-US",),
    231            ftp_server_from=ftp_server_from,
    232            ftp_server_to=ftp_server_to,
    233            platform="Linux_x86-gcc3",
    234        )
    235 
    236        self.uvc.write(self.tmpfile)
    237        self.tmpfile.close()
    238        self.assertEqual(open(self.config).read(), open(self.tmpfilename).read())
    239 
    240    def testReadInvalidKey(self):
    241        invalidLine = 'foo="bar"'
    242        self.assertRaises(UpdateVerifyError, self.uvc._parseLine, invalidLine)
    243 
    244    def testReadDuplicateKey(self):
    245        invalidLine = 'release="bar" release="blah"'
    246        self.assertRaises(UpdateVerifyError, self.uvc._parseLine, invalidLine)
    247 
    248    def testParseLineBad(self):
    249        invalidLine = "abh nthntuehonhuh nhhueont hntueoh nthouo"
    250        self.assertRaises(UpdateVerifyError, self.uvc._parseLine, invalidLine)
    251 
    252    def testGetChunk(self):
    253        ftp_server_from = "stage.mozilla.org/firefox"
    254        ftp_server_to = "stage.mozilla.org/firefox"
    255        self.uvc.read(self.config)
    256        uvc2 = UpdateVerifyConfig()
    257        uvc2.product = "Firefox"
    258        uvc2.channel = "betatest"
    259        uvc2.aus_server = "https://aus4.mozilla.org"
    260        uvc2.to = "/firefox/4.0rc2.tar.bz2"
    261        uvc2.to_build_id = "999"
    262        uvc2.to_display_version = "99.0 Zeta 9"
    263        uvc2.to_app_version = "99.0"
    264        uvc2.addRelease(
    265            "4.0",
    266            build_id="888",
    267            platform="Linux_x86-gcc3",
    268            locales=["af", "de", "en-US"],
    269            patch_types=["partial", "complete"],
    270            from_path="/firefox/4.0rc1.tar.bz2",
    271            ftp_server_from=ftp_server_from,
    272            ftp_server_to=ftp_server_to,
    273            mar_channel_IDs="firefox-mozilla-beta",
    274        )
    275        uvc2.addRelease(
    276            "4.0b12",
    277            build_id="777",
    278            platform="Linux_x86-gcc3",
    279            locales=["de", "ja"],
    280            patch_types=["complete"],
    281            ftp_server_from=ftp_server_from,
    282            ftp_server_to=ftp_server_to,
    283            from_path=None,
    284        )
    285        chunkedConfig = self.uvc.getChunk(chunks=3, thisChunk=1)
    286        self.assertEqual(chunkedConfig, uvc2)
    287 
    288    def testGetChunkWithPathWithSpaces(self):
    289        self.uvc.product = "Firefox"
    290        self.uvc.channel = "betatest"
    291        self.uvc.aus_server = "https://aus4.mozilla.org"
    292        self.uvc.ftp_server_from = "stage.mozilla.org/firefox"
    293        self.uvc.ftp_server_to = "stage.mozilla.org/firefox"
    294        self.uvc.to = "/firefox/Firefox 4.0 Beta 2.exe"
    295        self.uvc.to_build_id = "999"
    296        self.uvc.to_display_version = "99.0 Zeta 9"
    297        self.uvc.to_app_version = "99.0"
    298        self.uvc.addRelease(
    299            "4.0b1",
    300            build_id="222",
    301            platform="Linux_x86-gcc3",
    302            locales=["en-US", "ja", "zh-TW"],
    303            patch_types=["complete"],
    304            from_path="/firefox/Firefox 4.0 Beta 1.exe",
    305        )
    306        uvc2 = UpdateVerifyConfig()
    307        uvc2.product = "Firefox"
    308        uvc2.channel = "betatest"
    309        uvc2.aus_server = "https://aus4.mozilla.org"
    310        uvc2.ftp_server_from = "stage.mozilla.org/firefox"
    311        uvc2.ftp_server_to = "stage.mozilla.org/firefox"
    312        uvc2.to = "/firefox/Firefox 4.0 Beta 2.exe"
    313        uvc2.to_build_id = "999"
    314        uvc2.to_display_version = "99.0 Zeta 9"
    315        uvc2.to_app_version = "99.0"
    316        uvc2.addRelease(
    317            "4.0b1",
    318            build_id="222",
    319            platform="Linux_x86-gcc3",
    320            locales=["en-US", "ja"],
    321            patch_types=["complete"],
    322            from_path="/firefox/Firefox 4.0 Beta 1.exe",
    323        )
    324        chunkedConfig = self.uvc.getChunk(chunks=2, thisChunk=1)
    325        self.assertEqual(chunkedConfig, uvc2)
    326 
    327    def testAddLocaleToRelease(self):
    328        from_path = "/firefox/4.0rc1.tar.bz2"
    329        self.uvc.read(self.config)
    330        self.uvc.addLocaleToRelease("888", "he", from_path)
    331        self.assertEqual(
    332            self.uvc.getRelease("888", from_path)["locales"],
    333            ["af", "de", "en-US", "he", "ja", "zh-TW"],
    334        )
    335 
    336    def testAddLocaleToReleaseMultipleBuildIDs(self):
    337        from_path = None
    338        self.uvc.read(self.config)
    339        self.uvc.addLocaleToRelease("777", "he", from_path)
    340        self.assertEqual(
    341            self.uvc.getRelease("777", from_path)["locales"],
    342            ["de", "he", "ja", "zh-TW"],
    343        )
    344 
    345    def testAddLocaleToNonexistentRelease(self):
    346        self.uvc.read(self.config)
    347        self.assertRaises(UpdateVerifyError, self.uvc.addLocaleToRelease, "123", "he")
    348 
    349    def testGetReleaseNonexistenceRelease(self):
    350        self.uvc.read(self.config)
    351        self.assertEqual(self.uvc.getRelease("123", None), {})
    352 
    353    def testGetFullReleaseTests(self):
    354        ftp_server_from = "stage.mozilla.org/firefox"
    355        ftp_server_to = "stage.mozilla.org/firefox"
    356        self.uvc.read(self.config)
    357        uvc2 = UpdateVerifyConfig()
    358        uvc2.product = "Firefox"
    359        uvc2.channel = "betatest"
    360        uvc2.aus_server = "https://aus4.mozilla.org"
    361        uvc2.to = "/firefox/4.0rc2.tar.bz2"
    362        uvc2.to_build_id = "999"
    363        uvc2.to_display_version = "99.0 Zeta 9"
    364        uvc2.to_app_version = "99.0"
    365        uvc2.addRelease(
    366            "4.0",
    367            build_id="888",
    368            platform="Linux_x86-gcc3",
    369            locales=["af", "de", "en-US", "ja", "zh-TW"],
    370            patch_types=["partial", "complete"],
    371            from_path="/firefox/4.0rc1.tar.bz2",
    372            ftp_server_from=ftp_server_from,
    373            ftp_server_to=ftp_server_to,
    374            mar_channel_IDs="firefox-mozilla-beta",
    375        )
    376        uvc2.addRelease(
    377            "4.0b12",
    378            build_id="777",
    379            platform="Linux_x86-gcc3",
    380            locales=["af", "en-US"],
    381            patch_types=["complete"],
    382            from_path="/firefox/4.0b12.tar.bz2",
    383            ftp_server_from=ftp_server_from,
    384            ftp_server_to=ftp_server_to,
    385        )
    386        self.assertEqual(self.uvc.getFullReleaseTests(), uvc2.releases)
    387 
    388    def testGetQuickReleaseTests(self):
    389        ftp_server_from = "stage.mozilla.org/firefox"
    390        ftp_server_to = "stage.mozilla.org/firefox"
    391        self.uvc.read(self.config)
    392        uvc2 = UpdateVerifyConfig()
    393        uvc2.product = "Firefox"
    394        uvc2.channel = "betatest"
    395        uvc2.aus_server = "https://aus4.mozilla.org"
    396        uvc2.to = "/firefox/4.0rc2.tar.bz2"
    397        uvc2.to_build_id = "999"
    398        uvc2.to_display_version = "99.0 Zeta 9"
    399        uvc2.to_app_version = "99.0"
    400        uvc2.addRelease(
    401            "4.0b12",
    402            build_id="777",
    403            platform="Linux_x86-gcc3",
    404            locales=["de", "ja", "zh-TW"],
    405            patch_types=["complete"],
    406            from_path=None,
    407            ftp_server_from=ftp_server_from,
    408            ftp_server_to=ftp_server_to,
    409        )
    410        uvc2.addRelease(
    411            "3.7a1",
    412            build_id="666",
    413            platform="Linux_x86-gcc3",
    414            locales=["en-US"],
    415            patch_types=["complete"],
    416            from_path=None,
    417            ftp_server_from=ftp_server_from,
    418            ftp_server_to=ftp_server_to,
    419        )
    420        self.assertEqual(self.uvc.getQuickReleaseTests(), uvc2.releases)
    421 
    422 
    423 if __name__ == "__main__":
    424    mozunit.main()