for($this->tenant) ->create([ 'name' => ['de' => 'Live-Show Test', 'en' => 'Live Show Test'], 'slug' => 'live-show-link-test', ]); $response = $this->authenticatedRequest('GET', "/api/v1/tenant/events/{$event->slug}/live-show/link"); $response->assertOk(); $data = $response->json('data'); $this->assertIsArray($data); $this->assertArrayHasKey('token', $data); $this->assertArrayHasKey('url', $data); $this->assertArrayHasKey('qr_code_data_url', $data); $this->assertArrayHasKey('rotated_at', $data); $this->assertIsString($data['token']); $this->assertIsString($data['url']); $this->assertIsString($data['qr_code_data_url']); $this->assertStringStartsWith('data:image/png;base64,', $data['qr_code_data_url']); $this->assertNotNull($data['rotated_at']); $expectedBase = rtrim((string) config('app.url'), '/'); $this->assertSame("{$expectedBase}/show/{$data['token']}", $data['url']); } public function test_rotate_live_show_link_changes_token(): void { $event = Event::factory() ->for($this->tenant) ->create([ 'name' => ['de' => 'Live-Show Rotation', 'en' => 'Live Show Rotation'], 'slug' => 'live-show-rotate-test', ]); $first = $this->authenticatedRequest('GET', "/api/v1/tenant/events/{$event->slug}/live-show/link"); $first->assertOk(); $firstToken = $first->json('data.token'); $rotated = $this->authenticatedRequest('POST', "/api/v1/tenant/events/{$event->slug}/live-show/link/rotate"); $rotated->assertOk(); $rotatedToken = $rotated->json('data.token'); $this->assertIsString($rotatedToken); $this->assertNotSame($firstToken, $rotatedToken); } }