signin(); $task = factory(Task::class)->create([ 'account_id' => $user->account_id, 'contact_id' => null, 'created_at' => now(), 'updated_at' => now(), ]); $response = $this->call('PROPFIND', "/dav/calendars/{$user->email}/tasks"); $response->assertStatus(207); $response->assertHeader('X-Sabre-Version'); $response->assertSee("/dav/calendars/{$user->email}/tasks/", false); $response->assertSee("/dav/calendars/{$user->email}/tasks/{$task->uuid}.ics", false); } public function test_caldav_tasks_propfind_with_props() { $user = $this->signin(); $response = $this->call('PROPFIND', "/dav/calendars/{$user->email}/tasks/", [], [], [], [ 'HTTP_DEPTH' => 0, ], ' ' ); $response->assertStatus(207); $response->assertHeader('X-Sabre-Version'); $response->assertSee(''. ''. "/dav/calendars/{$user->email}/tasks/". ''. ''. 'Tasks'. ''. 'HTTP/1.1 200 OK'. ''. ''. 'signin(); $task = factory(Task::class)->create([ 'account_id' => $user->account_id, 'created_at' => now(), 'updated_at' => now(), ]); $response = $this->call('PROPFIND', "/dav/calendars/{$user->email}/tasks/{$task->uuid}.ics"); $response->assertStatus(207); $response->assertHeader('X-Sabre-Version'); $response->assertSee("/dav/calendars/{$user->email}/tasks/{$task->uuid}.ics", false); } public function test_caldav_tasks_getctag() { $user = $this->signin(); $contact = factory(Contact::class)->create([ 'account_id' => $user->account_id, ]); $task = factory(Task::class)->create([ 'account_id' => $user->account_id, 'contact_id' => $contact->id, ]); $response = $this->call('PROPFIND', "/dav/calendars/{$user->email}/", [], [], [], [ 'HTTP_DEPTH' => '1', 'content-type' => 'application/xml; charset=utf-8', ], " " ); $response->assertStatus(207); $response->assertHeader('X-Sabre-Version'); $tokens = SyncToken::where([ 'account_id' => $user->account_id, 'user_id' => $user->id, 'name' => 'tasks', ])->orderBy('created_at')->get(); $this->assertGreaterThan(0, $tokens->count()); $token = $tokens->last(); $response->assertSee('', false); $response->assertSee(''. "/dav/calendars/{$user->email}/tasks/". ''. ''. "http://sabre.io/ns/sync/{$token->id}". "http://sabre.io/ns/sync/{$token->id}". "http://sabre.io/ns/sync/{$token->id}". ''. 'HTTP/1.1 200 OK'. ''. '', false); } public function test_caldav_tasks_getctag_task() { $user = $this->signin(); $contact = factory(Contact::class)->create([ 'account_id' => $user->account_id, ]); $task = factory(Task::class)->create([ 'account_id' => $user->account_id, 'contact_id' => $contact->id, 'created_at' => now(), 'updated_at' => now(), ]); $response = $this->call('PROPFIND', "/dav/calendars/{$user->email}/tasks/", [], [], [], [ 'HTTP_DEPTH' => '0', 'content-type' => 'application/xml; charset=utf-8', ], " " ); $response->assertStatus(207); $response->assertHeader('X-Sabre-Version'); $tokens = SyncToken::where([ 'account_id' => $user->account_id, 'user_id' => $user->id, 'name' => 'tasks', ])->orderBy('created_at')->get(); $this->assertGreaterThan(0, $tokens->count()); $token = $tokens->last(); $response->assertSee('', false); $response->assertSee(''. "/dav/calendars/{$user->email}/tasks/". ''. ''. "http://sabre.io/ns/sync/{$token->id}". "http://sabre.io/ns/sync/{$token->id}". "http://sabre.io/ns/sync/{$token->id}". ''. 'HTTP/1.1 200 OK'. ''. '', false); } public function test_caldav_tasks_sync_collection_with_token() { Carbon::setTestNow(Carbon::create(2019, 1, 1, 9, 0, 0)); $user = $this->signin(); $contact = factory(Contact::class)->create([ 'account_id' => $user->account_id, ]); $task = factory(Task::class)->create([ 'account_id' => $user->account_id, 'contact_id' => $contact->id, 'created_at' => now(), 'updated_at' => now(), ]); Carbon::setTestNow(Carbon::create(2019, 1, 1, 8, 0, 0)); $token = factory(SyncToken::class)->create([ 'account_id' => $user->account_id, 'user_id' => $user->id, 'name' => 'tasks', 'timestamp' => now(), ]); $response = $this->call('REPORT', "/dav/calendars/{$user->email}/tasks/", [], [], [], [ 'content-type' => 'application/xml; charset=utf-8', ], " http://sabre.io/ns/sync/{$token->id} 1 " ); $response->assertStatus(207); $token = SyncToken::where([ 'account_id' => $user->account_id, 'user_id' => $user->id, 'name' => 'tasks', ]) ->orderBy('created_at') ->get() ->last(); $response->assertSee(" /dav/calendars/{$user->email}/tasks/{$task->uuid}.ics "{$this->getEtag($task)}" HTTP/1.1 200 OK http://sabre.io/ns/sync/{$token->id} ", false); } public function test_caldav_tasks_sync_collection_init() { $user = $this->signin(); $contact = factory(Contact::class)->create([ 'account_id' => $user->account_id, ]); $task = factory(Task::class)->create([ 'account_id' => $user->account_id, 'contact_id' => $contact->id, 'created_at' => now(), 'updated_at' => now(), ]); $response = $this->call('REPORT', "/dav/calendars/{$user->email}/tasks/", [], [], [], [ 'content-type' => 'application/xml; charset=utf-8', ], " 1 " ); $response->assertStatus(207); $response->assertHeader('X-Sabre-Version'); $tokens = SyncToken::where([ 'account_id' => $user->account_id, 'user_id' => $user->id, 'name' => 'tasks', ])->orderBy('created_at')->get(); $this->assertGreaterThan(0, $tokens->count()); $token = $tokens->last(); $response->assertSee(" /dav/calendars/{$user->email}/tasks/{$task->uuid}.ics "{$this->getEtag($task)}" HTTP/1.1 200 OK http://sabre.io/ns/sync/{$token->id} ", false); } }