Harden alpha8 publication safety
This commit is contained in:
@@ -7,6 +7,23 @@ require "test_helper"
|
||||
# coverage — including ActiveStorage attachment, Transform application,
|
||||
# error reporting via Opencode::ErrorReporter — lives in the host app.
|
||||
class Opencode::MessageArtifactsTest < Minitest::Test
|
||||
Message = Struct.new(:id, keyword_init: true)
|
||||
Sandbox = Struct.new(:entries, keyword_init: true) do
|
||||
def exists? = true
|
||||
def files(after: nil) = entries
|
||||
end
|
||||
SandboxEntry = Struct.new(:basename, :attached, keyword_init: true) do
|
||||
def as_artifact
|
||||
self.attached = true
|
||||
raise "destination must not use the identity attachment path"
|
||||
end
|
||||
end
|
||||
|
||||
class Transform < Opencode::Transform
|
||||
def source_filename = "source.json"
|
||||
def destination_filename = "rendered.html"
|
||||
end
|
||||
|
||||
def test_initialize_takes_message_feature_and_optional_transforms
|
||||
params = Opencode::MessageArtifacts.instance_method(:initialize).parameters
|
||||
by_kind = params.group_by(&:first).transform_values { |list| list.map(&:last) }
|
||||
@@ -23,4 +40,17 @@ class Opencode::MessageArtifactsTest < Minitest::Test
|
||||
assert_equal [ :attach_from ], Opencode::MessageArtifacts.instance_methods(false),
|
||||
"MessageArtifacts's only public verb is #attach_from"
|
||||
end
|
||||
|
||||
def test_agent_authored_transform_destination_never_uses_default_attachment
|
||||
entry = SandboxEntry.new(basename: "rendered.html", attached: false)
|
||||
artifacts = Opencode::MessageArtifacts.new(
|
||||
message: Message.new(id: 1),
|
||||
feature: "test",
|
||||
transforms: [ Transform.new ]
|
||||
)
|
||||
|
||||
artifacts.attach_from(sandbox: Sandbox.new(entries: [ entry ]))
|
||||
|
||||
refute entry.attached
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user