first commit

This commit is contained in:
CHIEFSOFT\ameye
2024-09-30 18:11:26 -04:00
commit e592ca6823
27270 changed files with 5002257 additions and 0 deletions
@@ -0,0 +1,269 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace repository_googledocs\local\browser;
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/repository/googledocs/tests/googledocs_content_testcase.php');
require_once($CFG->dirroot . '/repository/googledocs/lib.php');
/**
* Class containing unit tests for the drive browser class.
*
* @package repository_googledocs
* @copyright 2021 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class googledocs_drive_content_test extends \googledocs_content_testcase {
/**
* Test get_content_nodes().
*
* @dataProvider get_content_nodes_provider
* @param string $query The query string
* @param string $path The path
* @param bool $sortcontent Whether the contents should be sorted in alphabetical order
* @param array $filterextensions The array containing file extensions that should be disallowed (filtered)
* @param array $shareddrives The array containing the existing shared drives
* @param array $drivecontents The array containing the fetched google drive contents
* @param array $expected The expected array which contains the generated repository content nodes
*/
public function test_get_content_nodes(string $query, string $path, bool $sortcontent, array $filterextensions,
array $shareddrives, array $drivecontents, array $expected): void {
// Mock the service object.
$servicemock = $this->createMock(\repository_googledocs\rest::class);
$listparams = [
'q' => "'" . str_replace("'", "\'", $query) . "' in parents AND trashed = false",
'fields' => 'files(id,name,mimeType,webContentLink,webViewLink,fileExtension,modifiedTime,size,iconLink)',
'spaces' => 'drive',
];
if (!empty($shareddrives)) {
$listparams['supportsAllDrives'] = 'true';
$listparams['includeItemsFromAllDrives'] = 'true';
}
// Assert that the call() method is being called twice with the given arguments consecutively. In the first
// instance it is being called to fetch the shared drives (shared_drives_list), while in the second instance
// to fetch the relevant drive contents (list). Also, define the returned data objects by these calls.
$servicemock->expects($this->exactly(2))
->method('call')
->withConsecutive(
[
'shared_drives_list',
[],
],
[
'list',
$listparams,
]
)
->willReturnOnConsecutiveCalls(
(object)[
'kind' => 'drive#driveList',
'nextPageToken' => 'd838181f30b0f5',
'drives' => $shareddrives,
],
(object)[
'files' => $drivecontents,
]
);
// Set the disallowed file types (extensions).
$this->disallowedextensions = $filterextensions;
$drivebrowser = new googledocs_drive_content($servicemock, $path, $sortcontent);
$contentnodes = $drivebrowser->get_content_nodes($query, [$this, 'filter']);
// Assert that the returned array of repository content nodes is equal to the expected one.
$this->assertEquals($expected, $contentnodes);
}
/**
* Data provider for test_get_content_nodes().
*
* @return array
*/
public function get_content_nodes_provider(): array {
$rootid = \repository_googledocs::REPOSITORY_ROOT_ID;
$mydriveid = \repository_googledocs::MY_DRIVE_ROOT_ID;
return [
'Folders and files exist in the drive; shared drives exist; ordering applied.' =>
[
$mydriveid,
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive",
true,
[],
[
$this->create_google_drive_shared_drive_object('d85b21c0f86cb5', 'Shared Drive 1'),
],
[
$this->create_google_drive_folder_object('1c4ad262c65333', 'Folder 2'),
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File 3.pdf',
'application/pdf', 'pdf', '1000'),
$this->create_google_drive_folder_object('0c4ad262c65333', 'Folder 1'),
$this->create_google_drive_file_object('bed5a0f08d412a', 'File 1.pdf',
'application/pdf', 'pdf'),
],
[
$this->create_folder_content_node_array('0c4ad262c65333', 'Folder 1',
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive"),
$this->create_folder_content_node_array('1c4ad262c65333', 'Folder 2',
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive"),
$this->create_file_content_node_array('bed5a0f08d412a', 'File 1.pdf', 'File 1.pdf',
null, '', 'https://googleusercontent.com/type/application/pdf', '',
'download'),
$this->create_file_content_node_array('d85b21c0f86cb0', 'File 3.pdf', 'File 3.pdf',
'1000', '', 'https://googleusercontent.com/type/application/pdf', '',
'download'),
],
],
'Only folders exist in the drive; shared drives do not exist; ordering not applied.' =>
[
$mydriveid,
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive",
false,
[],
[],
[
$this->create_google_drive_folder_object('0c4ad262c65333', 'Folder 3'),
$this->create_google_drive_folder_object('d85b21c0f86cb0', 'Folder 1'),
$this->create_google_drive_folder_object('bed5a0f08d412a', 'Folder 2'),
],
[
$this->create_folder_content_node_array('0c4ad262c65333', 'Folder 3',
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive"),
$this->create_folder_content_node_array('d85b21c0f86cb0', 'Folder 1',
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive"),
$this->create_folder_content_node_array('bed5a0f08d412a', 'Folder 2',
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive"),
],
],
'Only files exist in the drive; shared drives do not exist; ordering not applied; filter .txt.' =>
[
$mydriveid,
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive",
false,
['txt'],
[],
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File 3.pdf',
'application/pdf', 'pdf', '1000'),
$this->create_google_drive_file_object('a85b21c0f86cb0', 'File 1.txt',
'text/plain', 'txt', '3000'),
$this->create_google_drive_file_object('f85b21c0f86cb0', 'File 2.doc',
'application/msword', 'doc', '2000'),
],
[
$this->create_file_content_node_array('d85b21c0f86cb0', 'File 3.pdf', 'File 3.pdf',
'1000', '', 'https://googleusercontent.com/type/application/pdf', '',
'download'),
$this->create_file_content_node_array('f85b21c0f86cb0', 'File 2.doc', 'File 2.doc',
'2000', '', 'https://googleusercontent.com/type/application/msword', '',
'download'),
],
],
'Contents do not exist in the drive; shared drives do not exist.' =>
[
$mydriveid,
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive",
false,
[],
[],
[],
[],
],
];
}
/**
* Test get_navigation().
*
* @dataProvider get_navigation_provider
* @param string $nodepath The node path string
* @param array $expected The expected array containing the repository navigation nodes
*/
public function test_get_navigation(string $nodepath, array $expected): void {
// Mock the service object.
$servicemock = $this->createMock(\repository_googledocs\rest::class);
$drivebrowser = new googledocs_drive_content($servicemock, $nodepath);
$navigation = $drivebrowser->get_navigation();
// Assert that the returned array containing the navigation nodes is equal to the expected one.
$this->assertEquals($expected, $navigation);
}
/**
* Data provider for test_get_navigation().
*
* @return array
*/
public function get_navigation_provider(): array {
$rootid = \repository_googledocs::REPOSITORY_ROOT_ID;
$mydriveid = \repository_googledocs::MY_DRIVE_ROOT_ID;
return [
'Return navigation nodes array from path where all nodes have a name.' =>
[
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive/bed5a0f08d|Test+Folder",
[
[
'name' => 'Google Drive',
'path' => "{$rootid}|Google+Drive",
],
[
'name' => 'My Drive',
'path' => "{$rootid}|Google+Drive/{$mydriveid}|My+Drive",
],
[
'name' => 'Test Folder',
'path' => "{$rootid}|Google+Drive/{$mydriveid}|My+Drive/bed5a0f08d|Test+Folder",
],
],
],
'Return navigation nodes array from path where some nodes do not have a name.' =>
[
"{$rootid}|Google+Drive/{$mydriveid}|My+Drive/bed5a0f08d/d85b21c0f8|Test+Folder",
[
[
'name' => 'Google Drive',
'path' => "{$rootid}|Google+Drive",
],
[
'name' => 'My Drive',
'path' => "{$rootid}|Google+Drive/{$mydriveid}|My+Drive",
],
[
'name' => 'bed5a0f08d',
'path' => "{$rootid}|Google+Drive/{$mydriveid}|My+Drive/bed5a0f08d|bed5a0f08d",
],
[
'name' => 'Test Folder',
'path' => "{$rootid}|Google+Drive/{$mydriveid}|My+Drive/bed5a0f08d|bed5a0f08d/" .
"d85b21c0f8|Test+Folder",
],
],
],
];
}
}
@@ -0,0 +1,102 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace repository_googledocs\local\browser;
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/repository/googledocs/tests/googledocs_content_testcase.php');
require_once($CFG->dirroot . '/repository/googledocs/lib.php');
/**
* Class containing unit tests for the repository root browser class.
*
* @package repository_googledocs
* @copyright 2021 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class googledocs_root_content_test extends \googledocs_content_testcase {
/**
* Test get_content_nodes().
*
* @dataProvider get_content_nodes_provider
* @param array $shareddrives The array containing the existing shared drives
* @param array $expected The expected array which contains the generated repository content nodes
*/
public function test_get_content_nodes(array $shareddrives, array $expected): void {
// Mock the service object.
$servicemock = $this->createMock(\repository_googledocs\rest::class);
// Assert that the call() method is being called only once with the given arguments to fetch the existing
// shared drives. Define the returned data object by this call.
$servicemock->expects($this->once())
->method('call')
->with('shared_drives_list', [])
->willReturn((object)[
'kind' => 'drive#driveList',
'nextPageToken' => 'd838181f30b0f5',
'drives' => $shareddrives,
]);
$rootbrowser = new googledocs_root_content($servicemock,
\repository_googledocs::REPOSITORY_ROOT_ID . '|Google+Drive', false);
$contentnodes = $rootbrowser->get_content_nodes('', [$this, 'filter']);
// Assert that the returned array of repository content nodes is equal to the expected one.
$this->assertEquals($expected, $contentnodes);
}
/**
* Data provider for test_get_content_nodes().
*
* @return array
*/
public function get_content_nodes_provider(): array {
$rootid = \repository_googledocs::REPOSITORY_ROOT_ID;
$mydriveid = \repository_googledocs::MY_DRIVE_ROOT_ID;
$shareddrivesid = \repository_googledocs::SHARED_DRIVES_ROOT_ID;
return [
'Shared drives exist.' =>
[
[
$this->create_google_drive_shared_drive_object('d85b21c0f86cb5', 'Shared Drive 1'),
$this->create_google_drive_shared_drive_object('d85b21c0f86cb0', 'Shared Drive 3'),
],
[
$this->create_folder_content_node_array($mydriveid,
get_string('mydrive', 'repository_googledocs'),
"{$rootid}|Google+Drive"),
$this->create_folder_content_node_array($shareddrivesid,
get_string('shareddrives', 'repository_googledocs'),
"{$rootid}|Google+Drive"),
],
],
'Shared drives do not exist.' =>
[
[],
[
$this->create_folder_content_node_array($mydriveid,
get_string('mydrive', 'repository_googledocs'),
"{$rootid}|Google+Drive"),
],
],
];
}
}
@@ -0,0 +1,120 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace repository_googledocs\local\browser;
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/repository/googledocs/tests/googledocs_content_testcase.php');
require_once($CFG->dirroot . '/repository/googledocs/lib.php');
/**
* Class containing unit tests for the shared drives browser class.
*
* @package repository_googledocs
* @copyright 2021 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class googledocs_shared_drives_content_test extends \googledocs_content_testcase {
/**
* Test get_content_nodes().
*
* @dataProvider get_content_nodes_provider
* @param array $shareddrives The array containing the existing shared drives
* @param bool $sortcontent Whether the contents should be sorted in alphabetical order
* @param array $expected The expected array which contains the generated repository content nodes
*/
public function test_get_content_nodes(array $shareddrives, bool $sortcontent, array $expected): void {
// Mock the service object.
$servicemock = $this->createMock(\repository_googledocs\rest::class);
// Assert that the call() method is being called only once with the given arguments to fetch the existing
// shared drives. Define the returned data object by this call.
$servicemock->expects($this->once())
->method('call')
->with('shared_drives_list', [])
->willReturn((object)[
'kind' => 'drive#driveList',
'nextPageToken' => 'd838181f30b0f5',
'drives' => $shareddrives,
]);
$path = \repository_googledocs::REPOSITORY_ROOT_ID . '|Google+Drive/' .
\repository_googledocs::SHARED_DRIVES_ROOT_ID . '|Shared+Drives';
$shareddrivesbrowser = new googledocs_shared_drives_content($servicemock, $path, $sortcontent);
$contentnodes = $shareddrivesbrowser->get_content_nodes('', [$this, 'filter']);
// Assert that the returned array of repository content nodes is equal to the expected one.
$this->assertEquals($expected, $contentnodes);
}
/**
* Data provider for test_get_content_nodes().
*
* @return array
*/
public function get_content_nodes_provider(): array {
$rootid = \repository_googledocs::REPOSITORY_ROOT_ID;
$shareddrivesid = \repository_googledocs::SHARED_DRIVES_ROOT_ID;
$shareddrivesstring = get_string('shareddrives', 'repository_googledocs');
return [
'Shared drives exist; ordering applied.' =>
[
[
$this->create_google_drive_shared_drive_object('d85b21c0f86cb5', 'Shared Drive 1'),
$this->create_google_drive_shared_drive_object('d85b21c0f86cb0', 'Shared Drive 3'),
$this->create_google_drive_shared_drive_object('bed5a0f08d412a', 'Shared Drive 2'),
],
true,
[
$this->create_folder_content_node_array('d85b21c0f86cb5', 'Shared Drive 1',
"{$rootid}|Google+Drive/{$shareddrivesid}|" . urlencode($shareddrivesstring)),
$this->create_folder_content_node_array('bed5a0f08d412a', 'Shared Drive 2',
"{$rootid}|Google+Drive/{$shareddrivesid}|" . urlencode($shareddrivesstring)),
$this->create_folder_content_node_array('d85b21c0f86cb0', 'Shared Drive 3',
"{$rootid}|Google+Drive/{$shareddrivesid}|" . urlencode($shareddrivesstring)),
],
],
'Shared drives exist; ordering not applied.' =>
[
[
$this->create_google_drive_shared_drive_object('0c4ad262c65333', 'Shared Drive 3'),
$this->create_google_drive_shared_drive_object('d85b21c0f86cb0', 'Shared Drive 1'),
$this->create_google_drive_shared_drive_object('bed5a0f08d412a', 'Shared Drive 2'),
],
false,
[
$this->create_folder_content_node_array('0c4ad262c65333', 'Shared Drive 3',
"{$rootid}|Google+Drive/{$shareddrivesid}|" . urlencode($shareddrivesstring)),
$this->create_folder_content_node_array('d85b21c0f86cb0', 'Shared Drive 1',
"{$rootid}|Google+Drive/{$shareddrivesid}|" . urlencode($shareddrivesstring)),
$this->create_folder_content_node_array('bed5a0f08d412a', 'Shared Drive 2',
"{$rootid}|Google+Drive/{$shareddrivesid}|" . urlencode($shareddrivesstring)),
],
],
'Shared drives do not exist.' =>
[
[],
false,
[],
],
];
}
}
@@ -0,0 +1,123 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace repository_googledocs\local\node;
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/repository/googledocs/tests/repository_googledocs_testcase.php');
/**
* Class containing unit tests for the repository file node class.
*
* @package repository_googledocs
* @copyright 2021 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class file_node_test extends \repository_googledocs_testcase {
/**
* Test create_node_array().
*
* @dataProvider create_node_array_provider
* @param \stdClass $gdfile The Google Drive file object
* @param array $configsettings The googledoc repository config settings that should be set
* @param array|null $expected The expected repository file node array
*/
public function test_create_node_array(\stdClass $gdfile, array $configsettings, ?array $expected): void {
$this->resetAfterTest();
// Set the required config settings.
array_walk($configsettings, function($value, $name) {
set_config($name, $value, 'googledocs');
});
$filenode = new file_node($gdfile);
$filenodearray = $filenode->create_node_array();
// Assert that the returned repository file node array by create_node_array() is equal to the expected one.
$this->assertEquals($expected, $filenodearray);
}
/**
* Data provider for test_create_node_array().
*
* @return array
*/
public function create_node_array_provider(): array {
return [
'Google Drive file with an extension.' =>
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File.pdf',
'application/pdf', 'pdf', '1000', '01/01/21 0:30'),
[],
$this->create_file_content_node_array('d85b21c0f86cb0', 'File.pdf', 'File.pdf', '1000',
'1609432200', 'https://googleusercontent.com/type/application/pdf', '',
'download'),
],
'Google Drive file that has webContentLink and webViewLink.' =>
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File.pdf',
'application/pdf', 'pdf', null, '',
'https://drive.google.com/uc?id=d85b21c0f86cb0&export=download',
'https://drive.google.com/file/d/d85b21c0f86cb0/view?usp=drivesdk'),
[
'documentformat' => 'rtf',
],
$this->create_file_content_node_array('d85b21c0f86cb0', 'File.pdf', 'File.pdf', null,
'', 'https://googleusercontent.com/type/application/pdf',
'https://drive.google.com/file/d/d85b21c0f86cb0/view?usp=drivesdk', 'download'),
],
'Google Drive file that has webContentLink and no webViewLink.' =>
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File.pdf',
'application/pdf', 'pdf', null, '',
'https://drive.google.com/uc?id=d85b21c0f86cb0&export=download', ''),
[],
$this->create_file_content_node_array('d85b21c0f86cb0', 'File.pdf', 'File.pdf', null,
'', 'https://googleusercontent.com/type/application/pdf',
'https://drive.google.com/uc?id=d85b21c0f86cb0&export=download', 'download'),
],
'Google Drive file without an extension (Google document file; documentformat config set to rtf).' =>
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File',
'application/vnd.google-apps.document', null),
[
'documentformat' => 'rtf',
],
$this->create_file_content_node_array('d85b21c0f86cb0', 'File', 'File.gdoc', '', '',
'https://googleusercontent.com/type/application/vnd.google-apps.document', '',
'application/rtf', 'document'),
],
'Google Drive file without an extension (Google presentation file; presentationformat config not set).' =>
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File',
'application/vnd.google-apps.presentation', null),
[
'documentformat' => 'rtf',
],
null,
],
'Google Drive file without an extension (File type not supported).' =>
[
$this->create_google_drive_file_object('d85b21c0f86cb0', 'File',
'application/vnd.google-apps.unknownmimetype', null),
[],
null,
],
];
}
}
@@ -0,0 +1,73 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace repository_googledocs\local\node;
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/repository/googledocs/tests/repository_googledocs_testcase.php');
/**
* Class containing unit tests for the repository folder node class.
*
* @package repository_googledocs
* @copyright 2021 Mihail Geshoski <mihail@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class folder_node_test extends \repository_googledocs_testcase {
/**
* Test create_node_array().
*
* @dataProvider create_node_array_provider
* @param \stdClass $gdfolder The Google Drive folder object
* @param string $path The current path
* @param array $expected The expected repository folder node array
*/
public function test_create_node_array(\stdClass $gdfolder, string $path, array $expected): void {
$foldernode = new folder_node($gdfolder, $path);
$foldernodearray = $foldernode->create_node_array();
// Assert that the returned repository folder node array by create_node_array() is equal to the expected one.
$this->assertEquals($expected, $foldernodearray);
}
/**
* Data provider for test_create_node_array().
*
* @return array
*/
public function create_node_array_provider(): array {
$rootid = \repository_googledocs::REPOSITORY_ROOT_ID;
return [
'Google Drive folder with modified date.' =>
[
$this->create_google_drive_folder_object('d85b21c0f86cb0', 'Folder', '01/01/21 0:30'),
"{$rootid}|Google+Drive",
$this->create_folder_content_node_array('d85b21c0f86cb0', 'Folder',
"{$rootid}|Google+Drive", '1609432200'),
],
'Google Drive folder without modified date.' =>
[
$this->create_google_drive_folder_object('d85b21c0f86cb0', 'Folder', ''),
'',
$this->create_folder_content_node_array('d85b21c0f86cb0', 'Folder', '', ''),
],
];
}
}