| 660 | } |
| 661 | |
| 662 | func TestLockMetadataToJSONWithAgentFields(t *testing.T) { |
| 663 | metadata := &LockMetadata{ |
| 664 | SchemaVersion: LockSchemaV3, |
| 665 | FrontmatterHash: "test123", |
| 666 | Strict: true, |
| 667 | AgentID: "claude", |
| 668 | AgentModel: "claude-sonnet-4.5", |
| 669 | DetectionAgentID: "copilot", |
| 670 | DetectionAgentModel: "gpt-5.1-codex-mini", |
| 671 | EngineVersions: map[string]string{ |
| 672 | "claude": "2.1.160", |
| 673 | "copilot": "1.0.57", |
| 674 | "copilot-sdk": "1.0.0", |
| 675 | }, |
| 676 | AgentImageRunner: `["self-hosted","linux"]`, |
| 677 | } |
| 678 | |
| 679 | json, err := metadata.ToJSON() |
| 680 | require.NoError(t, err) |
| 681 | assert.Contains(t, json, `"schema_version":"v3"`) |
| 682 | assert.Contains(t, json, `"frontmatter_hash":"test123"`) |
| 683 | assert.Contains(t, json, `"strict":true`) |
| 684 | assert.Contains(t, json, `"agent_id":"claude"`) |
| 685 | assert.Contains(t, json, `"agent_model":"claude-sonnet-4.5"`) |
| 686 | assert.Contains(t, json, `"detection_agent_id":"copilot"`) |
| 687 | assert.Contains(t, json, `"detection_agent_model":"gpt-5.1-codex-mini"`) |
| 688 | assert.Contains(t, json, `"engine_versions":{"claude":"2.1.160","copilot":"1.0.57","copilot-sdk":"1.0.0"}`) |
| 689 | assert.Contains(t, json, `"agent_image_runner":"[\"self-hosted\",\"linux\"]"`) |
| 690 | } |
| 691 | |
| 692 | func TestExtractMetadataWithAgentFields(t *testing.T) { |
| 693 | content := `# gh-aw-metadata: {"schema_version":"v3","frontmatter_hash":"abc123","strict":true,"agent_id":"copilot","agent_model":"gpt-5","detection_agent_id":"copilot","detection_agent_model":"gpt-5.1-codex-mini","engine_versions":{"copilot":"1.0.57","claude":"2.1.160","copilot-sdk":"1.0.0"},"agent_image_runner":"[\"self-hosted\",\"linux\"]"} |