def test23hostPermissions(self):
        worker = Worker()
        self.source += 'test23hostPermissions'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 3
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        manifest = worker.wrapper.manifest

        key = 'permissions'
        self.assertIn(key, manifest)
        self.assertEqual(len(manifest[key]), 2)

        key = 'optional_permissions'
        self.assertIn(key, manifest)
        self.assertEqual(len(manifest[key]), 1)

        key = 'host_permissions'
        self.assertIn(key, manifest)
        self.assertEqual(len(manifest[key]), 2)

        shutil.rmtree(self.destination)
    def test_mv3_to_mv2_B(self):
        worker = Worker()
        self.source += 'tabstourls_mv3'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 2
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        shutil.rmtree(self.destination)
    def test_mv3_to_mv2_C(self):
        worker = Worker()
        self.source += 'timebadge_mv3'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 2
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        manifest = worker.wrapper.manifest
        self.assertIn('background', manifest)
        self.assertIn('scripts', manifest['background'])

        shutil.rmtree(self.destination)
    def test23contentSecurityPolicy(self):
        worker = Worker()
        self.source += 'test23contentSecurityPolicy'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 3
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        manifest = worker.wrapper.manifest
        key = 'content_security_policy'
        self.assertIn(key, manifest)
        self.assertIn('extension_pages', manifest[key])
        self.assertIn('sandbox', manifest[key])

        shutil.rmtree(self.destination)
    def test23executeScript(self):
        worker = Worker()
        self.source += 'test23executeScript'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 3
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        manifest = worker.wrapper.manifest
        self.assertIn('background', manifest)
        self.assertIn('service_worker', manifest['background'])
        self.assertEqual(manifest['background']['service_worker'],
                         'service_worker.js')

        self.assertIn('permissions', manifest)
        self.assertIn('scripting', manifest['permissions'])

        shutil.rmtree(self.destination)
    def test_mv2_C(self):
        worker = Worker()
        self.source += 'backgroundScripts_mv2'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 3
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        manifest = worker.wrapper.manifest
        self.assertIn('background', manifest)
        self.assertIn('service_worker', manifest['background'])
        self.assertEqual(manifest['background']['service_worker'],
                         'service_worker.js')
        self.assertFalse(
            os.path.exists(worker.wrapper.destination + os.sep + 'script1.js'))
        self.assertFalse(
            os.path.exists(worker.wrapper.destination + os.sep + 'script2.js'))

        shutil.rmtree(self.destination)
    def test23webAccessibleResources(self):
        worker = Worker()
        self.source += 'test23webAccessibleResources'
        self.destination = self.source + '_delete'
        worker.work(self.source)

        expected = 3
        actual = worker.wrapper.getManifestVersion()
        self.assertEqual(actual, expected, 'manifest_version')

        manifest = worker.wrapper.manifest
        self.assertIn('background', manifest)
        self.assertIn('service_worker', manifest['background'])
        self.assertEqual(manifest['background']['service_worker'],
                         'service_worker.js')

        self.assertIn('permissions', manifest)
        self.assertIn('scripting', manifest['permissions'])

        key = 'web_accessible_resources'
        self.assertIn(key, manifest)
        self.assertEqual(len(manifest[key][0]['resources']), 2)

        shutil.rmtree(self.destination)