You've already forked agentic-coding-workflow
bugfix
This commit is contained in:
@@ -41,16 +41,50 @@ func TestMaterializeAgentHome(t *testing.T) {
|
||||
cfg: SupervisorConfig{AgentHomesDir: root},
|
||||
}
|
||||
|
||||
home, err := s.materializeAgentHome(context.Background(), kind)
|
||||
sess := &Session{ID: uuid.New(), UserID: uuid.New()}
|
||||
home, err := s.materializeAgentHome(context.Background(), sess, kind)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, filepath.Join(root, kind.ID.String()), home)
|
||||
// per-user home:<root>/<user_id>/<kind_id>
|
||||
assert.Equal(t, filepath.Join(root, sess.UserID.String(), kind.ID.String()), home)
|
||||
|
||||
got, err := os.ReadFile(filepath.Join(home, ".codex", "config.toml"))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, content, got)
|
||||
|
||||
// 二次物化幂等(覆写)
|
||||
_, err = s.materializeAgentHome(context.Background(), kind)
|
||||
_, err = s.materializeAgentHome(context.Background(), sess, kind)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestMaterializeAgentHome_PerUserIsolation(t *testing.T) {
|
||||
t.Parallel()
|
||||
enc, err := crypto.NewEncryptor([]byte("0123456789abcdef0123456789abcdef"))
|
||||
require.NoError(t, err)
|
||||
|
||||
kind := &AgentKind{ID: uuid.New(), ClientType: ClientCodex}
|
||||
encrypted, err := enc.Encrypt([]byte("x = 1"))
|
||||
require.NoError(t, err)
|
||||
|
||||
root := t.TempDir()
|
||||
s := &Supervisor{
|
||||
repo: cfgRepoStub{files: []*ConfigFile{{AgentKindID: kind.ID, RelPath: ".codex/config.toml", EncryptedContent: encrypted}}},
|
||||
crypto: enc,
|
||||
cfg: SupervisorConfig{AgentHomesDir: root},
|
||||
}
|
||||
|
||||
// 同一 agent-kind、两个不同用户 → 两个互不相同的 home 目录。
|
||||
sessA := &Session{ID: uuid.New(), UserID: uuid.New()}
|
||||
sessB := &Session{ID: uuid.New(), UserID: uuid.New()}
|
||||
homeA, err := s.materializeAgentHome(context.Background(), sessA, kind)
|
||||
require.NoError(t, err)
|
||||
homeB, err := s.materializeAgentHome(context.Background(), sessB, kind)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.NotEqual(t, homeA, homeB)
|
||||
// 两个 home 各自物化了配置文件。
|
||||
_, err = os.Stat(filepath.Join(homeA, ".codex", "config.toml"))
|
||||
require.NoError(t, err)
|
||||
_, err = os.Stat(filepath.Join(homeB, ".codex", "config.toml"))
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
@@ -67,7 +101,8 @@ func TestMaterializeAgentHome_RejectsEscape(t *testing.T) {
|
||||
crypto: enc,
|
||||
cfg: SupervisorConfig{AgentHomesDir: t.TempDir()},
|
||||
}
|
||||
_, err = s.materializeAgentHome(context.Background(), kind)
|
||||
sess := &Session{ID: uuid.New(), UserID: uuid.New()}
|
||||
_, err = s.materializeAgentHome(context.Background(), sess, kind)
|
||||
require.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "escapes agent home")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user