(t *testing.T)
| 9944 | } |
| 9945 | |
| 9946 | func 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")) |
nothing calls this directly
no test coverage detected