X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/c781f79f3c8cb9a7577ee1574d196988da2719b3..42b4acd4ba70d3c12da4513d139717e592eefe4a:/daemon_children_test.go diff --git a/daemon_children_test.go b/daemon_children_test.go index b377b4d..8fcae36 100644 --- a/daemon_children_test.go +++ b/daemon_children_test.go @@ -99,6 +99,37 @@ func TestDaemonToolsCreateAndTellAChildDuringATurn(t *testing.T) { }, 5*time.Second, time.Millisecond) } +func TestRuntimeChildAcceptsNotificationsByItsPermanentID(t *testing.T) { + test := newDaemonChildrenTest(t) + test.server.reply = func(w http.ResponseWriter, _ ModelFakeCall) { + modelWriteEvents(w, modelCompletedEvent([]any{modelMessageItem("")}, 100, 0, 5)) + } + + _, err := test.runtime.Create("Garden", "Keep garden plans.") + require.NoError(t, err) + + child := test.runtime.messages.Child(test.root.agent.config.Name, "Garden") + require.NotNil(t, child) + + receipt, err := test.runtime.messages.Notify(&NotifyInput{ + AgentID: child.agent.config.ID, + Source: "check", + ID: "runtime-child", + Text: "A new result.", + }) + require.NoError(t, err) + require.Equal(t, "accepted", receipt.Status) + require.Eventually(t, func() bool { + return child.memory.Len() == 1 + }, 10*time.Second, time.Millisecond) + require.Zero(t, test.root.memory.Len()) + + logged, err := child.memory.Message(0) + require.NoError(t, err) + require.Equal(t, "work", logged.Kind) + require.Contains(t, logged.Text, "Untrusted external data") +} + func TestChildCreationRefusesUsedNames(t *testing.T) { test := newDaemonChildrenTest(t) box := test.root.tools @@ -127,23 +158,23 @@ func TestChildCreationAcceptsAreaNames(t *testing.T) { child string }{ { - name: "house area", + name: "accepts house area", child: "House", }, { - name: "calendar area", + name: "accepts calendar area", child: "Calendar", }, { - name: "two letters", + name: "accepts two letters", child: "Ab", }, { - name: "capital letters after the first", + name: "accepts capital letters after the first", child: "ABcD", }, { - name: "thirty-two letters", + name: "accepts thirty-two letters", child: "A" + strings.Repeat("b", 31), }, } @@ -172,43 +203,43 @@ func TestChildCreationRefusesInvalidAreaNames(t *testing.T) { child string }{ { - name: "empty name", + name: "refuses empty name", child: "", }, { - name: "one letter", + name: "refuses one letter", child: "H", }, { - name: "thirty-three letters", + name: "refuses thirty-three letters", child: "A" + strings.Repeat("b", 32), }, { - name: "lowercase initial", + name: "refuses lowercase initial", child: "house", }, { - name: "two words", + name: "refuses two words", child: "My House", }, { - name: "digit", + name: "refuses digit", child: "House2", }, { - name: "path", + name: "refuses path", child: "../House", }, { - name: "punctuation", + name: "refuses punctuation", child: "House-", }, { - name: "non-ASCII initial", + name: "refuses non-ASCII initial", child: "\u00c1rea", }, { - name: "non-ASCII remainder", + name: "refuses non-ASCII remainder", child: "Hous\u00e9", }, }