Browse Source

add some basic API unit tests

Andrew Dolgov 3 years ago
parent
commit
891df34637
3 changed files with 73 additions and 3 deletions
  1. 1 1
      classes/api.php
  2. 2 2
      classes/db/prefs.php
  3. 70 0
      tests/ApiTest.php

+ 1 - 1
classes/api.php

@@ -887,4 +887,4 @@ class API extends Handler {
 	}
 
 
-}
+}

+ 2 - 2
classes/db/prefs.php

@@ -174,7 +174,7 @@ class Db_Prefs {
 			db_query("UPDATE ttrss_user_prefs SET
 				value = '$value' WHERE pref_name = '$pref_name'
 					$profile_qpart
-					AND owner_uid = " . $_SESSION["uid"]);
+					AND owner_uid = " . $user_id);
 
 			if ($user_id == $_SESSION["uid"]) {
 				$this->cache[$pref_name]["type"] = $type_name;
@@ -183,4 +183,4 @@ class Db_Prefs {
 		}
 	}
 
-}
+}

+ 70 - 0
tests/ApiTest.php

@@ -0,0 +1,70 @@
+<?php
+use PHPUnit\Framework\TestCase;
+
+set_include_path(dirname(__DIR__) ."/include" . PATH_SEPARATOR .
+	dirname(__DIR__) . PATH_SEPARATOR .
+	get_include_path());
+
+require_once "autoload.php";
+
+final class ApiTest extends TestCase {
+
+	public function __construct() {
+		init_plugins();
+		initialize_user_prefs(1);
+		set_pref('ENABLE_API_ACCESS', true, 1);
+
+		parent::__construct();
+	}
+
+	public function apiCall($args, $method) {
+		$_REQUEST = $args;
+
+		$api = new API($args);
+		ob_start();
+		$api->$method();
+		$rv = json_decode(ob_get_contents(), true);
+		ob_end_clean();
+
+		return $rv;
+	}
+
+	public function testBasicAuth() {
+		$this->assertEquals(true,
+			authenticate_user("admin", "password"));
+	}
+
+	public function testVersion() {
+
+		$ret = $this->apiCall([], "getVersion");
+
+		$this->assertStringStartsWith(
+			VERSION_STATIC,
+			$ret['content']['version']);
+	}
+
+	public function testLogin() {
+
+		$ret = $this->apiCall(["op" => "login",
+			"user" => "admin",
+			"password" => "password"], "login");
+
+		$this->assertNotEmpty($ret['content']['session_id']);
+	}
+
+	public function testGetUnread() {
+		$this->testLogin();
+		$ret = $this->apiCall([],"getUnread");
+
+		$this->assertNotEmpty($ret['content']['unread']);
+	}
+
+	public function testGetFeeds() {
+		$this->testLogin();
+		$ret = $this->apiCall([], "getFeeds");
+
+		$this->assertEquals("http://tt-rss.org/forum/rss.php",
+			$ret['content'][0]['feed_url']);
+
+	}
+}