Как включить CORS из CircleCI для поддержки автоматического тестирования - PullRequest
0 голосов
/ 13 февраля 2020

Недавно у меня начались проблемы с CORS, так как многие имели удовольствие до меня. Я смог решить проблему для моей локальной среды, используя следующие настройки. В настоящее время приложение все еще находится в разработке, поэтому я знаю, что, вероятно, следует ограничить использование CORS Origins перед выпуском приложения.

CORS-связующее ПО

    /**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    header('Access-Control-Allow-Origin: *');
    //ALLOW OPTIONS METHOD
    $headers = [
        'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
        'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin, Authorization',
    ];

    if ($request->getMethod() == "OPTIONS"){
        //The client-side application can set only headers allowed in Access-Control-Allow-Headers
        return response()->json('OK',200, $headers);
    }

    $response = $next($request);
    foreach ($headers as $key => $value) {
        $response->header($key, $value);
    }

    return $response;
}

Ядро

protected $middleware = [
    //Other middlewares
    \App\Http\Middleware\Cors::class,
];

Это решило проблему, с которой я столкнулся в CORS в моя местная среда (усадьба). К сожалению, сейчас мои тесты не пройдены в CircleCI. Поэтому вопрос заключается в том, как я могу включить CORS, чтобы мои тесты снова запускались.

Пример теста

public function test_we_can_retrieve_all_places() {
    $response = $this->get('api/places');
    $response
        ->assertStatus(200);
}

Результат теста: Ожидаемый код состояния 200, но получено 500. Не удалось подтвердить, что false - это правда.

1 Ответ

0 голосов
/ 21 февраля 2020

Если кто-то еще столкнулся с ошибкой, упомянутой выше, приведенные ниже шаги помогли мне решить мою проблему.

Сначала я добавил dd($respone) в свой тест, который вывел довольно много вещей, которые были не слишком полезны. Но это сбросит и возможные исключения. Одним из исключений, которое мне удалось обнаружить, было приведенное ниже.

Laravel phpunit Cannot modify header information - headers already sent

И что я сделал, чтобы разрешить это, так это отрегулировав приведенный выше бит кода следующим образом:

//ALLOW OPTIONS METHOD
$headers = [
    'Access-Control-Allow-Origin' => '*',
    'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
    'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin, Authorization',
];

И это решило мою ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...