Skip to content

Commit 547aad7

Browse files
committed
Added tests for Extractors arguments and google/vk extractors
1 parent 819c708 commit 547aad7

File tree

9 files changed

+860
-5
lines changed

9 files changed

+860
-5
lines changed

src/UserData/Arguments/NormalizersMap.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public function getPathNormalizers()
242242
/**
243243
* Set path context. All next fields will be added with prepended path
244244
*
245-
* @see NormalizersMap::setPathContext
245+
* @see NormalizersMap::prependByPathContext
246246
* @param $pathContext
247247
* @return $this
248248
* @throws \OAuth\UserData\Exception\GenericException
@@ -262,7 +262,7 @@ public function pathContext($pathContext)
262262
* @param $pathContext
263263
* @return $this
264264
*/
265-
public function setPathContext($pathContext)
265+
public function prependByPathContext($pathContext)
266266
{
267267
$this->pathContext($pathContext);
268268

src/UserData/Extractor/Google.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace OAuth\UserData\Extractor;
1313

1414
use OAuth\UserData\Arguments\FieldsValues;
15+
use OAuth\UserData\Utils\ArrayUtils;
1516

1617
/**
1718
* Class Google
@@ -41,14 +42,13 @@ public function __construct()
4142
self::FIELD_EXTRA,
4243
]),
4344
self::getDefaultNormalizersMap()
44-
->paths([
45+
->add([
4546
self::FIELD_UNIQUE_ID => 'id',
4647
self::FIELD_USERNAME => 'name',
4748
self::FIELD_FIRST_NAME => 'given_name',
4849
self::FIELD_LAST_NAME => 'family_name',
4950
self::FIELD_FULL_NAME => 'name',
5051
self::FIELD_EMAIL => 'email',
51-
self::FIELD_PROFILE_URL => 'link',
5252
self::FIELD_IMAGE_URL => 'picture',
5353
self::FIELD_VERIFIED_EMAIL => ['verified_email', FALSE]
5454
])
@@ -59,5 +59,10 @@ protected function profileLoader()
5959
{
6060
return $this->service->requestJSON(self::REQUEST_PROFILE);
6161
}
62+
63+
protected function profileUrlNormalizer($data)
64+
{
65+
return empty($data['id']) ? NULL : "https://plus.google.com/{$data['id']}";
66+
}
6267
}
6368

src/UserData/Extractor/Vkontakte.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function __construct()
5151
self::FIELD_FIRST_NAME => 'first_name',
5252
self::FIELD_LAST_NAME => 'last_name',
5353
self::FIELD_EMAIL => 'email',
54-
self::FIELD_DESCRIPTION => 'personal',
54+
self::FIELD_DESCRIPTION => 'about',
5555
self::FIELD_IMAGE_URL => 'photo_max_orig'
5656
]
5757
)
@@ -62,6 +62,8 @@ protected function profileLoader()
6262
{
6363
return $this->service->requestJSON(self::REQUEST_PROFILE, [
6464
'fields' =>
65+
// https://vk.com/dev/users.get
66+
6567
'sex, bdate, city, country, photo_50, photo_100, photo_200_orig, ' .
6668
'photo_200, photo_400_orig, photo_max, photo_max_orig, photo_id, ' .
6769
'online, online_mobile, domain, has_mobile, contacts, connections, site, ' .

tests/Unit/Common/Http/UrlTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
namespace OAuthTest\Unit\Common\Http;
4+
5+
use OAuth\Common\Http\Url;
6+
7+
class UrlTest extends \PHPUnit_Framework_TestCase {
8+
9+
public function testConstruct()
10+
{
11+
$url = new Url('https://usr:pwd@domain:81/papath?query=value#frag');
12+
13+
$this->assertInstanceOf('\\OAuth\\Common\\Http\\Url', $url);
14+
$this->assertEquals([
15+
'scheme' => 'https',
16+
'user' => 'usr',
17+
'pass' => 'pwd',
18+
'host' => 'domain',
19+
'port' => '81',
20+
'path' => 'papath',
21+
'query' => 'query=value',
22+
'fragment' => 'frag'
23+
], $url->toArray());
24+
}
25+
26+
public function testClone()
27+
{
28+
$url = new Url('http://domain');
29+
$clonedUrl = clone $url;
30+
31+
$this->assertInstanceOf('\\OAuth\\Common\\Http\\Url', $clonedUrl,
32+
'Same class');
33+
34+
$this->assertEquals('domain', $url->getHost()->get());
35+
$this->assertEquals('domain', $clonedUrl->getHost()->get());
36+
37+
// Change value
38+
$url->getHost()->set('another-domain');
39+
40+
// Value in original url is changed
41+
$this->assertEquals('another-domain', $url->getHost()->get());
42+
// Value in clone url not changed
43+
$this->assertEquals('domain', $clonedUrl->getHost()->get());
44+
}
45+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
namespace OAuthTest\Unit\UserData\Arguments;
4+
5+
use OAuth\UserData\Arguments\FieldsValues;
6+
7+
class FieldsValuesTest extends \PHPUnit_Framework_TestCase {
8+
9+
public function testConstructViaStaticMethodIsEqual()
10+
{
11+
$this->assertEquals(
12+
FieldsValues::construct(['field1'])->getSupportedFields(),
13+
(new FieldsValues(['field1']))->getSupportedFields()
14+
);
15+
}
16+
17+
public function testSetFieldsIsWorksCorrectly()
18+
{
19+
$fieldsValues = FieldsValues::construct()->setFieldsWithValues([
20+
'field1',
21+
'field2' => 'value2',
22+
'field3'
23+
]);
24+
25+
$this->assertEquals(['field1', 'field2', 'field3'], $fieldsValues->getSupportedFields());
26+
$this->assertEquals(['field2' => 'value2'], $fieldsValues->getFieldsValues());
27+
}
28+
29+
/**
30+
* @depends testSetFieldsIsWorksCorrectly
31+
*/
32+
public function testConstructWithFieldsArgument()
33+
{
34+
$fieldsValues = new FieldsValues([
35+
'field1',
36+
'field2' => 'value2',
37+
'field3'
38+
]);
39+
40+
$this->assertEquals(['field1', 'field2', 'field3'], $fieldsValues->getSupportedFields());
41+
$this->assertEquals(['field2' => 'value2'], $fieldsValues->getFieldsValues());
42+
}
43+
44+
/**
45+
* @depends testConstructWithFieldsArgument
46+
*/
47+
public function testSetFieldValue()
48+
{
49+
$fieldsValues = new FieldsValues([
50+
'field1',
51+
'field2' => 'value2',
52+
'field3'
53+
]);
54+
55+
// Change value
56+
$fieldsValues->fieldValue('field2', '2value');
57+
$this->assertEquals(['field2' => '2value'], $fieldsValues->getFieldsValues());
58+
59+
// Set value, when field was empty
60+
$fieldsValues->fieldValue('field3', 'value3');
61+
$this->assertEquals(['field2' => '2value', 'field3' => 'value3'], $fieldsValues->getFieldsValues());
62+
63+
// Add new field
64+
$fieldsValues->fieldValue('field4', 'value4');
65+
$this->assertEquals(['field2' => '2value', 'field3' => 'value3', 'field4' => 'value4'], $fieldsValues->getFieldsValues());
66+
}
67+
}
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
<?php
2+
3+
namespace OAuthTest\Unit\UserData\Arguments;
4+
5+
use OAuth\UserData\Arguments\LoadersMap;
6+
use OAuth\UserData\Exception\GenericException;
7+
8+
class LoadersMapTest extends \PHPUnit_Framework_TestCase {
9+
10+
public function testConstructViaStaticMethodIsEqual()
11+
{
12+
$this->assertEquals(
13+
LoadersMap::construct()->loader('test')->addField('field')->getLoaderForField('field'),
14+
(new LoadersMap())->loader('test')->addField('field')->getLoaderForField('field')
15+
);
16+
}
17+
18+
/**
19+
* @expectedException \OAuth\UserData\Exception\GenericException
20+
*/
21+
public function testExceptionThrownIfNoContextDefined()
22+
{
23+
LoadersMap::construct()->getLoaderForField('someField');
24+
}
25+
26+
public function testSet()
27+
{
28+
$loadersMap = new LoadersMap();
29+
$loadersMap->set([
30+
'loader' => ['field1', 'field2'],
31+
'anotherLoader' => ['field3']
32+
]);
33+
34+
$this->assertEquals('loader', $loadersMap->getLoaderForField('field1'));
35+
$this->assertEquals('loader', $loadersMap->getLoaderForField('field2'));
36+
$this->assertEquals('anotherLoader', $loadersMap->getLoaderForField('field3'));
37+
}
38+
39+
public function testConstructWithSetArguments()
40+
{
41+
$this->assertEquals('loader', LoadersMap::construct(['loader' => ['field']])->getLoaderForField('field'));
42+
}
43+
44+
public function testExceptionThrownIfNoLoaderDefined()
45+
{
46+
$exceptionClass = '\\OAuth\\UserData\\Exception\\GenericException';
47+
$loadersMap = new LoadersMap();
48+
49+
// addField
50+
try
51+
{
52+
$loadersMap->addField('field');
53+
throw new \RuntimeException('Will be throw in any case');
54+
}
55+
catch (GenericException $e)
56+
{
57+
$this->assertInstanceOf($exceptionClass, $e);
58+
}
59+
60+
// setFields
61+
try
62+
{
63+
$loadersMap->setFields(['field']);
64+
throw new \RuntimeException('Will be throw in any case');
65+
}
66+
catch (GenericException $e)
67+
{
68+
$this->assertInstanceOf($exceptionClass, $e);
69+
}
70+
71+
// removeField
72+
try
73+
{
74+
$loadersMap->removeField('field');
75+
throw new \RuntimeException('Will be throw in any case');
76+
}
77+
catch (GenericException $e)
78+
{
79+
$this->assertInstanceOf($exceptionClass, $e);
80+
}
81+
82+
// readdField
83+
try
84+
{
85+
$loadersMap->readdField('field');
86+
throw new \RuntimeException('Will be throw in any case');
87+
}
88+
catch (GenericException $e)
89+
{
90+
$this->assertInstanceOf($exceptionClass, $e);
91+
}
92+
}
93+
94+
public function testAddField()
95+
{
96+
$loadersMap = new LoadersMap();
97+
98+
$loadersMap->loader('customLoader')->addField('field1');
99+
100+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
101+
}
102+
103+
public function testAddFields()
104+
{
105+
$loadersMap = new LoadersMap();
106+
107+
$loadersMap->loader('customLoader')->addFields(['field1', 'field2']);
108+
109+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
110+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field2'));
111+
}
112+
113+
public function testSetFields()
114+
{
115+
$loadersMap = new LoadersMap();
116+
117+
$loadersMap->loader('customLoader')->addField('field1');
118+
$loadersMap->setFields(['field2']);
119+
120+
// Can be found
121+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field2'));
122+
123+
// Cannot be found
124+
$this->setExpectedException('\\OAuth\\UserData\\Exception\\GenericException');
125+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
126+
}
127+
128+
/**
129+
* @expectedException \OAuth\UserData\Exception\GenericException
130+
*/
131+
public function testRemoveField()
132+
{
133+
$loadersMap = new LoadersMap();
134+
135+
$loadersMap->loader('customLoader')->addField('field1');
136+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
137+
138+
$loadersMap->removeField('field1');
139+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
140+
}
141+
142+
/**
143+
* @expectedException \OAuth\UserData\Exception\GenericException
144+
*/
145+
public function testRemoveFields()
146+
{
147+
$loadersMap = new LoadersMap();
148+
149+
$loadersMap->loader('customLoader')->addField('field1');
150+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
151+
152+
$loadersMap->removeFields(['field1']);
153+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
154+
}
155+
156+
public function testReAddField()
157+
{
158+
$loadersMap = new LoadersMap();
159+
160+
$loadersMap->loader('customLoader')->addField('field1');
161+
$this->assertEquals('customLoader', $loadersMap->getLoaderForField('field1'));
162+
163+
$loadersMap->loader('customLoader2')->readdField('field1');
164+
$this->assertEquals('customLoader2', $loadersMap->getLoaderForField('field1'));
165+
}
166+
167+
}

0 commit comments

Comments
 (0)