From 29415e21a08e3cecc29aa9d96e2ada80a2bb3d2e Mon Sep 17 00:00:00 2001 From: Sabrina Demagny Date: Mon, 29 Sep 2025 19:26:05 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(tests)=20fix=20test=20retrieve=20eml?= =?UTF-8?q?=20and=20update=20open=20api=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/core/api/openapi.json | 38 ++++ .../core/tests/api/test_messages_retrieve.py | 2 +- .../src/features/api/gen/messages/messages.ts | 180 ++++++++++++++++++ 3 files changed, 219 insertions(+), 1 deletion(-) diff --git a/src/backend/core/api/openapi.json b/src/backend/core/api/openapi.json index 7880f21d..4c1804dd 100644 --- a/src/backend/core/api/openapi.json +++ b/src/backend/core/api/openapi.json @@ -3061,6 +3061,44 @@ } } }, + "/api/v1.0/messages/{id}/eml/": { + "get": { + "operationId": "messages_eml_retrieve", + "description": "Return the EML file for a message.", + "parameters": [ + { + "in": "path", + "name": "id", + "schema": { + "type": "string", + "format": "uuid", + "description": "primary key for the record as UUID" + }, + "required": true + } + ], + "tags": [ + "messages" + ], + "security": [ + { + "cookieAuth": [] + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Message" + } + } + }, + "description": "" + } + } + } + }, "/api/v1.0/placeholders/": { "get": { "operationId": "placeholders_retrieve", diff --git a/src/backend/core/tests/api/test_messages_retrieve.py b/src/backend/core/tests/api/test_messages_retrieve.py index 357e7c4a..547cb09c 100644 --- a/src/backend/core/tests/api/test_messages_retrieve.py +++ b/src/backend/core/tests/api/test_messages_retrieve.py @@ -72,4 +72,4 @@ class TestRetrieveMessage: client.force_authenticate(user=mailbox_access.user) response = client.get(message_url_eml) assert response.status_code == status.HTTP_200_OK - assert response.data == message.blob.get_content() + assert response.content == message.blob.get_content() diff --git a/src/frontend/src/features/api/gen/messages/messages.ts b/src/frontend/src/features/api/gen/messages/messages.ts index 8fbc1697..f6e839ea 100644 --- a/src/frontend/src/features/api/gen/messages/messages.ts +++ b/src/frontend/src/features/api/gen/messages/messages.ts @@ -1047,6 +1047,186 @@ export const useMessagesDestroy = ( return useMutation(mutationOptions, queryClient); }; +/** + * Return the EML file for a message. + */ +export type messagesEmlRetrieveResponse200 = { + data: Message; + status: 200; +}; + +export type messagesEmlRetrieveResponseComposite = + messagesEmlRetrieveResponse200; + +export type messagesEmlRetrieveResponse = + messagesEmlRetrieveResponseComposite & { + headers: Headers; + }; + +export const getMessagesEmlRetrieveUrl = (id: string) => { + return `/api/v1.0/messages/${id}/eml/`; +}; + +export const messagesEmlRetrieve = async ( + id: string, + options?: RequestInit, +): Promise => { + return fetchAPI(getMessagesEmlRetrieveUrl(id), { + ...options, + method: "GET", + }); +}; + +export const getMessagesEmlRetrieveQueryKey = (id: string) => { + return [`/api/v1.0/messages/${id}/eml/`] as const; +}; + +export const getMessagesEmlRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + request?: SecondParameter; + }, +) => { + const { query: queryOptions, request: requestOptions } = options ?? {}; + + const queryKey = queryOptions?.queryKey ?? getMessagesEmlRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => messagesEmlRetrieve(id, { signal, ...requestOptions }); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type MessagesEmlRetrieveQueryResult = NonNullable< + Awaited> +>; +export type MessagesEmlRetrieveQueryError = unknown; + +export function useMessagesEmlRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + request?: SecondParameter; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useMessagesEmlRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + request?: SecondParameter; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useMessagesEmlRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + request?: SecondParameter; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useMessagesEmlRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + request?: SecondParameter; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getMessagesEmlRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + query.queryKey = queryOptions.queryKey; + + return query; +} + /** * Send a previously created draft message.