Finalize alpha9 release safeguards
This commit is contained in:
@@ -37,19 +37,15 @@ class ExampleTest < Minitest::Test
|
||||
|
||||
def test_example_uses_current_fail_closed_permission_rules
|
||||
refute_match(/\{\s*type:/, SOURCE)
|
||||
assert_includes SOURCE, 'sandbox_directory = sandbox_directory_for(conversation)'
|
||||
assert_includes SOURCE, 'directory: sandbox_directory.to_s'
|
||||
assert_includes SOURCE, 'working_directory = File.realpath(ENV.fetch("OPENCODE_WORKING_DIRECTORY"))'
|
||||
assert_includes SOURCE, "directory: working_directory"
|
||||
assert_includes SOURCE, '{ permission: "*", pattern: "*", action: "deny" }'
|
||||
refute_includes SOURCE, 'action: "allow"'
|
||||
assert_includes SOURCE, 'ENV.fetch("OPENCODE_SANDBOX_ROOT")'
|
||||
assert_includes SOURCE, "root = root.realpath"
|
||||
assert_includes SOURCE, 'directory.join(".git").exist?'
|
||||
assert_includes SOURCE, 'identifier.match?(/\A[0-9A-Za-z_-]+\z/)'
|
||||
assert_includes SOURCE, "stat = directory.lstat"
|
||||
assert_includes SOURCE, "Conversation sandbox escapes its root"
|
||||
assert_includes SOURCE, "OPENCODE_DISABLE_PROJECT_CONFIG=1"
|
||||
refute_includes SOURCE, "ConversationSandbox"
|
||||
assert_includes SOURCE, "permissions only when it creates a session"
|
||||
assert_match(/recreate persisted sessions/i, SOURCE)
|
||||
refute_includes SOURCE, 'Sandbox: /sandbox/#{conversation.id}'
|
||||
refute_includes SOURCE, "Sandbox:"
|
||||
end
|
||||
|
||||
def test_example_permission_order_denies_every_tool
|
||||
|
||||
@@ -48,23 +48,23 @@ class ReadmeTest < Minitest::Test
|
||||
assert_includes @readme, %(ref: "#{client_ref}")
|
||||
assert_includes @readme,
|
||||
"`opencode-rails` #{Opencode::RAILS_VERSION} is a release candidate"
|
||||
assert_includes @readme, "pushing a `v*` tag does not guarantee publication"
|
||||
assert_match(/pushing a\s+`v\*` tag does not guarantee publication/, @readme)
|
||||
assert_includes @readme, "pending trusted publisher for gem `opencode-rails`"
|
||||
assert_includes @readme, "workflow `release.yml`"
|
||||
assert_includes @readme, "environment `release`"
|
||||
end
|
||||
|
||||
def test_quickstart_uses_current_fail_closed_permission_rules
|
||||
refute_match(/\{\s*type:/, @quickstart)
|
||||
assert_includes @quickstart, 'sandbox_directory = sandbox_directory_for(conversation)'
|
||||
assert_includes @quickstart, 'directory: sandbox_directory.to_s'
|
||||
assert_includes @quickstart,
|
||||
'working_directory = File.realpath(ENV.fetch("OPENCODE_WORKING_DIRECTORY"))'
|
||||
assert_includes @quickstart, "directory: working_directory"
|
||||
assert_includes @quickstart, '{ permission: "*", pattern: "*", action: "deny" }'
|
||||
refute_includes @quickstart, 'action: "allow"'
|
||||
assert_includes @quickstart, 'ENV.fetch("OPENCODE_SANDBOX_ROOT")'
|
||||
assert_includes @quickstart, "root = root.realpath"
|
||||
assert_includes @quickstart, 'directory.join(".git").exist?'
|
||||
assert_includes @quickstart, 'identifier.match?(/\A[0-9A-Za-z_-]+\z/)'
|
||||
assert_includes @quickstart, "stat = directory.lstat"
|
||||
assert_includes @quickstart, "Conversation sandbox escapes its root"
|
||||
assert_includes @readme, "must be outside every Git worktree"
|
||||
assert_includes @readme, "same absolute path in the OpenCode server"
|
||||
refute_includes @quickstart, "ConversationSandbox"
|
||||
assert_includes @readme, "same absolute path in Rails and OpenCode"
|
||||
assert_includes @readme, "`OPENCODE_DISABLE_PROJECT_CONFIG=1`"
|
||||
assert_includes @readme, "before session permissions exist"
|
||||
assert_match(/intentionally grants no\s+filesystem tools/, @readme)
|
||||
assert_includes @readme, "permissions only when it creates a session"
|
||||
assert_includes @readme, "recreate persisted sessions"
|
||||
|
||||
@@ -64,12 +64,18 @@ class ReleaseWorkflowTest < Minitest::Test
|
||||
commands = verify_job.fetch("steps").filter_map { |step| step["run"] }.join("\n")
|
||||
assert_includes commands, "bundle exec rake test"
|
||||
assert_includes commands, "gem build opencode-rails.gemspec"
|
||||
assert_includes commands, "bundle exec ruby -e"
|
||||
assert_includes commands, "bundle exec ruby -ropencode/version"
|
||||
assert_includes commands, 'GEM_HOME="${RUNNER_TEMP}/opencode-rails-${{ matrix.ruby }}"'
|
||||
assert_includes commands, 'client_gem="$client_dir/opencode-ruby-${client_version}.gem"'
|
||||
assert_includes commands, 'GEM_PATH="${GEM_HOME}"'
|
||||
refute_includes commands, "Gem.path.join"
|
||||
assert_includes commands, 'client_gem="$registry_dir/opencode-ruby-${client_version}.gem"'
|
||||
assert_includes commands, 'rails_gem="opencode-rails-$(ruby -Ilib -ropencode/rails_version'
|
||||
assert_includes commands, 'gem install --local "$client_gem" --no-document'
|
||||
assert_includes commands, 'gem install --local "$rails_gem" --no-document'
|
||||
assert_includes commands, 'gem fetch opencode-ruby --version "$client_version" --prerelease'
|
||||
assert_includes commands, "--clear-sources --source https://rubygems.org"
|
||||
assert_includes commands,
|
||||
'gem install "$client_gem" --no-document --clear-sources --source https://rubygems.org'
|
||||
assert_includes commands,
|
||||
'gem install "$rails_gem" --no-document --clear-sources --source https://rubygems.org'
|
||||
assert_includes commands, "Gem.loaded_specs.fetch(name).full_gem_path"
|
||||
assert_includes commands, "ruby -ropencode-rails"
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user