MatrixSynapse/tests
Eric Eastwood 7b67e93d49
Provide more info why we don't have any thumbnails to serve (#13038)
Fix https://github.com/matrix-org/synapse/issues/13016

## New error code and status

### Before

Previously, we returned a `404` for `/thumbnail` which isn't even in the spec.

```json
{
  "errcode": "M_NOT_FOUND",
  "error": "Not found [b'hs1', b'tefQeZhmVxoiBfuFQUKRzJxc']"
}
```

### After

What does the spec say?

> 400: The request does not make sense to the server, or the server cannot thumbnail the content. For example, the client requested non-integer dimensions or asked for negatively-sized images.
>
> *-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixmediav3thumbnailservernamemediaid*

Now with this PR, we respond with a `400` when we don't have thumbnails to serve and we explain why we might not have any thumbnails.

```json
{
    "errcode": "M_UNKNOWN",
    "error": "Cannot find any thumbnails for the requested media ([b'example.com', b'12345']). This might mean the media is not a supported_media_format=(image/jpeg, image/jpg, image/webp, image/gif, image/png) or that thumbnailing failed for some other reason. (Dynamic thumbnails are disabled on this server.)",
}
```

> Cannot find any thumbnails for the requested media ([b'example.com', b'12345']). This might mean the media is not a supported_media_format=(image/jpeg, image/jpg, image/webp, image/gif, image/png) or that thumbnailing failed for some other reason. (Dynamic thumbnails are disabled on this server.)


---

We still respond with a 404 in many other places. But we can iterate on those later and maybe keep some in some specific places after spec updates/clarification: https://github.com/matrix-org/matrix-spec/issues/1122

We can also iterate on the bugs where Synapse doesn't thumbnail when it should in other issues/PRs.
2022-07-15 11:42:21 -05:00
..
api Allow rate limiters to passively record actions they cannot limit (#13253) 2022-07-13 19:09:42 +00:00
app Remove `HomeServer.get_datastore()` (#12031) 2022-02-23 11:04:02 +00:00
appservice Remove remaining bits of groups code. (#12936) 2022-06-01 09:41:25 -04:00
config Reload cache factors from disk on SIGHUP (#12673) 2022-05-11 13:43:22 +00:00
crypto Remove direct refeferences to PyNaCl (use signedjson instead). (#12902) 2022-06-01 07:32:35 -04:00
events Rename storage classes (#12913) 2022-05-31 12:17:50 +00:00
federation Rename test case method to `add_hashes_and_signatures_from_other_server` (#13255) 2022-07-12 18:46:32 +00:00
handlers Async get event cache prep (#13242) 2022-07-15 09:30:46 +00:00
http Fix `destination_is` errors seen in sentry. (#13041) 2022-06-14 18:28:26 +01:00
logging More type hints for `synapse.logging` (#13103) 2022-06-30 13:05:06 +00:00
module_api Additional constants for EDU types. (#12884) 2022-05-27 07:14:36 -04:00
push Speed up `get_unread_event_push_actions_by_room` (#13005) 2022-06-15 15:17:14 +00:00
replication Speed up `get_unread_event_push_actions_by_room` (#13005) 2022-06-15 15:17:14 +00:00
rest Provide more info why we don't have any thumbnails to serve (#13038) 2022-07-15 11:42:21 -05:00
scripts Add some type hints to tests files (#12833) 2022-05-23 11:23:26 +00:00
server_notices Decouple `synapse.api.auth_blocking.AuthBlocking` from `synapse.api.auth.Auth`. (#13021) 2022-06-14 09:51:15 +01:00
state Fix typechecks against twisted trunk (#13061) 2022-06-15 11:49:58 +01:00
storage Use a real room in the notification rotation tests. (#13260) 2022-07-15 08:22:43 -04:00
test_utils Rename storage classes (#12913) 2022-05-31 12:17:50 +00:00
util Move the "email unsubscribe" resource, refactor the macaroon generator & simplify the access token verification logic. (#12986) 2022-06-14 09:12:08 -04:00
__init__.py
server.py annotate tests.server.FakeChannel (#13136) 2022-07-04 18:08:56 +01:00
test_distributor.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_event_auth.py Add support for room version 10 (#13220) 2022-07-13 11:36:02 -07:00
test_federation.py Rip out auth-event reconciliation code (#12943) 2022-07-14 21:52:26 +00:00
test_mau.py Remove remaining bits of groups code. (#12936) 2022-06-01 09:41:25 -04:00
test_metrics.py
test_phone_home.py Add type hints to some tests files (#12371) 2022-04-05 13:54:41 +01:00
test_server.py Extra type annotations in `test_server` (#13124) 2022-06-28 12:12:17 +00:00
test_state.py Don't pull out the full state when storing state (#13274) 2022-07-15 12:59:45 +00:00
test_terms_auth.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_test_utils.py Replace assertEquals and friends with non-deprecated versions. (#12092) 2022-02-28 07:12:29 -05:00
test_types.py Fix `destination_is` errors seen in sentry. (#13041) 2022-06-14 18:28:26 +01:00
test_visibility.py Rename test case method to `add_hashes_and_signatures_from_other_server` (#13255) 2022-07-12 18:46:32 +00:00
unittest.py Rename test case method to `add_hashes_and_signatures_from_other_server` (#13255) 2022-07-12 18:46:32 +00:00
utils.py Type `tests.utils` (#13028) 2022-07-05 15:13:47 +01:00