def test_get_latest_master_release_not_permitted(self): self.linked_app.master = self.plain_master_app.get_id release = self.plain_master_app.make_build() release.is_released = True release.save() self.addCleanup(release.delete) latest_master_release = self.linked_app.get_latest_master_release() self.assertEqual(release.get_id, latest_master_release.get_id) self.domain_link.linked_domain = 'other' self.domain_link.save() get_domain_master_link.clear('domain-2') def _revert(): self.domain_link.linked_domain = 'domain-2' self.domain_link.save() self.addCleanup(_revert) with self.assertRaises(ActionNotPermitted): # re-fetch to bust memoize cache LinkedApplication.get( self.linked_app._id).get_latest_master_release()
def test_override_translations(self): translations = {'en': {'updates.check.begin': 'update?'}} self.linked_app.master = self.plain_master_app.get_id copy = self.plain_master_app.make_build() copy.save() self.addCleanup(copy.delete) self.plain_master_app.save() # increment version number copy1 = self.plain_master_app.make_build() copy1.is_released = True copy1.save() self.addCleanup(copy1.delete) self.linked_app.linked_app_translations = translations self.linked_app.save() self.assertEqual(self.linked_app.translations, {}) update_linked_app(self.linked_app, 'test_override_translations') # fetch after update to get the new version self.linked_app = LinkedApplication.get(self.linked_app._id) self.assertEqual(self.plain_master_app.translations, {}) self.assertEqual(self.linked_app.linked_app_translations, translations) self.assertEqual(self.linked_app.translations, translations)
def test_update_from_specific_build(self, *args): master_app = Application.new_app(self.domain, "Master Application") master_app.linked_whitelist = [self.linked_domain] master_app.save() self.addCleanup(master_app.delete) linked_app = LinkedApplication.new_app(self.linked_domain, "Linked Application") linked_app.master = master_app.get_id linked_app.save() self.addCleanup(linked_app.delete) master_app.add_module(Module.new_module('M1', None)) copy1 = self._make_build(master_app, True) master_app.add_module(Module.new_module('M2', None)) master_app.save() # increment version number self._make_build(master_app, True) update_linked_app(linked_app, 'test_update_from_specific_build', master_build=copy1) linked_app = LinkedApplication.get(linked_app._id) self.assertEqual(len(linked_app.modules), 1) self.assertEqual(linked_app.version, copy1.version)
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)
def test_app_build_and_release(self, *args): self._make_master1_build(True) original_version = self.linked_app.version self.manager.release([ self._model_status(MODEL_APP, detail=AppLinkDetail(app_id=self.master1._id).to_json()), ], [self.linked_domain], True) self._assert_domain_outcomes({self.linked_domain}, set()) self.linked_application = LinkedApplication.get(self.linked_app._id) self.assertEqual(original_version + 1, self.linked_application.version) self.assertTrue(self.linked_application.is_released)
def test_override_logo(self): image_data = _get_image_data() image = CommCareImage.get_by_data(image_data) image.attach_data(image_data, original_filename='logo.png') image.add_domain(self.linked_app.domain) image.save() self.addCleanup(image.delete) image_path = "jr://file/commcare/logo/data/hq_logo_android_home.png" logo_refs = { "hq_logo_android_home": { "humanized_content_length": "45.4 KB", "icon_class": "fa fa-picture-o", "image_size": "448 X 332 Pixels", "m_id": image._id, "media_type": "Image", "path": "jr://file/commcare/logo/data/hq_logo_android_home.png", "uid": "3b79a76a067baf6a23a0b6978b2fb352", "updated": False, "url": "/hq/multimedia/file/CommCareImage/e3c45dd61c5593fdc5d985f0b99f6199/" }, } self.linked_app.master = self.plain_master_app.get_id copy = self.plain_master_app.make_build() copy.save() self.addCleanup(copy.delete) self.plain_master_app.save() # increment version number copy1 = self.plain_master_app.make_build() copy1.is_released = True copy1.save() self.addCleanup(copy1.delete) self.linked_app.version = 1 self.linked_app.linked_app_logo_refs = logo_refs self.linked_app.create_mapping(image, image_path, save=False) self.linked_app.save() self.assertEqual(self.linked_app.logo_refs, {}) update_linked_app(self.linked_app, 'test_override_logos') # fetch after update to get the new version self.linked_app = LinkedApplication.get(self.linked_app._id) self.assertEqual(self.plain_master_app.logo_refs, {}) self.assertEqual(self.linked_app.linked_app_logo_refs, logo_refs) self.assertEqual(self.linked_app.logo_refs, logo_refs) # cleanup the linked app logo properties self.linked_app.linked_app_logo_refs = {} self.linked_app.save()
def test_app_build_and_release(self, *args): self._make_master1_build(True) original_version = self.linked_app.version self._assert_release([ self._linked_data_view_model( MODEL_APP, detail=AppLinkDetail(app_id=self.master1._id).to_json()), ], build_apps=True) self.linked_application = LinkedApplication.get(self.linked_app._id) self.assertEqual(original_version + 1, self.linked_application.version) self.assertTrue(self.linked_application.is_released)
def test_overwrite_app_override_form_unique_ids(self): module = self.master1.add_module(Module.new_module('M1', None)) master_form = module.new_form('f1', None, self.get_xml('very_simple_form').decode('utf-8')) add_xform_resource_overrides(self.linked_domain, self.linked_app.get_id, {master_form.unique_id: '123'}) overwrite_app(self.linked_app, self.master1) self.assertEqual( {master_form.xmlns: '123'}, self._get_form_ids_by_xmlns(LinkedApplication.get(self.linked_app._id)) ) ResourceOverride.objects.filter(domain=self.linked_domain, app_id=self.linked_app.get_id).delete()
def test_overwrite_app_maintain_ids(self): module = self.plain_master_app.add_module(Module.new_module( 'M1', None)) module.new_form('f1', None, self.get_xml('very_simple_form')) module = self.linked_app.add_module(Module.new_module('M1', None)) module.new_form('f1', None, self.get_xml('very_simple_form')) id_map_before = _get_form_id_map(self.linked_app) overwrite_app(self.linked_app, self.plain_master_app, {}) self.assertEqual( id_map_before, _get_form_id_map(LinkedApplication.get(self.linked_app._id)))
def test_overwrite_app_maintain_ids(self): module = self.plain_master_app.add_module(Module.new_module('M1', None)) module.new_form('f1', None, self.get_xml('very_simple_form').decode('utf-8')) module = self.linked_app.add_module(Module.new_module('M1', None)) module.new_form('f1', None, self.get_xml('very_simple_form').decode('utf-8')) id_map_before = _get_form_id_map(self.linked_app) overwrite_app(self.linked_app, self.plain_master_app, {}) self.assertEqual( id_map_before, _get_form_id_map(LinkedApplication.get(self.linked_app._id)) )
def test_overwrite_app_override_form_unique_ids(self): master_form = list(self.master1.get_forms(bare=True))[0] add_xform_resource_overrides(self.linked_domain, self.linked_app.get_id, {master_form.unique_id: '123'}) overwrite_app(self.linked_app, self.master1) self.assertEqual({master_form.xmlns: '123'}, self._get_form_ids_by_xmlns( LinkedApplication.get(self.linked_app._id))) ResourceOverride.objects.filter( domain=self.linked_domain, app_id=self.linked_app.get_id).delete()
def test_overwrite_app_maintain_form_unique_ids(self): module = self.master1.add_module(Module.new_module('M1', None)) module.new_form('f1', None, self.get_xml('very_simple_form').decode('utf-8')) module = self.linked_app.add_module(Module.new_module('M1', None)) module.new_form('f1', None, self.get_xml('very_simple_form').decode('utf-8')) id_map_before = _get_form_ids_by_xmlns(self.linked_app) overwrite_app(self.linked_app, self.master1, {}) self.assertEqual( id_map_before, _get_form_ids_by_xmlns(LinkedApplication.get(self.linked_app._id)) )
def test_override_translations(self, *args): translations = {'en': {'updates.check.begin': 'update?'}} self._make_master1_build(True) self._make_master1_build(True) self.linked_app.linked_app_translations = translations self.linked_app.save() self.assertEqual(self.linked_app.translations, {}) self._pull_linked_app(self.master1.get_id) self.linked_app = LinkedApplication.get(self.linked_app._id) self.assertEqual(self.master1.translations, {}) self.assertEqual(self.linked_app.linked_app_translations, translations) self.assertEqual(self.linked_app.translations, translations)
def handle(self, master_id, linked_id, **options): print("Linking apps") master_app = Application.get(master_id) master_version = get_latest_released_app_version(master_app.domain, master_id) if not master_version: raise CommandError( "Creating linked app failed." " Unable to get latest released version of your app." " Make sure you have at least one released build." ) linked_app = LinkedApplication.get(linked_id) link_app(linked_app, master_app.domain, master_id) update_linked_app(linked_app, 'system')
def test_get_latest_master_release_not_permitted(self): self.linked_app.master = self.plain_master_app.get_id release = self.plain_master_app.make_build() release.is_released = True release.save() self.addCleanup(release.delete) latest_master_release = self.linked_app.get_latest_master_release() self.assertEqual(release.get_id, latest_master_release.get_id) self.domain_link.linked_domain = 'other' self.domain_link.save() get_domain_master_link.clear('domain-2') def _revert(): self.domain_link.linked_domain = 'domain-2' self.domain_link.save() self.addCleanup(_revert) with self.assertRaises(ActionNotPermitted): # re-fetch to bust memoize cache LinkedApplication.get(self.linked_app._id).get_latest_master_release()
def handle(self, master_id, linked_id, url_base, domain, username, api_key, **options): remote_app_details = RemoteAppDetails(url_base, domain, username, api_key, master_id) linked_app = LinkedApplication.get(linked_id) whilelist_app_on_remote(remote_app_details, linked_app.domain) linked_app.master = master_id linked_app.remote_url_base = url_base linked_app.master_domain = domain linked_app.remote_auth.username = username linked_app.remote_auth.api_key = api_key linked_app.version = 0 linked_app.doc_type = 'LinkedApplication' linked_app.save()
def test_update_from_specific_build(self, *args): factory = AppFactory(self.domain, "Upstream Application") m0, f0 = factory.new_basic_module("M1", None) f0.source = get_simple_form() master_app = factory.app master_app.save() self.addCleanup(master_app.delete) linked_app = LinkedApplication.new_app(self.linked_domain, "Linked Application") linked_app.save() self.addCleanup(linked_app.delete) copy1 = self._make_build(master_app, True) m1, f1 = factory.new_basic_module("M2", None) f1.source = get_simple_form() master_app.save() # increment version number self._make_build(master_app, True) update_linked_app(linked_app, copy1, 'test_update_from_specific_build') linked_app = LinkedApplication.get(linked_app._id) self.assertEqual(len(linked_app.modules), 1) self.assertEqual(linked_app.version, copy1.version)
def setUp(self): # re-fetch app self.linked_app = LinkedApplication.get(self.linked_app._id)
def _pull_linked_app(self, upstream_app_id): update_linked_app(self.linked_app, upstream_app_id, 'TestLinkedApps user') self.linked_app = LinkedApplication.get(self.linked_app._id)
def _pull_linked_app(self): update_linked_app(self.linked_app, 'TestLinkedApps user') self.linked_app = LinkedApplication.get(self.linked_app._id)