def set_up(self): self.test_app = TethysApp.objects.get(package='test_app') self.wps = WebProcessingService( name='test_wps', endpoint='http://localhost/wps/WebProcessingService', username='******', password='******') self.wps.save() self.sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', username='******', password='******') self.sds.save() self.ds = DatasetService( name='test_ds', endpoint='http://localhost/api/3/action/', apikey='foo', ) self.ds.save() self.ps = PersistentStoreService(name='test_ps', host='localhost', port='5432', username='******', password='******') self.ps.save()
def test_get_value(self): sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', public_endpoint='http://publichost/geoserver/rest/', apikey='test_api', username='******', password='******', ) sds.save() sds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver') sds_setting.spatial_dataset_service = sds sds_setting.save() ret = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver').get_value() # Check result self.assertEqual('test_sds', ret.name) self.assertEqual('http://localhost/geoserver/rest/', ret.endpoint) self.assertEqual('http://publichost/geoserver/rest/', ret.public_endpoint) self.assertEqual('test_api', ret.apikey) self.assertEqual('foo', ret.username) self.assertEqual('password', ret.password)
def services_create_spatial_command(args): """ Interact with Tethys Services (Spatial/Persistent Stores) to create them and/or link them to existing apps """ load_apps() from tethys_services.models import SpatialDatasetService name = None try: name = args.name connection = args.connection parts = connection.split('@') cred_parts = parts[0].split(':') service_username = cred_parts[0] service_password = cred_parts[1] endpoint = parts[1] public_endpoint = args.public_endpoint or '' apikey = args.apikey or '' if 'http' not in endpoint or '://' not in endpoint: raise IndexError() if public_endpoint and 'http' not in public_endpoint or '://' not in public_endpoint: raise FormatError() endpoint = add_geoserver_rest_to_endpoint(endpoint) if public_endpoint: public_endpoint = add_geoserver_rest_to_endpoint(public_endpoint) new_persistent_service = SpatialDatasetService( name=name, endpoint=endpoint, public_endpoint=public_endpoint, apikey=apikey, username=service_username, password=service_password) new_persistent_service.save() with pretty_output(FG_GREEN) as p: p.write('Successfully created new Spatial Dataset Service!') except IndexError: with pretty_output(FG_RED) as p: p.write('The connection argument (-c) must be of the form ' '"<username>:<password>@<protocol>//<host>:<port>".') except FormatError: with pretty_output(FG_RED) as p: p.write( 'The public_endpoint argument (-p) must be of the form "<protocol>//<host>:<port>".' ) except IntegrityError: with pretty_output(FG_RED) as p: p.write( 'Spatial Dataset Service with name "{0}" already exists. Command aborted.' .format(name))
def test_get_value_check_if_thredds(self, mock_TDSCatalog): sds = SpatialDatasetService( name='test_sds', engine=SpatialDatasetService.THREDDS, endpoint='http://localhost/thredds/', public_endpoint='http://publichost/thredds/', apikey='test_api', username='******', password='******', ) sds.save() sds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_thredds') sds_setting.spatial_dataset_service = sds sds_setting.save() # Check as_engine ret = self.test_app.settings_set.select_subclasses().get( name='primary_thredds').get_value(as_engine=True) # Check result mock_TDSCatalog.assert_called_with( 'http://localhost/thredds/catalog.xml') self.assertEqual(mock_TDSCatalog(), ret) # Check as wms ret = self.test_app.settings_set.select_subclasses().get( name='primary_thredds').get_value(as_wms=True) # Check result self.assertEqual('http://localhost/thredds/wms', ret) # Check as wfs self.assertRaises(ValueError, self.test_app.settings_set.select_subclasses().get( name='primary_thredds').get_value, as_wfs=True) # Check as wcs ret = self.test_app.settings_set.select_subclasses().get( name='primary_thredds').get_value(as_wcs=True) # Check result self.assertEqual('http://localhost/thredds/wcs', ret) # Check as_endpoint ret = self.test_app.settings_set.select_subclasses().get( name='primary_thredds').get_value(as_endpoint=True) # Check result self.assertEqual('http://localhost/thredds/', ret) # Check as_endpoint ret = self.test_app.settings_set.select_subclasses().get(name='primary_thredds').\ get_value(as_public_endpoint=True) # Check result self.assertEqual('http://publichost/thredds/', ret)
def test_get_value_check_if_geoserver(self): sds = SpatialDatasetService( name='test_sds', engine=SpatialDatasetService.GEOSERVER, endpoint='http://localhost/geoserver/rest/', public_endpoint='http://publichost/geoserver/rest/', apikey='test_api', username='******', password='******', ) sds.save() sds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver') sds_setting.spatial_dataset_service = sds sds_setting.save() # Check as_engine ret = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver').get_value(as_engine=True) # Check result self.assertEqual('GEOSERVER', ret.type) self.assertEqual('http://localhost/geoserver/rest/', ret.endpoint) # Check as wms ret = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver').get_value(as_wms=True) # Check result self.assertEqual('http://localhost/geoserver/wms', ret) # Check as wfs ret = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver').get_value(as_wfs=True) # Check result self.assertEqual('http://localhost/geoserver/ows', ret) # Check as wcs ret = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver').get_value(as_wcs=True) # Check result self.assertEqual('http://localhost/geoserver/wcs', ret) # Check as_endpoint ret = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver').get_value(as_endpoint=True) # Check result self.assertEqual('http://localhost/geoserver/rest/', ret) # Check as_endpoint ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').\ get_value(as_public_endpoint=True) # Check result self.assertEqual('http://publichost/geoserver/rest/', ret)
def set_up(self): self.test_app = TethysApp.objects.get(package='test_app') self.wps = WebProcessingService( name='test_wps', endpoint='http://localhost/wps/WebProcessingService', username='******', password='******' ) self.wps.save() self.sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', username='******', password='******' ) self.sds.save() self.ds = DatasetService( name='test_ds', endpoint='http://localhost/api/3/action/', apikey='foo', ) self.ds.save() self.ps = PersistentStoreService( name='test_ps', host='localhost', port='5432', username='******', password='******' ) self.ps.save()
def services_create_spatial_command(args): """ Interact with Tethys Services (Spatial/Persistent Stores) to create them and/or link them to existing apps """ from tethys_services.models import SpatialDatasetService name = None try: name = args.name connection = args.connection parts = connection.split('@') cred_parts = parts[0].split(':') service_username = cred_parts[0] service_password = cred_parts[1] endpoint = parts[1] public_endpoint = args.public_endpoint or '' apikey = args.apikey or '' if 'http' not in endpoint or '://' not in endpoint: raise IndexError() if public_endpoint and 'http' not in public_endpoint or '://' not in public_endpoint: raise FormatError() endpoint = add_geoserver_rest_to_endpoint(endpoint) if public_endpoint: public_endpoint = add_geoserver_rest_to_endpoint(public_endpoint) new_persistent_service = SpatialDatasetService(name=name, endpoint=endpoint, public_endpoint=public_endpoint, apikey=apikey, username=service_username, password=service_password) new_persistent_service.save() with pretty_output(FG_GREEN) as p: p.write('Successfully created new Spatial Dataset Service!') except IndexError: with pretty_output(FG_RED) as p: p.write('The connection argument (-c) must be of the form ' '"<username>:<password>@<protocol>//<host>:<port>".') except FormatError: with pretty_output(FG_RED) as p: p.write('The public_endpoint argument (-p) must be of the form ' '"<protocol>//<host>:<port>".') except IntegrityError: with pretty_output(FG_RED) as p: p.write('Spatial Dataset Service with name "{0}" already exists. Command aborted.'.format(name))
def test_get_value_check_if(self): sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', public_endpoint='http://publichost/geoserver/rest/', apikey='test_api', username='******', password='******', ) sds.save() sds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver') sds_setting.spatial_dataset_service = sds sds_setting.save() # Check as_engine ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').get_value(as_engine=True) # Check result self.assertEqual('GEOSERVER', ret.type) self.assertEqual('http://localhost/geoserver/rest/', ret.endpoint) # Check as wms ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').get_value(as_wms=True) # Check result self.assertEqual('http://localhost/geoserver/wms', ret) # Check as wfs ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').get_value(as_wfs=True) # Check result self.assertEqual('http://localhost/geoserver/ows', ret) # Check as_endpoint ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').get_value(as_endpoint=True) # Check result self.assertEqual('http://localhost/geoserver/rest/', ret) # Check as_endpoint ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').\ get_value(as_public_endpoint=True) # Check result self.assertEqual('http://publichost/geoserver/rest/', ret)
def test_get_value(self): sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', public_endpoint='http://publichost/geoserver/rest/', apikey='test_api', username='******', password='******', ) sds.save() sds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver') sds_setting.spatial_dataset_service = sds sds_setting.save() ret = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver').get_value() # Check result self.assertEqual('test_sds', ret.name) self.assertEqual('http://localhost/geoserver/rest/', ret.endpoint) self.assertEqual('http://publichost/geoserver/rest/', ret.public_endpoint) self.assertEqual('test_api', ret.apikey) self.assertEqual('foo', ret.username) self.assertEqual('password', ret.password)
class TethysAppTests(TethysTestCase): def set_up(self): self.test_app = TethysApp.objects.get(package='test_app') self.wps = WebProcessingService( name='test_wps', endpoint='http://localhost/wps/WebProcessingService', username='******', password='******') self.wps.save() self.sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', username='******', password='******') self.sds.save() self.ds = DatasetService( name='test_ds', endpoint='http://localhost/api/3/action/', apikey='foo', ) self.ds.save() self.ps = PersistentStoreService(name='test_ps', host='localhost', port='5432', username='******', password='******') self.ps.save() def tear_down(self): self.wps.delete() self.ps.delete() self.ds.delete() self.sds.delete() def test_str(self): ret = str(self.test_app) self.assertEqual('Test App', ret) def test_add_settings(self): new_setting = TethysAppSetting(name='new_setting', required=False) self.test_app.add_settings([new_setting]) app = TethysApp.objects.get(package='test_app') settings = app.settings_set.filter(name='new_setting') self.assertEqual(1, len(settings)) def test_add_settings_add_same_setting_twice(self): new_setting = TethysAppSetting(name='new_setting', required=False) new_setting_same_name = TethysAppSetting(name='new_setting', required=False) self.test_app.add_settings([new_setting, new_setting_same_name]) app = TethysApp.objects.get(package='test_app') settings = app.settings_set.filter(name='new_setting') self.assertEqual(1, len(settings)) def test_settings_prop(self): ret = self.test_app.settings self.assertEqual(13, len(ret)) for r in ret: self.assertIsInstance(r, TethysAppSetting) def test_custom_settings_prop(self): custom_setting = self.test_app.settings_set.select_subclasses().get( name='default_name') custom_setting.value = 'foo' custom_setting.save() ret = self.test_app.custom_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'default_name': self.assertEqual('foo', r.value) def test_dataset_service_settings_prop(self): ds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_ckan') ds_setting.dataset_service = self.ds ds_setting.save() ret = self.test_app.dataset_service_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary_ckan': self.assertEqual('test_ds', r.dataset_service.name) self.assertEqual('foo', r.dataset_service.apikey) self.assertEqual('http://localhost/api/3/action/', r.dataset_service.endpoint) def test_spatial_dataset_service_settings_prop(self): sds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver') sds_setting.spatial_dataset_service = self.sds sds_setting.save() ret = self.test_app.spatial_dataset_service_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary_geoserver': self.assertEqual('test_sds', r.spatial_dataset_service.name) self.assertEqual('http://localhost/geoserver/rest/', r.spatial_dataset_service.endpoint) self.assertEqual('foo', r.spatial_dataset_service.username) self.assertEqual('password', r.spatial_dataset_service.password) def test_wps_services_settings_prop(self): wps_setting = self.test_app.settings_set.select_subclasses().get( name='primary_52n') wps_setting.web_processing_service = self.wps wps_setting.save() ret = self.test_app.wps_services_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary_52n': self.assertEqual('test_wps', r.web_processing_service.name) self.assertEqual('http://localhost/wps/WebProcessingService', r.web_processing_service.endpoint) self.assertEqual('foo', r.web_processing_service.username) self.assertEqual('password', r.web_processing_service.password) def test_persistent_store_connection_settings_prop(self): ps_setting = self.test_app.settings_set.select_subclasses().get( name='primary') ps_setting.persistent_store_service = self.ps ps_setting.save() ret = self.test_app.persistent_store_connection_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary': self.assertEqual('test_ps', r.persistent_store_service.name) self.assertEqual('localhost', r.persistent_store_service.host) self.assertEqual(5432, r.persistent_store_service.port) self.assertEqual('foo', r.persistent_store_service.username) self.assertEqual('password', r.persistent_store_service.password) def test_persistent_store_database_settings_prop(self): ps_setting = self.test_app.settings_set.select_subclasses().get( name='spatial_db') ps_setting.persistent_store_service = self.ps ps_setting.save() ret = self.test_app.persistent_store_database_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'spatial_db': self.assertEqual('test_ps', r.persistent_store_service.name) self.assertEqual('localhost', r.persistent_store_service.host) self.assertEqual(5432, r.persistent_store_service.port) self.assertEqual('foo', r.persistent_store_service.username) self.assertEqual('password', r.persistent_store_service.password) def test_configured_prop_required_and_set(self): # See: test_app.app for expected settings configuration # Set required settings custom_setting = self.test_app.settings_set.select_subclasses().get( name='default_name') custom_setting.value = 'foo' custom_setting.save() ds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_ckan') ds_setting.dataset_service = self.ds ds_setting.save() sds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver') sds_setting.spatial_dataset_service = self.sds sds_setting.save() wps_setting = self.test_app.settings_set.select_subclasses().get( name='primary_52n') wps_setting.web_processing_service = self.wps wps_setting.save() ps_setting = self.test_app.settings_set.select_subclasses().get( name='primary') ps_setting.persistent_store_service = self.ps ps_setting.save() ps_db_setting = self.test_app.settings_set.select_subclasses().get( name='spatial_db') ps_db_setting.persistent_store_service = self.ps ps_db_setting.save() ret = self.test_app.configured self.assertTrue(ret) def test_configured_prop_required_no_value(self): # See: test_app.app for expected settings configuration # Set required settings custom_setting = self.test_app.settings_set.select_subclasses().get( name='default_name') custom_setting.value = '' # <-- NOT SET / NO VALUE custom_setting.save() ds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_ckan') ds_setting.dataset_service = self.ds ds_setting.save() sds_setting = self.test_app.settings_set.select_subclasses().get( name='primary_geoserver') sds_setting.spatial_dataset_service = self.sds sds_setting.save() wps_setting = self.test_app.settings_set.select_subclasses().get( name='primary_52n') wps_setting.web_processing_service = self.wps wps_setting.save() ps_setting = self.test_app.settings_set.select_subclasses().get( name='primary') ps_setting.persistent_store_service = self.ps ps_setting.save() psd_setting = self.test_app.settings_set.select_subclasses().get( name='spatial_db') psd_setting.persistent_store_service = self.ps psd_setting.save() ret = self.test_app.configured self.assertFalse(ret) def test_configured_prop_not_assigned_exception(self): ret = self.test_app.configured self.assertFalse(ret)
class TethysAppTests(TethysTestCase): def set_up(self): self.test_app = TethysApp.objects.get(package='test_app') self.wps = WebProcessingService( name='test_wps', endpoint='http://localhost/wps/WebProcessingService', username='******', password='******' ) self.wps.save() self.sds = SpatialDatasetService( name='test_sds', endpoint='http://localhost/geoserver/rest/', username='******', password='******' ) self.sds.save() self.ds = DatasetService( name='test_ds', endpoint='http://localhost/api/3/action/', apikey='foo', ) self.ds.save() self.ps = PersistentStoreService( name='test_ps', host='localhost', port='5432', username='******', password='******' ) self.ps.save() def tear_down(self): self.wps.delete() self.ps.delete() self.ds.delete() self.sds.delete() def test_str(self): ret = str(self.test_app) self.assertEqual('Test App', ret) def test_add_settings(self): new_setting = TethysAppSetting( name='new_setting', required=False ) self.test_app.add_settings([new_setting]) app = TethysApp.objects.get(package='test_app') settings = app.settings_set.filter(name='new_setting') self.assertEqual(1, len(settings)) def test_add_settings_add_same_setting_twice(self): new_setting = TethysAppSetting( name='new_setting', required=False ) new_setting_same_name = TethysAppSetting( name='new_setting', required=False ) self.test_app.add_settings([new_setting, new_setting_same_name]) app = TethysApp.objects.get(package='test_app') settings = app.settings_set.filter(name='new_setting') self.assertEqual(1, len(settings)) def test_settings_prop(self): ret = self.test_app.settings self.assertEqual(12, len(ret)) for r in ret: self.assertIsInstance(r, TethysAppSetting) def test_custom_settings_prop(self): custom_setting = self.test_app.settings_set.select_subclasses().get(name='default_name') custom_setting.value = 'foo' custom_setting.save() ret = self.test_app.custom_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'default_name': self.assertEqual('foo', r.value) def test_dataset_service_settings_prop(self): ds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_ckan') ds_setting.dataset_service = self.ds ds_setting.save() ret = self.test_app.dataset_service_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary_ckan': self.assertEqual('test_ds', r.dataset_service.name) self.assertEqual('foo', r.dataset_service.apikey) self.assertEqual('http://localhost/api/3/action/', r.dataset_service.endpoint) def test_spatial_dataset_service_settings_prop(self): sds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver') sds_setting.spatial_dataset_service = self.sds sds_setting.save() ret = self.test_app.spatial_dataset_service_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary_geoserver': self.assertEqual('test_sds', r.spatial_dataset_service.name) self.assertEqual('http://localhost/geoserver/rest/', r.spatial_dataset_service.endpoint) self.assertEqual('foo', r.spatial_dataset_service.username) self.assertEqual('password', r.spatial_dataset_service.password) def test_wps_services_settings_prop(self): wps_setting = self.test_app.settings_set.select_subclasses().get(name='primary_52n') wps_setting.web_processing_service = self.wps wps_setting.save() ret = self.test_app.wps_services_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary_52n': self.assertEqual('test_wps', r.web_processing_service.name) self.assertEqual('http://localhost/wps/WebProcessingService', r.web_processing_service.endpoint) self.assertEqual('foo', r.web_processing_service.username) self.assertEqual('password', r.web_processing_service.password) def test_persistent_store_connection_settings_prop(self): ps_setting = self.test_app.settings_set.select_subclasses().get(name='primary') ps_setting.persistent_store_service = self.ps ps_setting.save() ret = self.test_app.persistent_store_connection_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'primary': self.assertEqual('test_ps', r.persistent_store_service.name) self.assertEqual('localhost', r.persistent_store_service.host) self.assertEqual(5432, r.persistent_store_service.port) self.assertEqual('foo', r.persistent_store_service.username) self.assertEqual('password', r.persistent_store_service.password) def test_persistent_store_database_settings_prop(self): ps_setting = self.test_app.settings_set.select_subclasses().get(name='spatial_db') ps_setting.persistent_store_service = self.ps ps_setting.save() ret = self.test_app.persistent_store_database_settings for r in ret: self.assertIsInstance(r, TethysAppSetting) if r.name == 'spatial_db': self.assertEqual('test_ps', r.persistent_store_service.name) self.assertEqual('localhost', r.persistent_store_service.host) self.assertEqual(5432, r.persistent_store_service.port) self.assertEqual('foo', r.persistent_store_service.username) self.assertEqual('password', r.persistent_store_service.password) def test_configured_prop_required_and_set(self): # See: test_app.app for expected settings configuration # Set required settings custom_setting = self.test_app.settings_set.select_subclasses().get(name='default_name') custom_setting.value = 'foo' custom_setting.save() ds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_ckan') ds_setting.dataset_service = self.ds ds_setting.save() sds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver') sds_setting.spatial_dataset_service = self.sds sds_setting.save() wps_setting = self.test_app.settings_set.select_subclasses().get(name='primary_52n') wps_setting.web_processing_service = self.wps wps_setting.save() ps_setting = self.test_app.settings_set.select_subclasses().get(name='primary') ps_setting.persistent_store_service = self.ps ps_setting.save() ps_db_setting = self.test_app.settings_set.select_subclasses().get(name='spatial_db') ps_db_setting.persistent_store_service = self.ps ps_db_setting.save() ret = self.test_app.configured self.assertTrue(ret) def test_configured_prop_required_no_value(self): # See: test_app.app for expected settings configuration # Set required settings custom_setting = self.test_app.settings_set.select_subclasses().get(name='default_name') custom_setting.value = '' # <-- NOT SET / NO VALUE custom_setting.save() ds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_ckan') ds_setting.dataset_service = self.ds ds_setting.save() sds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver') sds_setting.spatial_dataset_service = self.sds sds_setting.save() wps_setting = self.test_app.settings_set.select_subclasses().get(name='primary_52n') wps_setting.web_processing_service = self.wps wps_setting.save() ps_setting = self.test_app.settings_set.select_subclasses().get(name='primary') ps_setting.persistent_store_service = self.ps ps_setting.save() psd_setting = self.test_app.settings_set.select_subclasses().get(name='spatial_db') psd_setting.persistent_store_service = self.ps psd_setting.save() ret = self.test_app.configured self.assertFalse(ret) def test_configured_prop_not_assigned_exception(self): # See: test_app.app for expected settings configuration custom_setting = self.test_app.settings_set.select_subclasses().get(name='default_name') custom_setting.value = '' custom_setting.save() ds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_ckan') ds_setting.dataset_service = None ds_setting.save() sds_setting = self.test_app.settings_set.select_subclasses().get(name='primary_geoserver') sds_setting.spatial_dataset_service = None sds_setting.save() wps_setting = self.test_app.settings_set.select_subclasses().get(name='primary_52n') wps_setting.web_processing_service = None wps_setting.save() ps_setting = self.test_app.settings_set.select_subclasses().get(name='primary') ps_setting.persistent_store_service = None ps_setting.save() psd_setting = self.test_app.settings_set.select_subclasses().get(name='spatial_db') psd_setting.persistent_store_service = None psd_setting.save() ret = self.test_app.configured self.assertFalse(ret)