Files
snapd/tests/lib/assertions
Michael Vogt 158091c424 tests: tweak the "tests/nested/manual/connections" test
The `tests/nested/manual/connections` is failing sometimes and
it's unclear why. When it fails it appears that the `connections`
snap is not installed which is strange given that it's clearly
needed in the model - as a consequence there are no connections
so the test fails.

To untangle this a bit this commit makes some changes to the test:
- rename to gadget-connections
- rename test snap from just "connections" to "tests-snapd-connections"
- rename the model from "pc" to "nested-20-amd64-test-snapd-connections"
- precondition checks that ensure we have the right model
- precondition checks that we have the expected test-snapd-connections
  snap
- move image building into "execute:" to ensure that on failure we get
  the shell log of how the image was build (this is lost if "prepare"
  bulds the image but the error happens in "execute").
2022-07-22 11:50:03 +02:00
..
2017-01-11 10:19:50 +01:00
2022-05-11 11:27:06 +02:00

Generating model assertions

Test keys and developer accounts

Signed model assertions for use in the spread tests can be generated using gendeveloper1 tool. The assertion is signed by developer1 key, which is built-into the snapd binary used during the tests.

To build the tool:

$ go install ./tests/lib/gendeveloper1

Generating the assertions is done like this:

$ cd tests/lib/assertions
$ gendeveloper1 sign-model < developer1-pc-18.model.json > developer1-pc-18.model

The GPG of developer1 can be obtained with:

$ gendeveloper1 show-key

Valid keys and developer accounts

Some tests, particularly remodel, require valid model assertions that are signed by developer account keys known to the store. For instance, valid-for-testing-*.model files are such assertions. There is a corresponding *.json file for each of the assertions. The models were signed by one of snapd developers using their private keys.

When there is a need to regenerate the assertions and sign them again using a different set of keys be sure to update both authority-id and brand-id in each of the json files. Then follow the procedure outlined in the Ubuntu Core docs https://ubuntu.com/core/docs/custom-images#heading--signing which boils down to:

$ snap create-key my-models
$ snapcraft register-key
$ snap sign -k my-models < valid-for-testing-some-file.json > valid-for-testing-some-file.model

The value for authority-id and brand-id, is the same as the developer-id which can be obtained by running:

$ snapcraft login
$ snapcraft whoami
email:        <your-email>@...
developer-id: <your-developer-id>