'Sabre\\CardDAV\\Xml\\Request\AddressBookQueryReport', ]; function testDeserialize() { $xml = << XML; $result = $this->parse($xml); $addressBookQueryReport = new AddressBookQueryReport(); $addressBookQueryReport->properties = [ '{DAV:}getetag', ]; $addressBookQueryReport->test = 'anyof'; $addressBookQueryReport->filters = [ [ 'name' => 'uid', 'test' => 'anyof', 'is-not-defined' => false, 'param-filters' => [], 'text-matches' => [], ] ]; $this->assertEquals( $addressBookQueryReport, $result['value'] ); } function testDeserializeAllOf() { $xml = << XML; $result = $this->parse($xml); $addressBookQueryReport = new AddressBookQueryReport(); $addressBookQueryReport->properties = [ '{DAV:}getetag', ]; $addressBookQueryReport->test = 'allof'; $addressBookQueryReport->filters = [ [ 'name' => 'uid', 'test' => 'anyof', 'is-not-defined' => false, 'param-filters' => [], 'text-matches' => [], ] ]; $this->assertEquals( $addressBookQueryReport, $result['value'] ); } /** * @expectedException \Sabre\DAV\Exception\BadRequest */ function testDeserializeBadTest() { $xml = << XML; $this->parse($xml); } /** * We should error on this, but KDE does this, so we chose to support it. */ function testDeserializeNoFilter() { $xml = << XML; $result = $this->parse($xml); $addressBookQueryReport = new AddressBookQueryReport(); $addressBookQueryReport->properties = [ '{DAV:}getetag', ]; $addressBookQueryReport->test = 'anyof'; $addressBookQueryReport->filters = []; $this->assertEquals( $addressBookQueryReport, $result['value'] ); } function testDeserializeComplex() { $xml = << Hello! No 10 XML; $result = $this->parse($xml); $addressBookQueryReport = new AddressBookQueryReport(); $addressBookQueryReport->properties = [ '{DAV:}getetag', '{urn:ietf:params:xml:ns:carddav}address-data', ]; $addressBookQueryReport->test = 'anyof'; $addressBookQueryReport->filters = [ [ 'name' => 'uid', 'test' => 'anyof', 'is-not-defined' => true, 'param-filters' => [], 'text-matches' => [], ], [ 'name' => 'x-foo', 'test' => 'allof', 'is-not-defined' => false, 'param-filters' => [ [ 'name' => 'x-param1', 'is-not-defined' => false, 'text-match' => null, ], [ 'name' => 'x-param2', 'is-not-defined' => true, 'text-match' => null, ], [ 'name' => 'x-param3', 'is-not-defined' => false, 'text-match' => [ 'negate-condition' => false, 'value' => 'Hello!', 'match-type' => 'contains', 'collation' => 'i;unicode-casemap', ], ], ], 'text-matches' => [], ], [ 'name' => 'x-prop2', 'test' => 'anyof', 'is-not-defined' => false, 'param-filters' => [], 'text-matches' => [ [ 'negate-condition' => true, 'value' => 'No', 'match-type' => 'starts-with', 'collation' => 'i;unicode-casemap', ], ], ] ]; $addressBookQueryReport->version = '4.0'; $addressBookQueryReport->contentType = 'application/vcard+json'; $addressBookQueryReport->limit = 10; $this->assertEquals( $addressBookQueryReport, $result['value'] ); } /** * @expectedException \Sabre\DAV\Exception\BadRequest */ function testDeserializeBadMatchType() { $xml = << Hello! XML; $this->parse($xml); } /** * @expectedException \Sabre\DAV\Exception\BadRequest */ function testDeserializeBadMatchType2() { $xml = << No XML; $this->parse($xml); } /** * @expectedException \Sabre\DAV\Exception\BadRequest */ function testDeserializeDoubleFilter() { $xml = << XML; $this->parse($xml); } }