Refactor and clean up debugging output across multiple files, including mock.php, account.php, and OAuth2 classes. Removed unnecessary var_dump statements for improved code clarity and consistency. Updated MongoDB condition checks in test cases to ensure case-insensitive comparisons.

This commit is contained in:
shimon
2025-08-12 15:20:30 +03:00
parent 24b7c95514
commit c4fb7ecbc1
8 changed files with 30 additions and 168 deletions
+5 -13
View File
@@ -1258,8 +1258,6 @@ App::get('/v1/account/sessions/oauth2/:provider')
'token' => false,
], $scopes);
//var_dump('Url: /v1/account/sessions/oauth2/:provider redirecting to -> '. $oauth2->getLoginURL());
$response
->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
->addHeader('Pragma', 'no-cache')
@@ -1289,14 +1287,11 @@ App::get('/v1/account/sessions/oauth2/callback/:provider/:projectId')
} elseif ($protocol === 'http' && $port !== '80') {
$callbackBase .= ':' . $port;
}
$params = $request->getParams();
$params['project'] = $projectId;
unset($params['projectId']);
var_dump('Url : /v1/account/sessions/oauth2/callback/'.$provider. '/ '.$projectId. 'redirect to '. $callbackBase . '/v1/account/sessions/oauth2/' . $provider . '/redirect?'
. \http_build_query($params));
$response
->addHeader('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0')
->addHeader('Pragma', 'no-cache')
@@ -1375,6 +1370,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
} elseif ($protocol === 'http' && $port !== '80') {
$callbackBase .= ':' . $port;
}
$callback = $callbackBase . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId();
$defaultState = ['success' => $project->getAttribute('url', ''), 'failure' => ''];
$redirect = new Redirect($platforms);
@@ -1456,9 +1452,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
$accessToken = '';
$refreshToken = '';
$accessTokenExpiry = 0;
var_dump('Url: /v1/account/sessions/oauth2/' .$provider. '/redirect: Before attempting to get the tokens');
try {
$accessToken = $oauth2->getAccessToken($code);
$refreshToken = $oauth2->getRefreshToken($code);
@@ -1473,8 +1467,6 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
);
}
var_dump('Url: /v1/account/sessions/oauth2/' .$provider. '/redirect: After getting the tokens');
$oauth2ID = $oauth2->getUserID($accessToken);
if (empty($oauth2ID)) {
$failureRedirect(Exception::USER_MISSING_ID);
@@ -1851,7 +1843,7 @@ App::get('/v1/account/tokens/oauth2/:provider')
} elseif ($protocol === 'http' && $port !== '80') {
$callbackBase .= ':' . $port;
}
var_dump( $callbackBase . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId());
$callback = $callbackBase . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId();
$providerEnabled = $project->getAttribute('oAuthProviders', [])[$provider . 'Enabled'] ?? false;
-2
View File
@@ -31,7 +31,6 @@ App::get('/v1/mock/tests/general/oauth2')
->param('state', '', new Text(1024), 'OAuth2 state.')
->inject('response')
->action(function (string $client_id, string $redirectURI, string $scope, string $state, Response $response) {
//var_dump('Url: /v1/mock/tests/general/oauth2 redirecting to -> ' . $redirectURI . '?' . \http_build_query(['code' => 'abcdef', 'state' => $state]));
$response->redirect($redirectURI . '?' . \http_build_query(['code' => 'abcdef', 'state' => $state]));
});
@@ -49,7 +48,6 @@ App::get('/v1/mock/tests/general/oauth2/token')
->param('refresh_token', '', new Text(100), 'OAuth2 refresh token.', true)
->inject('response')
->action(function (string $client_id, string $client_secret, string $grantType, string $redirectURI, string $code, string $refreshToken, Response $response) {
// var_dump('Url: /v1/mock/tests/general/oauth2/token');
if ($client_id != '1') {
throw new Exception(Exception::GENERAL_MOCK, 'Invalid client ID');
+7 -3
View File
@@ -438,9 +438,10 @@ App::init()
/*
* Abuse Check
*/
$abuseKeyLabel = $route->getLabel('abuse-key', 'url:{url},ip:{ip}');
$timeLimitArray = [];
$abuseKeyLabel = (!is_array($abuseKeyLabel)) ? [$abuseKeyLabel] : $abuseKeyLabel;
foreach ($abuseKeyLabel as $abuseKey) {
@@ -476,7 +477,7 @@ App::init()
$limit = $timeLimit->limit();
$time = $timeLimit->time() + $route->getLabel('abuse-time', 3600);
if ($limit && ($remaining < $closestLimit || is_null($closestLimit))) {
$closestLimit = $remaining;
$response
@@ -486,7 +487,10 @@ App::init()
}
$enabled = System::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled';
var_dump(
[
'enabled' => $enabled,
]);
if (
$enabled // Abuse is enabled
&& !$isAppUser // User is not API key
+7 -131
View File
@@ -182,40 +182,17 @@ abstract class OAuth2
* @param string $url
* @param array $headers
* @param string $payload
* @param bool $debug
*
* @return string
*/
protected function request(string $method, string $url = '', array $headers = [], string $payload = '', bool $debug = true): string
protected function request(string $method, string $url = '', array $headers = [], string $payload = ''): string
{
if ($debug) {
error_log("OAuth2 Debug: Starting request to $url with method $method");
}
$ch = \curl_init($url);
\curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
\curl_setopt($ch, CURLOPT_HEADER, 0);
\curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
\curl_setopt($ch, CURLOPT_USERAGENT, 'Appwrite OAuth2');
// Set timeout options
\curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 10 seconds to establish connection
\curl_setopt($ch, CURLOPT_TIMEOUT,5); // 30 seconds total timeout
// Additional options to prevent silent failures
\curl_setopt($ch, CURLOPT_FAILONERROR, false); // Don't fail on HTTP errors, we'll handle them
\curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow redirects
\curl_setopt($ch, CURLOPT_MAXREDIRS, 5); // Max 5 redirects
\curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Verify SSL
\curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Verify SSL host
// Enable verbose debugging if requested
if ($debug) {
\curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
\curl_setopt($ch, CURLOPT_STDERR, $verbose);
}
if (!empty($payload)) {
\curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
@@ -223,119 +200,18 @@ abstract class OAuth2
}
\curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if ($debug) {
error_log("OAuth2 Debug: Executing cURL request...");
}
// Send the request & save response to $response
$response = \curl_exec($ch);
if ($debug) {
error_log("OAuth2 Debug: cURL execution completed. Response type: " . gettype($response));
if ($response === false) {
error_log("OAuth2 Debug: cURL returned false");
} elseif ($response === null) {
error_log("OAuth2 Debug: cURL returned null");
} else {
error_log("OAuth2 Debug: Response length: " . strlen($response));
}
}
// Check for cURL errors
$error = \curl_error($ch);
$errno = \curl_errno($ch);
$info = \curl_getinfo($ch);
if ($debug) {
error_log("OAuth2 Debug: cURL errno: $errno, error: $error");
error_log("OAuth2 Debug: HTTP code: " . ($info['http_code'] ?? 'unknown'));
error_log("OAuth2 Debug: Total time: " . ($info['total_time'] ?? 'unknown') . "s");
}
// Get verbose debug info if enabled
$verboseLog = '';
if ($debug && isset($verbose)) {
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
fclose($verbose);
if ($verboseLog) {
error_log("OAuth2 Debug: Verbose log: " . $verboseLog);
}
}
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
\curl_close($ch);
// Handle cURL errors - check for both explicit errors and silent failures
if ($errno !== CURLE_OK) {
$errorMessage = "cURL error: $error (errno: $errno)";
// Add specific timeout error messages
if ($errno === CURLE_OPERATION_TIMEDOUT) {
$errorMessage .= " - Request timed out after {$info['total_time']} seconds";
} elseif ($errno === CURLE_COULDNT_CONNECT) {
$errorMessage .= " - Could not connect to server";
} elseif ($errno === CURLE_COULDNT_RESOLVE_HOST) {
$errorMessage .= " - Could not resolve hostname";
} elseif ($errno === CURLE_SSL_CONNECT_ERROR) {
$errorMessage .= " - SSL connection failed";
} elseif ($errno === CURLE_SSL_CERTPROBLEM) {
$errorMessage .= " - SSL certificate problem";
}
// Include verbose log in debug mode
if ($debug && $verboseLog) {
$errorMessage .= "\nVerbose log:\n" . $verboseLog;
}
throw new Exception($errorMessage, $errno);
}
// Check for silent failures - when cURL returns false but no error
if ($response === false && $errno === CURLE_OK) {
$errorMessage = "cURL returned false but no error was reported";
if ($debug) {
$errorMessage .= "\nDebug info: " . json_encode($info);
}
throw new Exception($errorMessage, 0);
}
// Check for null response
if ($response === null) {
$errorMessage = "cURL returned null response";
if ($debug) {
$errorMessage .= "\nDebug info: " . json_encode($info);
}
throw new Exception($errorMessage, 0);
}
// Check for empty response with successful HTTP code
if (empty($response) && ($info['http_code'] >= 200 && $info['http_code'] < 300)) {
if ($debug) {
error_log("OAuth2 Debug: Warning - Empty response with successful HTTP code: " . $info['http_code']);
}
}
$code = $info['http_code'];
if ($code >= 400) {
$errorMessage = "HTTP error $code: $response";
if ($debug) {
$errorMessage .= "\nRequest info: " . json_encode([
'url' => $url,
'method' => $method,
'headers' => $headers,
'payload_length' => strlen($payload),
'curl_info' => $info
]);
}
throw new Exception($errorMessage, $code);
}
if ($debug) {
error_log("OAuth2 Debug: Request successful, returning response");
throw new Exception($response, $code);
}
return (string)$response;
}
}
}
+1 -9
View File
@@ -56,16 +56,8 @@ class Mock extends OAuth2
*/
protected function getTokens(string $code): array
{
if (empty($this->tokens)) {
var_dump('Tring to get tokes from url: http://localhost/' . $this->version . '/mock/tests/general/oauth2/token?' .
\http_build_query([
'client_id' => $this->appID,
'redirect_uri' => $this->callback,
'client_secret' => $this->appSecret,
'code' => $code
]));
var_dump('Sending.......');
if (empty($this->tokens)) {
$this->tokens = \json_decode($this->request(
'GET',
'http://localhost/' . $this->version . '/mock/tests/general/oauth2/token?' .
@@ -4442,7 +4442,7 @@ trait DatabasesBase
public function testOneToOneRelationship(array $data): array
{
if('mongodb' === System::getEnv('_APP_DB_ADAPTER', 'mongodb')){
if('mongodb' === strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){
$this->markTestSkipped('MongoDB is not supported for this test');
}
@@ -4689,7 +4689,7 @@ trait DatabasesBase
public function testOneToManyRelationship(array $data): array
{
if('mongodb' === System::getEnv('_APP_DB_ADAPTER', 'mongodb')){
if('mongodb' === strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){
$this->markTestSkipped('MongoDB is not supported for this test');
}
@@ -4849,7 +4849,7 @@ trait DatabasesBase
public function testManyToOneRelationship(array $data): array
{
if('mongodb' === System::getEnv('_APP_DB_ADAPTER', 'mongodb')){
if('mongodb' === strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){
$this->markTestSkipped('MongoDB is not supported for this test');
}
@@ -5006,7 +5006,7 @@ trait DatabasesBase
public function testManyToManyRelationship(array $data): array
{
if('mongodb' === System::getEnv('_APP_DB_ADAPTER', 'mongodb')){
if('mongodb' === strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){
$this->markTestSkipped('MongoDB is not supported for this test');
}
@@ -5404,7 +5404,7 @@ trait DatabasesBase
public function testUpdateWithExistingRelationships(array $data): void
{
if('mongodb' === System::getEnv('_APP_DB_ADAPTER', 'mongodb')){
if('mongodb' === strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){
$this->markTestSkipped('MongoDB is not supported for this test');
}
@@ -448,7 +448,7 @@ class ProjectsConsoleClientTest extends Scope
$this->assertEquals(404, $response['headers']['status-code']);
$projectId = str_repeat('very_long_id', 10);
if('mongodb' === System::getEnv('_APP_DB_ADAPTER', 'mongodb')){ // to support mongodb UID length
if('mongodb' === strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){ // to support mongodb UID length
$projectId = str_repeat('long_id', 20);
}
@@ -4809,7 +4809,7 @@ class ProjectsConsoleClientTest extends Scope
/**
* Test for SUCCESS
*/
for ($i = 0; $i < 15; $i++) {
for ($i = 0; $i < 10; $i++) {
$response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', [
'content-type' => 'application/json',
'x-appwrite-project' => $projectId,
@@ -4817,7 +4817,7 @@ class ProjectsConsoleClientTest extends Scope
'email' => 'user@appwrite.io',
'password' => 'password'
]);
//var_dump($response['headers']['status-code']);
$this->assertEquals(401, $response['headers']['status-code']);
}
$response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', [
@@ -4827,7 +4827,7 @@ class ProjectsConsoleClientTest extends Scope
'email' => 'user@appwrite.io',
'password' => 'password'
]);
//var_dump($response['headers']['status-code']);
$this->assertEquals(429, $response['headers']['status-code']);
$response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', [
+1 -1
View File
@@ -695,7 +695,7 @@ trait UsersBase
$this->assertCount(1, $response['body']['users']);
//mongodb fulltext search support only in complete words.
if('mongodb' !== System::getEnv('_APP_DB_ADAPTER', 'mongodb')) {
if('mongodb' !== strtolower(System::getEnv('_APP_DB_ADAPTER', 'mongodb'))){
$response = $this->client->call(Client::METHOD_GET, '/users', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],