Laravelでphpunitのhttpアクセスが302になる原因

Author:

Laravelでphpunit上からhttpアクセスさせようとしたら、302が返ってくるんですよ。
色々とurl変えても、存在しないurlにしてもそれでも302。
何でだ?と思って調べてみたら、やっぱり原因は存在。

こんな感じに書いたとしても、

    $response = $this->get('http://aaaabbb/');

404とかじゃなくてなぜか302になるのです。
Illuminate側のソースを見ても、やっぱりresponseCode見てるだけ。
curlで叩くと当然ながらホスト名が見つからないと言われる。

うーむ。
もう少し見ると、Illuminate側を見るとdumpという関数があるではないか。
叩いてみよう。

var_dump($response->dump());

結果は、

<!DOCTYPE html>\n
<html>\n
    <head>\n
        <meta charset="UTF-8" />\n
        <meta http-equiv="refresh" content="1;url=http://aaaabbb/login" />\n
\n
        <title>Redirecting to http://aaaabbb/login</title>\n
    </head>\n
    <body>\n
        Redirecting to <a href="http://aaaabbb/login">http://aaaabbb/login</a>.\n
    </body>\n
</html>

ええー。loginってなんですかー。
どうやらlaravel:authが悪さしているようですな。
外部にアクセスしたいならcurlでダイレクトに呼べってことか。
んでassetEqualとかで判断かね?

とりあえず原因が分かってよかったよかった。

Share on Facebook
Pocket