Skip to content

Commit 3225987

Browse files
Connectors: Register Akismet Anti-Spam as a connector.
Akismet is bundled with WordPress core, but it wasn't appearing on the Connectors screen even when present on the file system. Partially reverts [62210], bringing back the main part of [62193]. Follow-up to [62210], [62193]. Developed in #11688. Props audrasjb, bluefuton, davidbaumwald, desrosj, eclev91, gziolo, johnbillion, jorbin, jorgefilipecosta, lukecarbis, matt, matveb, peterwilsoncc, westonruter. See #65012. git-svn-id: https://develop.svn.wordpress.org/trunk@62310 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 5d3de27 commit 3225987

2 files changed

Lines changed: 33 additions & 4 deletions

File tree

src/wp-includes/connectors.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,28 @@ function _wp_connectors_init(): void {
210210
_wp_connectors_register_default_ai_providers( $registry );
211211
}
212212

213+
// Non-AI default connectors.
214+
$registry->register(
215+
'akismet',
216+
array(
217+
'name' => __( 'Akismet Anti-spam' ),
218+
'description' => __( 'Protect your site from spam.' ),
219+
'type' => 'spam_filtering',
220+
'plugin' => array(
221+
'file' => 'akismet/akismet.php',
222+
'is_active' => static function () {
223+
return defined( 'AKISMET_VERSION' );
224+
},
225+
),
226+
'authentication' => array(
227+
'method' => 'api_key',
228+
'credentials_url' => 'https://akismet.com/get/',
229+
'setting_name' => 'wordpress_api_key',
230+
'constant_name' => 'WPCOM_API_KEY',
231+
),
232+
)
233+
);
234+
213235
/**
214236
* Fires when the connector registry is ready for plugins to register connectors.
215237
*

tests/phpunit/tests/connectors/wpConnectorsGetConnectorSettings.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ public function test_returns_expected_connector_keys(): void {
3737
$this->assertArrayHasKey( 'google', $connectors );
3838
$this->assertArrayHasKey( 'openai', $connectors );
3939
$this->assertArrayHasKey( 'anthropic', $connectors );
40+
$this->assertArrayHasKey( 'akismet', $connectors );
4041
$this->assertArrayHasKey( 'mock-connectors-test', $connectors );
41-
$this->assertCount( 4, $connectors );
42+
$this->assertCount( 5, $connectors );
4243
}
4344

4445
/**
@@ -56,7 +57,7 @@ public function test_each_connector_has_required_fields(): void {
5657
$this->assertArrayHasKey( 'description', $connector_data, "Connector '{$connector_id}' is missing 'description'." );
5758
$this->assertIsString( $connector_data['description'], "Connector '{$connector_id}' description should be a string." );
5859
$this->assertArrayHasKey( 'type', $connector_data, "Connector '{$connector_id}' is missing 'type'." );
59-
$this->assertContains( $connector_data['type'], array( 'ai_provider' ), "Connector '{$connector_id}' has unexpected type '{$connector_data['type']}'." );
60+
$this->assertContains( $connector_data['type'], array( 'ai_provider', 'spam_filtering' ), "Connector '{$connector_id}' has unexpected type '{$connector_data['type']}'." );
6061
$this->assertArrayHasKey( 'authentication', $connector_data, "Connector '{$connector_id}' is missing 'authentication'." );
6162
$this->assertIsArray( $connector_data['authentication'], "Connector '{$connector_id}' authentication should be an array." );
6263
$this->assertArrayHasKey( 'method', $connector_data['authentication'], "Connector '{$connector_id}' authentication is missing 'method'." );
@@ -79,10 +80,16 @@ public function test_api_key_connectors_have_setting_name_and_credentials_url():
7980
++$api_key_count;
8081

8182
$this->assertArrayHasKey( 'setting_name', $connector_data['authentication'], "Connector '{$connector_id}' authentication is missing 'setting_name'." );
83+
$this->assertNotEmpty( $connector_data['authentication']['setting_name'], "Connector '{$connector_id}' setting_name should not be empty." );
84+
85+
if ( 'ai_provider' !== $connector_data['type'] ) {
86+
continue;
87+
}
88+
8289
$this->assertSame(
8390
'connectors_ai_' . str_replace( '-', '_', $connector_id ) . '_api_key',
84-
$connector_data['authentication']['setting_name'] ?? null,
85-
"Connector '{$connector_id}' setting_name does not match expected format."
91+
$connector_data['authentication']['setting_name'],
92+
"Connector '{$connector_id}' setting_name does not match expected AI provider format."
8693
);
8794
}
8895

0 commit comments

Comments
 (0)