Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/moodlehq/matrixsynapse_mock
Mock for the Matrix and Synapse APIs
https://github.com/moodlehq/matrixsynapse_mock
Last synced: 2 months ago
JSON representation
Mock for the Matrix and Synapse APIs
- Host: GitHub
- URL: https://github.com/moodlehq/matrixsynapse_mock
- Owner: moodlehq
- Created: 2023-03-13T06:22:44.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-04T02:02:37.000Z (8 months ago)
- Last Synced: 2024-06-04T03:24:51.714Z (8 months ago)
- Language: PHP
- Size: 380 KB
- Stars: 2
- Watchers: 17
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Matrix Synapse Mock API Server
This project and associated docker containers provide a partial mock of the main Matrix Synapse server and can be used for
testing of Synapse integrations.## Quick setup using Docker
Run the following command to get your mock server up and running:
```
docker run -p 8001:80 moodlehq/matrixsynapse_mock
```## API information
All endpoints must be prefixed with a `serverID` to allow for parallel runs, for example:```
http://localhost:8001/serverID/API
```In addition to the standard endpoints, additional endpoints are provided for creating an Admin user:
Expected method is (POST)```
/backoffice/create-admin
```In addition, the following endpoint can be used to trigger a reset between tests:
Expected method is (POST)```
/backoffice/reset
```Back office request example:
```
curl -i GET http://elementmock:8001/serverID/backoffice/create-admin
```
Error response example
```
{
"errcode" : "M_UNRECOGNIZED",
"error" : "Unrecognized request"
}
```## API Documentations
### Synapse API documentation:
```
https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/index.html
```### Synapse-Mock API functions
* Register new user: expected method (PUT)
* Update existing user: expected method (PUT)
* Get user info: expected method (GET)
* Add user to matrix room: expected method (POST)
* Delete existing matrix room: expected method (DELETE)
* Get room info: expected method (GET)### Matrix API documentation:
```
https://spec.matrix.org/v1.5/client-server-api/
```### Matrix-Mock API functions
* Login: expected method (POST)
* Refresh token: expected method (POST)
* Create matrix room: expected method (POST)
* Remove user from room: expected method (POST)
* Room manipulations (Update room topic, name and avatar): expected method (PUT)
* Get members of existing room: expected method (GET)
* Upload media: expected method (POST)## API coverage
The following are the currently mocked API endpoints. These should respond with the same HTTP status code, content type and response content as a real Synapse server.### Synapse
Call API endpoint without Auth Header:
`curl -i -X GET http://localhost:8001/someServerID/_synapse/admin/v2/users/@barzuser:synapse`Call API endpoint using wrong HTTP method:
```
curl -i --header "Authorization: Bearer syt_YWRtaW4_iNofAsbInAInYAFwkmdi_1oVMxI" \
-X POST http://localhost:8001/someServerID/_synapse/admin/v2/users/@testuser:synapse`
```Get user info. Handles existing and non-existing users:
```
curl -i --header "Authorization: Bearer syt_YWRtaW4_iNofAsbInAInYAFwkmdi_1oVMxI" \
-X GET http://localhost:8001/someServerID/_synapse/admin/v2/users/@testuser:synapse
```Create and update users:
```
curl -i --header "Authorization: Bearer syt_YWRtaW4_iNofAsbInAInYAFwkmdi_1oVMxI" \
-X PUT \
-d '{"displayname":"aSomeone new","threepids":[{"medium":"email","address":"[email protected]"}],"external_ids":[{"auth_provider":"oidc-keycloak","external_id":"43b3b9f9-4100-413f-9797-223b067b6e7e"}]}' \
http://localhost:8001/someServerID/_synapse/admin/v2/users/@anewuser:synapse
```## Automated tests
You need to define `TEST_COMMUNICATION_MATRIX_MOCK_SERVER` in your config.php when running automated tests like PHPUnit and Behat.
Otherwise, most of the Matrix tests will be marked skipped.For example, add the following to your config.php after the `$CFG->wwwroot` line:
```
define('TEST_COMMUNICATION_MATRIX_MOCK_SERVER', "http://localhost:8001/hash" . sha1($CFG->wwwroot));
```## Local development
* Symphony : `wget https://get.symfony.com/cli/installer -O - | bash`
* PHP SQLLite3 : example `sudo apt install php7.4-sqlite3`Check requirements:
cd application
symfony check:requirementsSet up the db:
php bin/console doctrine:database:drop --force
php bin/console doctrine:schema:createRun the project:
symfony server:start --port=8001 --no-tls --allow-http
Debugging:
XDEBUG_SESSION=1 symfony server:start --port=8001 --no-tls --allow-http
Notes:
* The database is intended to be **disposable**. Migrations are not guaranteed to work. Please be prepared to drop and
recreate the database.## Publishing status
Note : if you want to publish on your own repository (being Docker Hub or Git Container Registry), you need to define the
following secrets [following secrets ](https://docs.github.com/en/actions/security-guides/encrypted-secrets):
* DOCKERHUB_OWNER
* DOCKERHUB_TOKEN
* DOCKERHUB_USERNAME
* GH_OWNER[![Docker multiarch publish](https://github.com/moodlehq/matrixsynapse_mock/actions/workflows/build_and_publish.yml/badge.svg)](https://github.com/moodlehq/matrixsynapse_mock/actions/workflows/build_and_publish.yml)