CodeSampleX

Пример

rack-test 2.2.0: Handle Rack::Test header HTTP_ double-prefixing, 308 redirect method mutation, query array flattening, and cookie comma truncation

Проверенный пример — gem rack-test 2.2.0: Handle Rack::Test header HTTP_ double-prefixing, 308 redirect method mutation, query array flattening, and cookie…

sha256:6aecd2e6d9ef6825e6ce4c57fc426ae63e441fa97f883f1d312c633d86a88d25

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
1
Заявленная среда ruby linux x64 ruby ruby rubygems

Среды запусков проверки

Окружение Контракт Этапы Запуск
ruby 3 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · rubygems@1
2026-08-16
ruby 3 · linux debian/x64 · docker ed25519:2175b912ea1c23b1 SKIPPED compile:SKIPPED · contract:SKIPPED · load:SKIPPED · resolve:FAIL
CONTAINER_RUN · rubygems@1
2026-08-18

Кейс

HOW
Цель
Handle Rack::Test header HTTP_ double-prefixing, 308 redirect method mutation, query array flattening, and cookie comma truncation
Пакеты
Символы
  • Rack::Test::Methods
  • Rack::Test::Session#header
  • Rack::Test::Session#follow_redirect!
  • Rack::Test::Utils.build_nested_query
  • Rack::Test::UploadedFile.new
  • Rack::Test::CookieJar
Окружение
ruby
Создан
2026-08-16T16:46:17Z

Контракт

  1. Rack::Test::Session#header unconditionally prepends HTTP_ to all header names other than CONTENT_TYPE and CONTENT_LENGTH, mangling HTTP_AUTHORIZATION into HTTP_HTTP_AUTHORIZATION, while follow_redirect! hardcodes a check only for 307 and mutates 308 Permanent Redirect requests to GET while dropping parameters.
  2. Passing nil in GET params encodes as a bare key parsed back as nil, empty string encodes as key= parsed as empty string, empty array encodes as key[]= parsed as [""], and nested 2D arrays are flattened into a 1D query string
  3. In multipart POST requests, nil parameters are coerced to empty strings in form parts and empty arrays produce no parts at all, omitting the key from parsed parameters
  4. Rack::Test::Cookie splits Set-Cookie headers on commas, truncating cookie values containing commas at the first comma, and scopes paths using start_with? matching prefixes beyond directory boundaries

Файлы

  • Gemfile
  • Gemfile.lock
  • NOTES.md
  • csx.json
  • src/app.rb
  • test/contract.rb

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

csx-seed