MCPcopy Index your code
hub / github.com/coder/coder / TestGetChatFile

Function TestGetChatFile

coderd/exp_chats_test.go:9946–10095  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

9944}
9945
9946func TestGetChatFile(t *testing.T) {
9947 t.Parallel()
9948
9949 t.Run("Success", func(t *testing.T) {
9950 t.Parallel()
9951 ctx := testutil.Context(t, testutil.WaitLong)
9952 client := newChatClient(t)
9953 firstUser := coderdtest.CreateFirstUser(t, client.Client)
9954
9955 data := append([]byte{0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A}, make([]byte, 64)...)
9956 uploaded, err := client.UploadChatFile(ctx, firstUser.OrganizationID, "image/png", "test.png", bytes.NewReader(data))
9957 require.NoError(t, err)
9958
9959 got, contentType, err := client.GetChatFile(ctx, uploaded.ID)
9960 require.NoError(t, err)
9961 require.Equal(t, "image/png", contentType)
9962 require.Equal(t, data, got)
9963 })
9964
9965 t.Run("CacheHeaders", func(t *testing.T) {
9966 t.Parallel()
9967 ctx := testutil.Context(t, testutil.WaitLong)
9968 client := newChatClient(t)
9969 firstUser := coderdtest.CreateFirstUser(t, client.Client)
9970
9971 data := append([]byte{0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A}, make([]byte, 64)...)
9972 uploaded, err := client.UploadChatFile(ctx, firstUser.OrganizationID, "image/png", "test.png", bytes.NewReader(data))
9973 require.NoError(t, err)
9974
9975 res, err := client.Request(ctx, http.MethodGet,
9976 fmt.Sprintf("/api/experimental/chats/files/%s", uploaded.ID), nil)
9977 require.NoError(t, err)
9978 defer res.Body.Close()
9979 require.Equal(t, http.StatusOK, res.StatusCode)
9980 require.Equal(t, "private, max-age=31536000, immutable", res.Header.Get("Cache-Control"))
9981 require.Equal(t, "nosniff", res.Header.Get("X-Content-Type-Options"))
9982 require.Contains(t, res.Header.Get("Content-Disposition"), "inline")
9983 require.Contains(t, res.Header.Get("Content-Disposition"), "test.png")
9984 })
9985
9986 t.Run("PDFServedAsAttachment", func(t *testing.T) {
9987 t.Parallel()
9988 ctx := testutil.Context(t, testutil.WaitLong)
9989 client := newChatClient(t)
9990 firstUser := coderdtest.CreateFirstUser(t, client.Client)
9991
9992 uploaded, err := client.UploadChatFile(ctx, firstUser.OrganizationID, "application/pdf", "report.pdf", bytes.NewReader([]byte("%PDF-1.7\n")))
9993 require.NoError(t, err)
9994
9995 res, err := client.Request(ctx, http.MethodGet,
9996 fmt.Sprintf("/api/experimental/chats/files/%s", uploaded.ID), nil)
9997 require.NoError(t, err)
9998 defer res.Body.Close()
9999 require.Equal(t, http.StatusOK, res.StatusCode)
10000 require.Equal(t, "application/pdf", res.Header.Get("Content-Type"))
10001 require.Equal(t, "nosniff", res.Header.Get("X-Content-Type-Options"))
10002
10003 disposition, params, err := mime.ParseMediaType(res.Header.Get("Content-Disposition"))

Callers

nothing calls this directly

Calls 15

GetChatFileMethod · 0.95
ContextFunction · 0.92
CreateFirstUserFunction · 0.92
ReadBodyAsErrorFunction · 0.92
CreateAnotherUserFunction · 0.92
ScopedRoleAgentsAccessFunction · 0.92
NewExperimentalClientFunction · 0.92
requireSDKErrorFunction · 0.85
UploadChatFileMethod · 0.80
newChatClientFunction · 0.70
RunMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected