[BREAKGLASS] Signal Message Backup shared client integration test cases
Go to file
2026-02-16 13:29:44 -05:00
.github/workflows Move to the kotlin test generator. 2024-08-28 10:09:29 -04:00
.idea Add forgotten file templates. 2024-08-28 13:05:15 -04:00
gradle/wrapper Update to Gradle 8.6, to match Signal-Android and libsignal 2024-08-30 09:04:36 -07:00
src/main Add ability to generate a local backup. 2026-02-16 13:29:44 -05:00
test-cases Remove epochs from Call Link test cases 2026-02-13 18:12:11 -08:00
.editorconfig Move to the kotlin test generator. 2024-08-28 10:09:29 -04:00
.gitignore Ignore kls_database. 2024-10-23 15:07:07 -04:00
.tool-versions Add a .tool-versions file. 2025-03-19 13:03:09 -04:00
build.gradle.kts Update backup tests for key transparency fields. 2026-02-02 15:59:09 -05:00
gradle.properties Add support for building libsignal from source 2024-08-30 09:04:36 -07:00
gradlew Move to the kotlin test generator. 2024-08-28 10:09:29 -04:00
gradlew.bat Move to the kotlin test generator. 2024-08-28 10:09:29 -04:00
README.md Move to the kotlin test generator. 2024-08-28 10:09:29 -04:00
settings.gradle.kts Add support for building libsignal from source 2024-08-30 09:04:36 -07:00

Signal Message Backup Tests

The goal of this project is to provide a set of shared backup test files that clients can use to validate that they are importing and exporting data correctly. They can do this by importing the test file, exporting a new one, and verifying that the new file is functionally equivalent to the original (using the libsignal comparator).

The tests themselves are generated through a Kotlin DSL that allows for the easy creation of permutations of a given proto. This helps ensure that we have strong coverage over a wide range of possible backup files.

Using shared test cases

The test cases are located in test-cases. The actual backup file has a .binproto extension. Each of these is paired with a .txtproto file that contains a human-readable version of the backup file to aid in debugging.

The .binproto's themselves are unencrypted and un-gzipped. This is to avoid any need for a shared key.

Creating test cases

If you import this project into IntelliJ, it comes with a template for creating a new test case. If you right-click the tests package and click New > Signal Backup Test Case, you should have a basic template. Everything is generated with a largely straightforward kotlin DSL. There's lots of existing test cases you can use as an example to see how things are put together and how you can easily generate permutations of a given proto.

After creating the test file, add it to the ALL_TEST_CASES list in Main.kt, and run the project. If you're not using Intellij, you can simply run ./gradlew run from the terminal.