create([ 'mac_address' => '00:11:22:33:44:55', 'api_key' => 'test-api-key', 'current_screen_image' => 'test-image', ]); $response = $this->withHeaders([ 'id' => $device->mac_address, 'access-token' => $device->api_key, 'rssi' => -70, 'battery_voltage' => 3.8, 'fw-version' => '1.0.0', ])->get('/api/display'); $response->assertOk() ->assertJson([ 'status' => '0', 'filename' => 'test-image.bmp', 'refresh_rate' => 900, 'reset_firmware' => false, 'update_firmware' => false, 'firmware_url' => null, 'special_function' => 'sleep', ]); expect($device->fresh()) ->last_rssi_level->toBe(-70) ->last_battery_voltage->toBe(3.8) ->last_firmware_version->toBe('1.0.0'); }); test('new device is auto-assigned to user with auto-assign enabled', function () { $user = User::factory()->create(['assign_new_devices' => true]); $response = $this->withHeaders([ 'id' => '00:11:22:33:44:55', 'access-token' => 'new-device-key', 'rssi' => -70, 'battery_voltage' => 3.8, 'fw-version' => '1.0.0', ])->get('/api/display'); $response->assertOk(); $device = Device::where('mac_address', '00:11:22:33:44:55')->first(); expect($device) ->not->toBeNull() ->user_id->toBe($user->id) ->api_key->toBe('new-device-key'); }); test('device setup endpoint returns correct data', function () { $device = Device::factory()->create([ 'mac_address' => '00:11:22:33:44:55', 'api_key' => 'test-api-key', 'friendly_id' => 'test-device', ]); $response = $this->withHeaders([ 'id' => $device->mac_address, ])->get('/api/setup'); $response->assertOk() ->assertJson([ 'api_key' => 'test-api-key', 'friendly_id' => 'test-device', 'message' => 'Welcome to TRMNL BYOS', ]); }); test('device can submit logs', function () { $device = Device::factory()->create([ 'mac_address' => '00:11:22:33:44:55', 'api_key' => 'test-api-key', ]); $logData = [ 'log' => [ 'logs_array' => [ ['message' => 'Test log message', 'level' => 'info'], ], ], ]; $response = $this->withHeaders([ 'id' => $device->mac_address, 'access-token' => $device->api_key, ])->postJson('/api/log', $logData); $response->assertOk() ->assertJson(['status' => '200']); expect($device->fresh()->last_log_request) ->toBe($logData); }); // test('authenticated user can update device display', function () { // $user = User::factory()->create(); // $device = Device::factory()->create(['user_id' => $user->id]); // // Sanctum::actingAs($user, ['update-screen']); // // $response = $this->postJson('/api/display/update', [ // 'device_id' => $device->id, // 'markup' => '