A GitHub Action that performs XMPP interoperability tests on an XMPP domain.
For more information, please visit our project website at https://xmpp-interop-testing.github.io/
The Action will typically execute various tests. Each test will use a fresh set of XMPP user accounts. These are automatically provisioned by the testing framework. They will be removed after the test execution.
The following strategies for test account provisioning are supported:
- By default, the test accounts are provisioned using XMPP's "In-band Registration" functionality (as defined in XEP-0077).
- Alternatively, test accounts can be provisioned using XMPP 'Ad-hoc commands', as specified in
XEP-0133: Service Administration. To enable this way of provisioning, the
Action's configuration must include the optional
adminAccountUsername
andadminAccountPassword
inputs (as documented below).
The Action can be configured using the following inputs:
ipAddress
: the IP address of the server under test. Default value:127.0.0.1
domain
: the XMPP domain name of server under test. Default value:example.org
timeout
: the amount of milliseconds after which an XMPP action (typically an IQ request) is considered timed out. Default value:5000
(five seconds)adminAccountUsername
: (optional) The account name of a pre-existing user that is allowed to create other users, per XEP-0133. If not provided, in-band registration (XEP-0077) will be used to provision accounts.adminAccountPassword
: (optional) The password of the admin account.disabledTests
: (optional) A comma-separated list of tests that are to be skipped. For example:EntityCapsTest,SoftwareInfoIntegrationTest
disabledSpecifications
: (optional) A comma-separated list of specifications (not case-sensitive) that are to be skipped. For example:XEP-0045,XEP-0060
logDir
: (optional) The directory in which the test output and logs are to be stored. This directory will be created, if it does not already exist. Default value:./output
uses: XMPP-Interop-Testing/xmpp-interop-tests-action@v1.0
with:
domain: 'shakespeare.lit'
adminAccountUsername: 'juliet'
adminAccountPassword: 'O_Romeo_Romeo!'
It is expected that this action is used in a continuous integration flow that creates a new build of the XMPP server that is to be the subject of the tests.
Very generically, the xmpp-interop-test-action is expected to be part of such a flow in this manner:
- Compile and build server software
- Start server
- Invoke xmpp-interop-test-action
- Stop server
This could look something like the flow below. Note that all but the third step in this flow are placeholders. They need to be replaced by steps that are specific to the server that is being build and tested.
- name: Download Server distribution artifact from build job.
uses: actions/download-artifact@v4
with:
name: my-server-distribution
path: .
- name: Start CI server from distribution
id: startCIServer
uses: ./.github/actions/startserver-action # Should result in a running server.
- name: Run XMPP Interoperability Tests against CI server.
uses: XMPP-Interop-Testing/xmpp-interop-tests-action@v1.0
with:
domain: 'shakespeare.lit'
adminAccountUsername: 'juliet'
adminAccountPassword: 'O_Romeo_Romeo!'
- name: Stop CI server
if: ${{ always() && steps.startCIServer.conclusion == 'success' }}
uses: ./.github/actions/stopserver-action