mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2024-12-22 13:12:41 +00:00
Added incorrectDbCharset to NCNv1 server status
This has been exposed since version 11.0.3, released before our version 0.1.0, but after implementation work had begun
This commit is contained in:
parent
40944a9b58
commit
5cd7268c0a
7 changed files with 25 additions and 0 deletions
|
@ -61,6 +61,10 @@ class Database {
|
|||
return false;
|
||||
}
|
||||
|
||||
public function driverCharsetAcceptable(): bool {
|
||||
return $this->db->charsetAcceptable();
|
||||
}
|
||||
|
||||
protected function generateSet(array $props, array $valid): array {
|
||||
$out = [
|
||||
[], // query clause
|
||||
|
|
|
@ -35,4 +35,6 @@ interface Driver {
|
|||
// ready a prepared statement for later execution
|
||||
public function prepare(string $query, ...$paramType): Statement;
|
||||
public function prepareArray(string $query, array $paramTypes): Statement;
|
||||
// report whether the database character set is correct/acceptable
|
||||
public function charsetAcceptable(): bool;
|
||||
}
|
||||
|
|
|
@ -127,6 +127,11 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver {
|
|||
return true;
|
||||
}
|
||||
|
||||
public function charsetAcceptable(): bool {
|
||||
// SQLite 3 databases are UTF-8 internally, thus always acceptable
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function getError(): string {
|
||||
return $this->db->lastErrorMsg();
|
||||
}
|
||||
|
|
|
@ -204,6 +204,7 @@ class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler {
|
|||
'starred' => "bool",
|
||||
'pubDate' => "datetime",
|
||||
'lastModified' => "datetime",
|
||||
'guidHash' => "string"
|
||||
], $this->dateFormat);
|
||||
return $article;
|
||||
}
|
||||
|
@ -653,6 +654,7 @@ class V1_2 extends \JKingWeb\Arsse\REST\AbstractHandler {
|
|||
'arsse_version' => Arsse::VERSION,
|
||||
'warnings' => [
|
||||
'improperlyConfiguredCron' => !Service::hasCheckedIn(),
|
||||
'incorrectDbCharset' => !Arsse::$db->driverCharsetAcceptable(),
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -43,6 +43,10 @@ class TestDbDriverSQLite3 extends Test\AbstractTest {
|
|||
$this->assertTrue(strlen($class::driverName()) > 0);
|
||||
}
|
||||
|
||||
public function testCheckCharacterSetAcceptability() {
|
||||
$this->assertTrue($this->drv->charsetAcceptable());
|
||||
}
|
||||
|
||||
public function testExecAValidStatement() {
|
||||
$this->assertTrue($this->drv->exec("CREATE TABLE test(id integer primary key)"));
|
||||
}
|
||||
|
|
|
@ -852,14 +852,17 @@ class TestNCNV1_2 extends Test\AbstractTest {
|
|||
$valid = (new \DateTimeImmutable("now", new \DateTimezone("UTC")))->sub($interval);
|
||||
$invalid = $valid->sub($interval)->sub($interval);
|
||||
Phake::when(Arsse::$db)->metaGet("service_last_checkin")->thenReturn(Date::transform($valid, "sql"))->thenReturn(Date::transform($invalid, "sql"));
|
||||
Phake::when(Arsse::$db)->driverCharsetAcceptable->thenReturn(true)->thenReturn(false);
|
||||
$arr1 = $arr2 = [
|
||||
'version' => REST\NextCloudNews\V1_2::VERSION,
|
||||
'arsse_version' => Arsse::VERSION,
|
||||
'warnings' => [
|
||||
'improperlyConfiguredCron' => false,
|
||||
'incorrectDbCharset' => false,
|
||||
]
|
||||
];
|
||||
$arr2['warnings']['improperlyConfiguredCron'] = true;
|
||||
$arr2['warnings']['incorrectDbCharset'] = true;
|
||||
$exp = new Response(200, $arr1);
|
||||
$this->assertEquals($exp, $this->h->dispatch(new Request("GET", "/status")));
|
||||
}
|
||||
|
|
|
@ -29,4 +29,9 @@ trait SeriesMiscellany {
|
|||
$this->assertSame(Database::SCHEMA_VERSION, $d->driverSchemaVersion());
|
||||
$this->assertFalse($d->driverSchemaUpdate());
|
||||
}
|
||||
|
||||
public function testCheckCharacterSetAcceptability() {
|
||||
$d = new Database();
|
||||
$this->assertInternalType("bool", $d->driverCharsetAcceptable());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue