OpenID 用のフラスコ アプリの単体テストを作成しようとしていますが、呼び出し時に
oid.try_login(<oid provider>, <params>)
エラーが発生します:
RuntimeError:
<class 'flask.testing.FlaskClient'>
外部ターゲットへのリダイレクトをサポートしていません
そこで、すべての優れた SO ユーザーと同様に、いくつかの解決策を探しました。
- NoExtRef フラスコ拡張機能を使用して oid プロバイダーを偽装します。私はflask-openidがoid URLをいじっていると仮定しているので、これがアプリレベルで可能かどうかはわかりません(そして、試してみると元のページにリダイレクトされました)。しかし、ユニットテストのために厳密にコードを変更しているので、これはかなり醜いようです。
- 独自の oid サーバーを作成しますが、これはまだ外部リダイレクトである可能性があります (十分に必死になったらすぐにこれを試します)。
もう 1 つの方法は、ログイン用の単体テストの作成を無視し、すばらしい Flask テスト フレームワークを使用して Flask.g にユーザーを設定することだと思います。しかし、ログインユニットテストを維持したいと思います。