You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
248 lines
8.0 KiB
248 lines
8.0 KiB
<?php |
|
|
|
require_once __DIR__.'/BaseApiTest.php'; |
|
|
|
class ApiTest extends BaseApiTest |
|
{ |
|
public function testGetVersion() |
|
{ |
|
$this->assertEquals('master', $this->getApiClient()->getVersion()); |
|
} |
|
|
|
public function testCreateUser() |
|
{ |
|
$this->assertFalse($this->getApiClient()->createUser('admin', 'test123')); |
|
$this->assertNotFalse($this->getApiClient()->createUser(array( |
|
'username' => 'api_test', |
|
'password' => 'test123', |
|
))); |
|
} |
|
|
|
public function testGetUser() |
|
{ |
|
$this->assertNull($this->getApiClient()->getUserByUsername('notfound')); |
|
|
|
$user = $this->getApiClient()->getUserByUsername('api_test'); |
|
$this->assertEquals('api_test', $user['username']); |
|
$this->assertFalse((bool) $user['is_admin']); |
|
$this->assertArrayHasKey('password', $user); |
|
$this->assertArrayHasKey('api_token', $user); |
|
} |
|
|
|
public function testCreateUserAsNonAdmin() |
|
{ |
|
$user = $this->getApiClient()->getUserByUsername('api_test'); |
|
|
|
$this->setExpectedException('JsonRPC\Exception\AccessDeniedException'); |
|
$this->getApiClient($user)->createUser('someone', 'secret'); |
|
} |
|
|
|
public function testGetUserAsNonAdmin() |
|
{ |
|
$user = $this->getApiClient()->getUserByUsername('api_test'); |
|
|
|
$this->setExpectedException('JsonRPC\Exception\AccessDeniedException'); |
|
$this->getApiClient($user)->getUserByUsername('admin'); |
|
} |
|
|
|
public function testRemoveUser() |
|
{ |
|
$userId = $this->getApiClient()->createUser(array( |
|
'username' => 'api_test2', |
|
'password' => 'test123', |
|
)); |
|
|
|
$this->assertNotFalse($userId); |
|
$this->assertTrue($this->getApiClient()->removeUser($userId)); |
|
} |
|
|
|
public function testCreateFeed() |
|
{ |
|
$this->assertNotFalse($this->getApiClient()->createFeed(array( |
|
'url' => 'https://miniflux.net/feed', |
|
'group_name' => 'open source software', |
|
))); |
|
} |
|
|
|
public function testGetAllFeeds() |
|
{ |
|
$feeds = $this->getApiClient()->getFeeds(); |
|
$this->assertCount(1, $feeds); |
|
$this->assertEquals(1, $feeds[0]['id']); |
|
$this->assertEquals('https://miniflux.net/feed', $feeds[0]['feed_url']); |
|
$this->assertTrue((bool) $feeds[0]['enabled']); |
|
$this->assertEquals('open source software', $feeds[0]['groups'][0]['title']); |
|
} |
|
|
|
public function testGetFeed() |
|
{ |
|
$this->assertNull($this->getApiClient()->getFeed(999)); |
|
|
|
$feed = $this->getApiClient()->getFeed(1); |
|
$this->assertEquals('https://miniflux.net/feed', $feed['feed_url']); |
|
$this->assertTrue((bool) $feed['enabled']); |
|
$this->assertEquals('open source software', $feed['groups'][0]['title']); |
|
} |
|
|
|
public function testRefreshFeed() |
|
{ |
|
$this->assertTrue($this->getApiClient()->refreshFeed(1)); |
|
} |
|
|
|
public function testGetItems() |
|
{ |
|
$items = $this->getApiClient()->getItems(); |
|
$this->assertNotEmpty($items); |
|
$this->assertEquals(1, $items[0]['id']); |
|
$this->assertEquals(1, $items[0]['feed_id']); |
|
$this->assertNotEmpty($items[0]['title']); |
|
$this->assertNotEmpty($items[0]['author']); |
|
$this->assertNotEmpty($items[0]['content']); |
|
$this->assertNotEmpty($items[0]['url']); |
|
} |
|
|
|
public function testGetItemsByStatusUnread() |
|
{ |
|
$items = $this->getApiClient()->getItemsByStatus(array('status' => 'unread')); |
|
$this->assertNotEmpty($items); |
|
$this->assertEquals(1, $items[0]['id']); |
|
$this->assertEquals(1, $items[0]['feed_id']); |
|
$this->assertNotEmpty($items[0]['title']); |
|
$this->assertNotEmpty($items[0]['author']); |
|
$this->assertNotEmpty($items[0]['content']); |
|
$this->assertNotEmpty($items[0]['url']); |
|
$this->assertEquals('unread', $items[0]['status']); |
|
} |
|
|
|
public function testGetItemsByStatusRead() |
|
{ |
|
$items = $this->getApiClient()->getItemsByStatus(array('status' => 'read')); |
|
$this->assertEmpty($items); |
|
} |
|
|
|
public function testGetItemsByFeedIds() |
|
{ |
|
$items = $this->getApiClient()->getItemsByStatus(array( |
|
'status' => 'unread', |
|
'feed_ids' => array(1) |
|
)); |
|
$this->assertNotEmpty($items); |
|
$this->assertEquals(1, $items[0]['id']); |
|
$this->assertEquals(1, $items[0]['feed_id']); |
|
$this->assertNotEmpty($items[0]['title']); |
|
$this->assertNotEmpty($items[0]['author']); |
|
$this->assertNotEmpty($items[0]['content']); |
|
$this->assertNotEmpty($items[0]['url']); |
|
$this->assertEquals('unread', $items[0]['status']); |
|
} |
|
|
|
public function testGetItemsByFeedIdsNonExist() |
|
{ |
|
$items = $this->getApiClient()->getItemsByStatus(array( |
|
'status' => 'unread', |
|
'feed_ids' => array(2) |
|
)); |
|
$this->assertEmpty($items); |
|
} |
|
|
|
public function testGetItemsSinceId() |
|
{ |
|
$items = $this->getApiClient()->getItems(array('since_id' => 2)); |
|
$this->assertNotEmpty($items); |
|
$this->assertEquals(3, $items[0]['id']); |
|
} |
|
|
|
public function testGetSpecificItems() |
|
{ |
|
$items = $this->getApiClient()->getItems(array('item_ids' => array(2, 3))); |
|
$this->assertNotEmpty($items); |
|
$this->assertEquals(2, $items[0]['id']); |
|
$this->assertEquals(3, $items[1]['id']); |
|
} |
|
|
|
public function testGetItem() |
|
{ |
|
$this->assertNull($this->getApiClient()->getItem(999)); |
|
|
|
$item = $this->getApiClient()->getItem(1); |
|
$this->assertNotEmpty($item); |
|
$this->assertEquals(1, $item['id']); |
|
$this->assertEquals(1, $item['feed_id']); |
|
$this->assertEquals('unread', $item['status']); |
|
$this->assertNotEmpty($item['title']); |
|
$this->assertNotEmpty($item['author']); |
|
$this->assertNotEmpty($item['content']); |
|
$this->assertNotEmpty($item['url']); |
|
} |
|
|
|
public function testChangeItemsStatus() |
|
{ |
|
$this->assertTrue($this->getApiClient()->changeItemsStatus(array(1), 'read')); |
|
|
|
$item = $this->getApiClient()->getItem(1); |
|
$this->assertEquals('read', $item['status']); |
|
|
|
$item = $this->getApiClient()->getItem(2); |
|
$this->assertEquals('unread', $item['status']); |
|
} |
|
|
|
public function testAddBookmark() |
|
{ |
|
$this->assertTrue($this->getApiClient()->addBookmark(1)); |
|
|
|
$item = $this->getApiClient()->getItem(1); |
|
$this->assertTrue((bool) $item['bookmark']); |
|
} |
|
|
|
public function testRemoveBookmark() |
|
{ |
|
$this->assertTrue($this->getApiClient()->removeBookmark(1)); |
|
|
|
$item = $this->getApiClient()->getItem(1); |
|
$this->assertFalse((bool) $item['bookmark']); |
|
} |
|
|
|
public function testGetGroups() |
|
{ |
|
$groups = $this->getApiClient()->getGroups(); |
|
$this->assertCount(1, $groups); |
|
|
|
$this->assertEquals(1, $groups[0]['id']); |
|
$this->assertEquals(1, $groups[0]['user_id']); |
|
$this->assertEquals('open source software', $groups[0]['title']); |
|
} |
|
|
|
public function testCreateGroup() |
|
{ |
|
$this->assertEquals(2, $this->getApiClient()->createGroup('foobar')); |
|
$this->assertEquals(2, $this->getApiClient()->createGroup('foobar')); |
|
|
|
$groups = $this->getApiClient()->getGroups(); |
|
$this->assertCount(2, $groups); |
|
} |
|
|
|
public function testSetFeedGroups() |
|
{ |
|
$this->assertTrue($this->getApiClient()->setFeedGroups(1, array(2))); |
|
|
|
$feed = $this->getApiClient()->getFeed(1); |
|
$this->assertCount(1, $feed['groups']); |
|
$this->assertEquals('foobar', $feed['groups'][0]['title']); |
|
} |
|
|
|
public function testGetFavicons() |
|
{ |
|
$favicons = $this->getApiClient()->getFavicons(); |
|
|
|
$this->assertCount(1, $favicons); |
|
$this->assertEquals(1, $favicons[0]['feed_id']); |
|
$this->assertNotEmpty($favicons[0]['hash']); |
|
$this->assertNotEmpty($favicons[0]['type']); |
|
$this->assertNotEmpty($favicons[0]['data_url']); |
|
} |
|
|
|
public function testDeleteFeed() |
|
{ |
|
$this->assertTrue($this->getApiClient()->removeFeed(1)); |
|
} |
|
}
|
|
|