def test_request_succeeded(self): export_config = FormExportInstance( _id='config_id', tables=[TableConfiguration(columns=[])], domain=self.domain.name, xmlns='my_xmlns', ) export_config.save() self.addCleanup(export_config.delete) correct_credentials = self._get_correct_credentials() with flag_enabled('BI_INTEGRATION_PREVIEW', is_preview=True): response = self._execute_query(correct_credentials) self.assertEqual(response.status_code, 200) self.assertEqual(response['Content-Type'], 'application/json; charset=utf-8') self.assertEqual(response['OData-Version'], '4.0') self.assertEqual( json.loads(response.content.decode('utf-8')), { '@odata.context': 'http://localhost:8000/a/test_domain/api/v0.5/odata/forms/config_id/$metadata#feed', 'value': [] })
def test_ignore_form_link_label(self): export_with_form_link = FormExportInstance( is_odata_config=True, tables=[ TableConfiguration(columns=[ ExportColumn( label='my_form_link', item=ExportItem( path=[ PathNode(name='form'), PathNode(name='meta'), PathNode(name='instanceID') ], transform=FORM_ID_TO_LINK, ), selected=True, ) ]) ]) export_with_form_link.save() self.addCleanup(export_with_form_link.delete) cleaned_export = FormExportInstance.get(export_with_form_link.get_id) self.assertEqual(cleaned_export.tables[0].columns[0].label, 'my_form_link')
def test_populated_metadata_document(self): odata_config_1 = FormExportInstance( _id='odata_config_1', domain=self.domain.name, is_odata_config=True, tables=[TableConfiguration(columns=[])]) odata_config_1.save() self.addCleanup(odata_config_1.delete) odata_config_2 = FormExportInstance( _id='odata_config_2', domain=self.domain.name, is_odata_config=True, tables=[ TableConfiguration(columns=[ ExportColumn(label='selected_property_1', selected=True), ExportColumn(label='selected_property_2', selected=True), ExportColumn(label='unselected_property'), ], ), ]) odata_config_2.save() self.addCleanup(odata_config_2.delete) non_odata_config = FormExportInstance(domain=self.domain.name) non_odata_config.save() self.addCleanup(non_odata_config.delete) config_in_other_domain = FormExportInstance(domain='other_domain', is_odata_config=True) config_in_other_domain.save() self.addCleanup(config_in_other_domain.delete) correct_credentials = self._get_correct_credentials() with flag_enabled('ODATA'): with patch( 'corehq.apps.api.odata.views.get_odata_form_configs_by_domain', return_value=sorted(get_odata_form_configs_by_domain( self.domain.name), key=lambda _config: _config.get_id)): response = self._execute_query(correct_credentials) self.assertEqual(response.status_code, 200) self.assertEqual(response['Content-Type'], 'application/xml') self.assertEqual(response['OData-Version'], '4.0') self.assertXmlEqual( self.get_xml('populated_form_odata_metadata_document_from_config', override_path=PATH_TO_TEST_DATA), response.content)
def test_populated_service_document(self): odata_config_1 = FormExportInstance(domain=self.domain.name, is_odata_config=True) odata_config_1.save() self.addCleanup(odata_config_1.delete) odata_config_2 = FormExportInstance(domain=self.domain.name, is_odata_config=True) odata_config_2.save() self.addCleanup(odata_config_2.delete) non_odata_config = FormExportInstance(domain=self.domain.name) non_odata_config.save() self.addCleanup(non_odata_config.delete) config_in_other_domain = FormExportInstance(domain='other_domain', is_odata_config=True) config_in_other_domain.save() self.addCleanup(config_in_other_domain.delete) correct_credentials = self._get_correct_credentials() with flag_enabled('ODATA'): response = self._execute_query(correct_credentials) self.assertEqual(response.status_code, 200) self.assertEqual(response['OData-Version'], '4.0') response_content = json.loads(response.content.decode('utf-8')) self.assertCountEqual(response_content, ['@odata.context', 'value']) self.assertEqual( response_content['@odata.context'], 'http://localhost:8000/a/test_domain/api/v0.5/odata/forms/$metadata' ) self.assertCountEqual(response_content['value'], [ { 'url': odata_config_1.get_id, 'kind': 'EntitySet', 'name': odata_config_1.get_id, }, { 'url': odata_config_2.get_id, 'kind': 'EntitySet', 'name': odata_config_2.get_id, }, ])