MCPcopy Create free account
hub / github.com/chainloop-dev/chainloop / TestBuildJSONFormat

Function TestBuildJSONFormat

internal/aiagentconfig/builder_test.go:121–149  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

119}
120
121func TestBuildJSONFormat(t *testing.T) {
122 rootDir := t.TempDir()
123 require.NoError(t, os.WriteFile(filepath.Join(rootDir, "CLAUDE.md"), []byte("content"), 0o600))
124
125 data, err := Build(rootDir, []DiscoveredFile{
126 {Path: "CLAUDE.md", Kind: ConfigFileKindInstruction},
127 }, "claude", nil)
128 require.NoError(t, err)
129
130 // Verify it marshals to valid JSON with top-level fields (no envelope)
131 jsonData, err := json.Marshal(data)
132 require.NoError(t, err)
133
134 var raw map[string]any
135 require.NoError(t, json.Unmarshal(jsonData, &raw))
136
137 assert.NotNil(t, raw["agent"])
138 assert.NotNil(t, raw["config_hash"])
139 assert.NotNil(t, raw["config_files"])
140 // Ensure no envelope fields
141 assert.Nil(t, raw["chainloop.material.evidence.id"])
142 assert.Nil(t, raw["data"])
143
144 // Verify kind is present in config_files
145 files := raw["config_files"].([]any)
146 require.Len(t, files, 1)
147 file := files[0].(map[string]any)
148 assert.Equal(t, "instruction", file["kind"])
149}
150
151func TestBuildRejectsSymlinksEscapingRoot(t *testing.T) {
152 rootDir := t.TempDir()

Callers

nothing calls this directly

Calls 1

BuildFunction · 0.85

Tested by

no test coverage detected