(t *testing.T)
| 1833 | } |
| 1834 | |
| 1835 | func TestUpdateChatHeartbeatsRequiresOwnership(t *testing.T) { |
| 1836 | t.Parallel() |
| 1837 | |
| 1838 | db, ps := dbtestutil.NewDB(t) |
| 1839 | replica := newTestServer(t, db, ps, uuid.New()) |
| 1840 | |
| 1841 | ctx := testutil.Context(t, testutil.WaitLong) |
| 1842 | user, org, model := seedChatDependencies(t, db) |
| 1843 | |
| 1844 | chat, err := replica.CreateChat(ctx, chatd.CreateOptions{ |
| 1845 | OrganizationID: org.ID, |
| 1846 | OwnerID: user.ID, |
| 1847 | Title: "heartbeat-ownership", |
| 1848 | ModelConfigID: model.ID, |
| 1849 | InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("hello")}, |
| 1850 | }) |
| 1851 | require.NoError(t, err) |
| 1852 | |
| 1853 | workerID := uuid.New() |
| 1854 | chat, err = db.UpdateChatStatus(ctx, database.UpdateChatStatusParams{ |
| 1855 | ID: chat.ID, |
| 1856 | Status: database.ChatStatusRunning, |
| 1857 | WorkerID: uuid.NullUUID{UUID: workerID, Valid: true}, |
| 1858 | StartedAt: sql.NullTime{Time: time.Now(), Valid: true}, |
| 1859 | HeartbeatAt: sql.NullTime{Time: time.Now(), Valid: true}, |
| 1860 | }) |
| 1861 | require.NoError(t, err) |
| 1862 | |
| 1863 | // Wrong worker_id should return no IDs. |
| 1864 | ids, err := db.UpdateChatHeartbeats(ctx, database.UpdateChatHeartbeatsParams{ |
| 1865 | IDs: []uuid.UUID{chat.ID}, |
| 1866 | WorkerID: uuid.New(), |
| 1867 | Now: time.Now(), |
| 1868 | }) |
| 1869 | require.NoError(t, err) |
| 1870 | require.Empty(t, ids) |
| 1871 | |
| 1872 | // Correct worker_id should return the chat's ID. |
| 1873 | ids, err = db.UpdateChatHeartbeats(ctx, database.UpdateChatHeartbeatsParams{ |
| 1874 | IDs: []uuid.UUID{chat.ID}, |
| 1875 | WorkerID: workerID, |
| 1876 | Now: time.Now(), |
| 1877 | }) |
| 1878 | require.NoError(t, err) |
| 1879 | require.Len(t, ids, 1) |
| 1880 | require.Equal(t, chat.ID, ids[0]) |
| 1881 | } |
| 1882 | |
| 1883 | func TestCreateChatPersistsAPIKeyIDOnInitialUserMessage(t *testing.T) { |
| 1884 | t.Parallel() |
nothing calls this directly
no test coverage detected