public function SearchApiAcquiaUnitTestCase::testApacheSolrOverride in Acquia Search for Search API 7.2
Tests that Search API Acquia properly overrides the connection details to avoid unintended writing to a wrong search index.
File
- tests/
search_api_acquia.test, line 45 - Tests for the Search API Acquia module.
Class
- SearchApiAcquiaUnitTestCase
- Unit tests of the functionality of the Search API Acquia module.
Code
public function testApacheSolrOverride() {
global $conf;
$acquia_identifier = $this->id;
$site_folder = $this
->randomName(32);
$solr_hostname = $this
->randomName(10) . '.acquia-search.com';
$available_cores = array(
array(
'balancer' => $solr_hostname,
'core_id' => "{$acquia_identifier}.dev.{$site_folder}",
),
array(
'balancer' => $solr_hostname,
'core_id' => "{$acquia_identifier}.dev.testdbname",
),
array(
'balancer' => $solr_hostname,
'core_id' => "{$acquia_identifier}",
),
);
$server_id = 'ACQUIA';
// No Acquia hosting and DB detected - should override into Readonly.
unset($conf['search_api_acquia_overrides']);
$ah_env = NULL;
$ah_db_name = '';
require_once dirname(dirname(__FILE__)) . '/src/SAPIPreferredSearchCoreService.php';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, 'ACQUIA');
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_AUTO_SHOULD_OVERRIDE_READ_ONLY);
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
// Acquia Dev hosting environment detected - configs point to the index on the Dev environment.
unset($conf['search_api_acquia_overrides']);
$ah_env = 'dev';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, $server_id);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_OVERRIDE_AUTO_SET);
$this
->assertTrue(!empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['host'], $solr_hostname);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['path'], "/solr/{$acquia_identifier}.dev.{$site_folder}");
// Acquia dev environment and a DB name.
unset($conf['search_api_acquia_overrides']);
$ah_env = 'dev';
$ah_db_name = 'testdbname';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, $server_id);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_OVERRIDE_AUTO_SET);
$this
->assertTrue(!empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['host'], $solr_hostname);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['path'], "/solr/{$acquia_identifier}.dev.{$ah_db_name}");
// Acquia Test environment and a DB name. According to the mock, no cores available for the Test environment so it is read only.
unset($conf['search_api_acquia_overrides']);
$ah_env = 'test';
$ah_db_name = 'testdbname';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, $server_id);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_AUTO_SHOULD_OVERRIDE_READ_ONLY);
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['host']));
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['path']));
// Acquia Prod environment and a DB name but AH_PRODUCTION isn't set - so read only.
unset($conf['search_api_acquia_overrides']);
$ah_env = 'prod';
$ah_db_name = 'testdbname';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, $server_id);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_AUTO_SHOULD_OVERRIDE_READ_ONLY);
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['host']));
$this
->assertTrue(empty($conf['search_api_acquia_overrides']['ACQUIA']['path']));
// Acquia Prod environment and a DB name and AH_PRODUCTION is set - so it should override to connect to the prod index.
unset($conf['search_api_acquia_overrides']);
$_SERVER['AH_PRODUCTION'] = 1;
$ah_env = 'prod';
$ah_db_name = 'testdbname';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, $server_id);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_OVERRIDE_AUTO_SET);
$this
->assertTrue(!empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['host'], $solr_hostname);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['path'], "/solr/{$acquia_identifier}");
// Trying to override already overridden settings should not succeed.
unset($_SERVER['AH_PRODUCTION']);
$ah_env = 'dev';
$ah_db_name = 'testdbname';
$core_service = new SAPIPreferredSearchCoreService($acquia_identifier, $ah_env, $site_folder, $ah_db_name, $available_cores);
search_api_acquia_override_server($core_service, $server_id);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['overridden_by_acquia_search'], SEARCH_API_ACQUIA_OVERRIDE_AUTO_SET);
$this
->assertTrue(!empty($conf['search_api_acquia_overrides']['ACQUIA']['derived_key']));
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['host'], $solr_hostname);
$this
->assertIdentical($conf['search_api_acquia_overrides']['ACQUIA']['path'], "/solr/{$acquia_identifier}");
}