3

現在、Rails アプリケーションが無効な UTF-8 データ (\xFF など) を含む POST メソッドを適切に処理できるようにしようとしています (ラック ミドルウェアを使用)。

残念ながら、このためのテストを作成することは非常に困難です。

私が試したことの1つは、Capybaraを使用してフォームフィールドの1つに無効なUTF-8を入力して送信することですが、これにより、テスト出力の中でターミナルに次の出力が発生し、Railsによって出力されません!

エラー : 文字列が utf-8 ではありません

400 エラー (または同様のもの) が表示されることを検証するために、無効な UTF-8 データを含む POST をエミュレートできる別の方法はありますか?

注意: アプリケーションの別の実行中のインスタンスに対して実行する必要がないようにしています (たとえば、それに対して「curl」を使用する) が、Capybara (または同様のもの) で直接実行するだけです。

4

4 に答える 4

2

フォームに無効な UTF-8 を入力するとはどういう意味ですか? フォームに入力する文字にはエンコードがなく、フォームの送信時にエンコードされます。この文は、すべての文字をエンコードできない一部のエンコーディングでは意味がありますが、UTF-8 では可能です。

ブラウザからサーバーにバイトを送信したい場合は\xFF、そのブラウザの開発者ツールを引き出し、フォームの属性を編集してフォームのどこかにaccept-charset="ISO-8859-1"書き込み、送信を押すだけです。ÿは、UTF-8 としてデコードできないÿとしてエンコードされます。%FF

http://i.imgur.com/0KCpa9p.png

ここに画像の説明を入力

于 2013-03-14T10:12:06.663 に答える
2

無効な utf-8 データを含む添付ファイルを投稿することもできますが、これはフォーム自体にも依存します。ただし、かなりあいまいなエッジケースをテストしているため、開発/テスト環境でのみアクセスできるフォームを常に作成でき、ルートもテストでのみ使用できます。

これにより、少なくとも、無効な utf-8 データの処理を安全なテストのみの方法で処理するコードをターゲットにすることができます。

于 2013-03-11T16:43:25.173 に答える