silinternational / google-api-php-client-mock
尝试创建一个用于单元和功能测试的 Google API PHP 客户端智能模拟。
Requires
- php: ^8.2
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
- google/apiclient: ^v2.15.0
- google/apiclient-services: ^v0.312.0
- webmozart/assert: 1.11.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- silinternational/psr3-adapters: ^3.0
- dev-develop
- 2.11.2
- 2.11.1
- 2.11.0
- 2.10.0
- 2.9.0
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.1
- 0.6.0
- 0.5.1
- 0.5.0
- 0.4.0
- 0.3.2
- 0.3.0
- 0.2.1
- 0.2
- 0.1
- dev-main
- dev-main-1.x
- dev-develop-1.x
This package is auto-updated.
Last update: 2024-09-06 22:38:40 UTC
README
这是一个用于单元和功能测试的小规模 Google API PHP 客户端智能模拟。
概述
此软件旨在模拟与 Google Workspace 账户相关的 Google API 的部分,特别是与用户和用户别名相关的调用。
目录
Google 服务目录(GSD)的属性包括...
- $asps,被设置为 GSD Asps_Resource
- $members,被设置为 GSD Members_Resource
- $users,被设置为 GSD Users_Resource
- $users_aliases,被设置为 GSD UsersAliases_Resource
- $tokens,被设置为 GSD Tokens_Resource
- $twoStepVerification,被设置为 GSD TwoStepVerification_Resource
- $verificationCodes,被设置为 GSD VerificationCodes_Resource
Asps_Resource
Asps_Resource 用于管理用户的 App Specific Passwords(ASPs)。此模拟实现...
- listAsps()
Members_Resource
Members_Resource 用于管理组成员。此模拟实现...
- insert()
- listMembers()
Users_Resource
Users_Resource 有各种管理 Google Apps 用户的函数。此模拟实现其中的三个...
- delete()
- get()
- insert()
- update()
- listUsers()
UsersAliases_Resource
UsersAliases_Resource 有各种管理 Google Apps 用户别名的函数。此模拟实现...
- delete()
- insert()
- listUsersAliases()
Tokens_Resource
Tokens_Resource 用于管理用户的 OAuth 访问令牌。此模拟实现...
- listTokens()
TwoStepVerification_Resource
TwoStepVerification_Resource 用于关闭 2SV。此模拟实现...
- turnOff()
VerificationCodes_Resource
VerificationCodes_Resource 用于管理用户的 OAuth 访问令牌。此模拟实现...
- generate()
- invalidate()
- listVerificationCodes()
Gmail
Gmail API 对象的属性包括...
- $users_settings
- $users_settings_delegates
- $users_settings_forwardingAddresses
UsersSettings
此模拟实现的 UsersSettings 资源上的方法包括...
- updateImap()
- updatePop()
UsersSettingsDelegates
此模拟实现的 UsersSettingsDelegates 资源上的方法包括...
- create()
- delete()
- get()
- listUsersSettingsDelegates()
UsersSettingsForwardingAddresses
此模拟实现的 UsersSettingsForwardingAddresses 资源上的方法包括...
- listUsersSettingsForwardingAddresses()
单元测试
您应该已安装 docker 和 docker compose 插件。要运行测试
- make it-now
数据持久性
为了使此模拟能够使用数据,它使用一个 Sqlite 数据库文件。默认路径和文件名是 ... SilMock/DataStore/Sqlite/Google_Service_Data.db。要覆盖此默认值,UsersResource 和 UsersAliasesResource 类的构造函数接受一个可选的字符串参数。
数据库由 SilMock/DataStore/Sqlite/SqliteUtils.php 访问/管理。它有一个表,包含四个列 ...
- id = INTEGER PRIMARY KEY,
- type = TEXT,例如 "directory",
- class = TEXT,例如 "user" 或 "users_alias",
- data = TEXT
数据字段包含与GSD对象属性相关的键值对的json。数据是通过使用php json_encode函数准备的。
测试用例
有一个类帮助处理单元测试中的数据 ... SilMock\Google\Service\GoogleFixtures.php。其构造函数接受一个可选参数,用于指定SQLite数据库文件的路径和名称。它有两个方法 ...
- addFixtures($fixtures),期望一个包含3个元素的数组(类型、类、数据)。
- removeAllFixtures()
对Mock本身的单元测试
SilMock/tests文件夹包含了针对这个Mock的三个主要部分的phpunit测试(目录、GoogleFixtures、SqliteUtils)。这些应该有助于提供如何使用Mock的示例。
示例
在Mock和真实GSD之间切换
public static function useRealGoogle() {
return ( ! isset (\Yii::app()->params['use_real_google']) ||
\Yii::app()->params['use_real_google']);
}
public static function getGoogleServiceDirectory($client) {
if (self::useRealGoogle()) {
return new Google\Service\Directory($client);
}
$db_path = null;
if (isset(\Yii::app()->params['googleMockDbPath'])) {
$db_path = \Yii::app()->params['googleMockDbPath'];
}
return new SilMock\Google\Service\Directory($client, $db_path);
}
管理用户
$dir = self::getGoogleServiceDirectory($client);
$google_user = new Google\Service\Directory\User();
$google_user = $dir->users->insert($google_user);
$google_user = $dir->users->get($usersEmail);
$google_user->suspended = true;
$google_user->suspensionReason = 'ADMIN';
$account = $dir->users->update($users_email, $google_user);
管理用户的别名
$dir = self::getGoogleServiceDirectory($client);
$google_alias = new Google\Service\Directory\Alias();
$google_alias->setAlias($alias);
$alias = $dir->users_aliases->insert($users_email, $google_alias);
$aliases = $dir->users_aliases->listUsersAliases($users_email);
$alias = $dir->users_aliases->delete($users_email, $alias);