103 lines
3.8 KiB
ReStructuredText
103 lines
3.8 KiB
ReStructuredText
Maintenance Service Tests
|
|
=========================
|
|
|
|
The automated tests for the Mozilla Maintenance Service are a bit tricky. They
|
|
are located in ``toolkit/mozapps/update/tests/unit_service_updater/`` and they
|
|
allow for automated testing of application update using the Service.
|
|
|
|
In automation, everything gets signed and the tests properly check that things
|
|
like certificate verification work. If, however, you want to run the tests
|
|
locally, the MAR and the updater binary will not be signed. Thus, the
|
|
verification of those certificates will fail and the tests will not run
|
|
properly.
|
|
|
|
We don't want these tests to just always fail if someone runs large amounts of
|
|
tests locally. To avoid this, the tests basically just unconditionally pass if
|
|
you run them locally and don't take the time to set them up properly.
|
|
|
|
If you want them to actually run locally, you will need to set up your
|
|
environment properly.
|
|
|
|
Setting Up to Run the Tests Locally
|
|
-----------------------------------
|
|
|
|
In order to run the service tests locally, we have to bypass much of the
|
|
certificate verification. Thus, this method may not be helpful if you need to
|
|
test that feature in particular.
|
|
|
|
Add Fallback Key to Registry
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
First, you will need to add the fallback key to the registry. Normally, the
|
|
Firefox installer writes some certificate information to a registry key in an
|
|
installation-specific place. In testing, however, we can't get the permissions
|
|
to write this key, nor can we have the test environment predict every possible
|
|
installation directory that we might test with. To get around this problem, if
|
|
the Service can't find the installation-specific key, it will check a static
|
|
fallback location.
|
|
|
|
The easiest way to correctly set up the fallback key is to copy the text below
|
|
into a ``.reg`` file and then double click it in the file browser to merge it
|
|
into the registry.
|
|
|
|
.. code::
|
|
|
|
Windows Registry Editor Version 5.00
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\MaintenanceService\3932ecacee736d366d6436db0f55bce4]
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\MaintenanceService\3932ecacee736d366d6436db0f55bce4\0]
|
|
"issuer"="DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1"
|
|
"name"="Mozilla Corporation"
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\MaintenanceService\3932ecacee736d366d6436db0f55bce4\1]
|
|
"issuer"="DigiCert SHA2 Assured ID Code Signing CA"
|
|
"name"="Mozilla Corporation"
|
|
|
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\MaintenanceService\3932ecacee736d366d6436db0f55bce4\2]
|
|
"issuer"="Mozilla Fake CA"
|
|
"name"="Mozilla Fake SPC"
|
|
|
|
Build without Certificate Verification
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
To disable certificate verification, add this build flag to your ``mozconfig``
|
|
file:
|
|
|
|
.. code::
|
|
|
|
ac_add_options --enable-unverified-updates
|
|
|
|
You will need to rebuild for this to take effect.
|
|
|
|
Copy the Maintenance Service Binary
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
This step will assume that you already have the Maintenance Service installed.
|
|
|
|
First, move the existing Maintenance Service binary out of the way. It will
|
|
initially be located at
|
|
``C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe``.
|
|
An easy way to do this is to append ``.bak`` to its name. You should probably
|
|
restore your original Maintenance Service binary when you are done testing.
|
|
|
|
Now, copy the Maintenance Service binary that you built into that directory.
|
|
It will be located at ``<obj directory>\dist\bin\maintenanceservice.exe``.
|
|
|
|
If you make changes to the Maintenance Service and rebuild, you will have to
|
|
repeat this step.
|
|
|
|
Running the Tests
|
|
-----------------
|
|
|
|
You should now be ready run a service test:
|
|
|
|
.. code::
|
|
|
|
./mach test toolkit/mozapps/update/tests/unit_service_updater/<test>
|
|
|
|
Or run all of them:
|
|
|
|
.. code::
|
|
|
|
./mach test toolkit/mozapps/update/tests/unit_service_updater
|