def test_fetch_missing_media(self): image_path = 'jr://file/commcare/case_list_image.jpg' self.master_app_with_report_modules.get_module(0).set_icon( 'en', image_path) self.master_app_with_report_modules.create_mapping(self.image, image_path, save=False) remote_details = RemoteLinkDetails('http://localhost:8000', 'user', 'key') data = b'this is a test: \255' # Real data will be a binary multimedia file, so mock it with bytes, not unicode media_details = list( self.master_app_with_report_modules.multimedia_map.values())[0] media_details['multimedia_id'] = uuid.uuid4().hex media_details['media_type'] = 'CommCareMultimedia' with patch( 'corehq.apps.linked_domain.remote_accessors._fetch_remote_media_content' ) as mock: mock.return_value = data fetch_remote_media('domain', [('case_list_image.jpg', media_details)], remote_details) media = CommCareMultimedia.get(media_details['multimedia_id']) self.addCleanup(media.delete) content = media.fetch_attachment(list(media.blobs.keys())[0]) self.assertEqual(data, content)
def _migrate_linked_apps(apps, schema_editor): app_db = LinkedApplication.get_db() linked_apps = get_all_docs_with_doc_types( app_db, ['LinkedApplication', 'LinkedApplication-Deleted'] ) errors = [] for app_doc in linked_apps: remote_details = None remote_url = app_doc.pop('remote_url_base', None) if remote_url: auth = app_doc.pop('remote_auth', {}) remote_details = RemoteLinkDetails( remote_url, auth.get('username'), auth.get('api_key'), ) master_domain = app_doc.pop('master_domain', None) if not master_domain and not remote_url: master_domain = get_app(None, app_doc['master']).domain try: DomainLink.link_domains(app_doc['domain'], master_domain, remote_details) except DomainLinkError as e: errors.append(str(e)) else: app_db.save_doc(app_doc) _assert = soft_assert('{}@dimagi.com'.format('skelly'), exponential_backoff=False) _assert(not errors, 'Errors migrating linked apps to linked domain', { 'errors': errors })
def handle(self, url_base, upstream_domain, username, api_key, downstream_domain, **options): remote_details = RemoteLinkDetails( url_base=url_base, username=username, api_key=api_key ) DomainLink.link_domains(downstream_domain, upstream_domain, remote_details)
def handle(self, master_id, linked_id, url_base, domain, username, api_key, **options): remote_details = RemoteLinkDetails( url_base, username, api_key, ) linked_app = LinkedApplication.get(linked_id) link_app(linked_app, domain, master_id, remote_details)