维护服务测试¶
Mozilla 维护服务的自动化测试有点棘手。它们位于 toolkit/mozapps/update/tests/unit_service_updater/
中,并且允许使用该服务对应用程序更新进行自动化测试。
在自动化过程中,所有内容都会被签名,并且测试会正确地检查证书验证等功能是否正常工作。但是,如果您想在本地运行测试,则 MAR 和更新程序二进制文件将不会被签名。因此,这些证书的验证将失败,并且测试将无法正常运行。
我们不希望这些测试在有人在本地运行大量测试时总是失败。为了避免这种情况,如果在本地运行测试并且没有花时间正确设置它们,则测试基本上会无条件地通过。
如果您希望它们在本地实际运行,则需要正确设置您的环境。
设置本地运行测试¶
为了在本地运行服务测试,我们必须绕过大部分证书验证。因此,如果您需要特别测试此功能,则此方法可能没有帮助。
向注册表添加回退密钥¶
首先,您需要将回退密钥添加到注册表中。通常,Firefox 安装程序会将一些证书信息写入安装特定位置的注册表项中。但是,在测试中,我们无法获得写入此密钥的权限,也不能让测试环境预测我们可能测试的每个可能的安装目录。为了解决这个问题,如果服务找不到安装特定的密钥,它将检查静态回退位置。
正确设置回退密钥的最简单方法是将下面的文本复制到一个 .reg
文件中,然后双击该文件以将其合并到注册表中。
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"
在没有证书验证的情况下构建¶
要禁用证书验证,请将此构建标志添加到您的 mozconfig
文件中
ac_add_options --enable-unverified-updates
您需要重新构建才能使此更改生效。
复制维护服务二进制文件¶
此步骤将假设您已经安装了维护服务。
首先,将现有的维护服务二进制文件移出原处。它最初位于 C:\Program Files (x86)\Mozilla Maintenance Service\maintenanceservice.exe
。一个简单的方法是将 .bak
附加到其名称。您可能应该在测试完成后恢复原始的维护服务二进制文件。
现在,将您构建的维护服务二进制文件复制到该目录。它位于 <obj directory>\dist\bin\maintenanceservice.exe
。
如果您对维护服务进行更改并重新构建,则需要重复此步骤。
运行测试¶
您现在应该可以运行服务测试了
./mach test toolkit/mozapps/update/tests/unit_service_updater/<test>
或运行所有测试
./mach test toolkit/mozapps/update/tests/unit_service_updater