LaravelのPHPUnitで419エラーが発生した場合の対処法

LaravelでHTTPステータスコード419のエラーは、CSRFのエラーです。
CSRFトークンが一致しないときに発生します。

ミドルウェアのVerifyCsrfTokenを無効にすることで、このCSRFエラーを回避できます。

「use WithoutMiddleware」トレイトを使うとテストクラスのミドルウェアを無効にできますが、
VerifyCsrfToken以外のミドルウェアも無効になってしまいます。

class ExampleTest extends TestCase
{
    use WithoutMiddleware;
}

テスト実行時に対象の処理のみVerifyCsrfTokenを無効にするほうが望ましいと思いますので、
以下のように対象のテストに「withoutMiddleware(VerifyCsrfToken::class)」を追加します。

use App\Http\Middleware\VerifyCsrfToken;

class ExampleTest extends TestCase
{
    public function testStore() {
        $this
            ->withoutMiddleware(VerifyCsrfToken::class)
            ->post(route('store'), ['no' => 1])
            ->assertViewIs('index');
    }
}

これで、このテストではVerifyCsrfTokenは無効になり、CSRFエラーは発生しなくなります。

Andrid Studioでビルドしたときに「java.lang.OutOfMemoryError: Java heap space」エラーが発生したときの対策

Andrid Studioでビルドしたときに「java.lang.OutOfMemoryError: Java heap space」エラーが発生したときは、
gradle.propertiesファイルを開き、「org.gradle.jvmargs」の値を変更します。

org.gradle.jvmargs=-Xmx4608m

iOSのAPNs証明書を更新する

iOSのAPNs証明書を更新する手順です。

CSRファイルの作成

キーチェンアクセス.appを開き、メニューから「キーチェンアクセス」→「証明書アシスタント」→「認証局に証明書を要求」を選択します。

「メールアドレス」「通称」を入力し、「ディスクに保存」をチェックして、「続ける」ボタンを押し、CSRファイルを保存します。

CERファイルの作成

Apple Developerにアクセスしてサインインします。

Certificates, Identifiers & Profilesにアクセスします。

「+」ボタンを押して、Certificatesを追加します。

「Services」→「Apple Push Notification service SSL (Sandbox & Production)」をチェックし、「Continue」ボタンを押します。

証明書を作成するアプリの「APP ID」を選択して「Continue」ボタンを押します。

先程キーチェンアクセスで作成したCSRファイルを選択して、「Continue」ボタンを押し、証明書をダウンロードします。

p12ファイルを作成する

ダウンロードしたaps.cerファイルをダブルクリックしてキーチェーンアクセスに証明書を追加します。

キーチェーンアクセスに追加した証明書を右クリックして「Apple Push Services: XXXX”を書き出す」を選択し、保存します。

Firebaseに登録する

Firebase Consoleにアクセスします。

プロジェクトを開き、「プロジェクトの概要」→「プロジェクトの設定」を選択します。

「Cloud Messaging」を選択し、p12ファイルをアップロードして、APNs証明書を更新します。

Androidの通信速度を制限してアプリのテストを行う

通信速度が遅いときのAndroidアプリのテストを行うための方法です。

環境

  • macOS Ventura 13.1
  • Android 13

Network Link Conditionerをインストールする

Macの通信速度を制限できるようにするため「Network Link Conditioner」をインストールします。

Apple DeveloperのMore Downloadsのページ」から
インストールされているXcodeのバージョンにあった「Additional Tools for Xcode」をダウンロードします。

ダウンロードしたdmgファイルを開き、Hardwareフォルダーにある「Network Link Conditioner.prefPane」を実行します。

インストールの確認ダイアログが表示されるので、「インストール」ボタンを押し、インストールします。

インストールが完了すると、「アップルメニュー」→「システム設定」に「Network Link Conditioner」が追加されます。

「Network Link Conditioner」を開き、Profileから帯域を選択してONにすると、帯域の制限がかかります。

Macのインターネット共有を使ってAndroidをインターネットに接続する

Android端末をMac経由でインターネットに接続します。
Macの通信速度は制限できるようになったため、AndroidもMac経由でインターネットに接続すると通信速度が制限されます。

Macの設定

「アップルメニュー」→「システム設定」→「一般」→「共有」を選択します。

「インターネット共有」のⓘをクリックします。

「共有する経路」と「相手のコンピュータでのポート」を選択します。
MacBookはUSB接続の有線LANでインターネットに接続し、AndroidはW-FiでMacBookに接続するため、
「共有する経路」は「USB 10/100/1000 LAN」、「相手のコンピュータでのポート」は「Wi-Fi」を選択します。
「Wi-Fiオプション」ボタンを押し、ネットワークの名前をパスワードを設定します。

「インターネット共有」のチェックを入れ、インターネット共有を開始します。

Androidの設定

AndroidからMacに接続する設定を行います。

「設定」アプリを開き、「ネットワークとインターネット」→「インターネット」を選択します。
一覧表示された接続先の中からMacを選択し、パスワードを入力して、接続します。

通信速度を制限する

Speedtest」などのサービスを使って、通信速度を計測します。

Macの「Network Link Conditioner」で通信速度を変更し、通信速度を計測します。

通信速度が変わっていることを確認します。

以上。