def test_no_configured_endpoints(self): api_creator = ResourceCreator(self.api) session_id = None try: res = self.mitm.post('/autoconfig/register') self.assertTrue(res.status_code == 201) session_id = res.content.decode('utf-8') (dev_info, _) = api_creator.create_valid_resource('device') accept_info = { 'status': 1, 'device_id': dev_info['uri'] } with GetStorage(self.api) as storage: storage.upload_all() res = self.api.post('/api/autoconf/{}'.format(session_id), json=accept_info) self.assertTrue(res.status_code == 406) expected_issues = { 'X-Critical': [ AutoConfIssues.pd_not_configured.value, AutoConfIssues.rgc_not_configured.value, ], 'X-Warnings': [ AutoConfIssues.no_ggl_login.value, AutoConfIssues.auth_not_configured.value, ] } self.assertListEqual(expected_issues['X-Critical'], json.loads(res.headers['X-Critical'])) self.assertListEqual(expected_issues['X-Warnings'], json.loads(res.headers['X-Warnings'])) finally: api_creator.remove_resources() if session_id is not None: self.mitm.delete('/autoconfig/{}/complete'.format(session_id))
def test_autoconfig_file_download(self): api_creator = ResourceCreator(self.api) with GetStorage(self.api) as storage: try: # this really isnt an api call but whatever res = self.api.get('/autoconfig/download') self.assertTrue(res.status_code == 406) # Setup default env without anything defined create_valid_configs(self, api_creator, auth=False) storage.upload_all() res = self.api.get('/autoconfig/download') self.assertTrue(res.status_code == 200) self.assertTrue(pd_host == res.content.decode('utf-8')) create_valid_configs(self, api_creator) res = self.api.get('/autoconfig/download') self.assertTrue(res.status_code == 200) auth = f"{email_base}:{pwd_base}" expected = f"{pd_host}\n{auth}" self.assertTrue(expected == res.content.decode('utf-8')) except Exception: raise finally: rgc_delete = self.api.delete('/api/autoconf/rgc') pd_delete = self.api.delete('/api/autoconf/pd') api_creator.remove_resources() self.assertTrue(rgc_delete.status_code == 200) self.assertTrue(pd_delete.status_code == 200)
def test_version_newer_avail(self): with GetStorage(get_connection_api()) as storage: package_downloader = APKWizard(storage.db_wrapper, storage.storage_manager) gplay_latest = (20201001, "0.123.4") latest_supported = { APKArch.arm64_v8a: { "versionCode": 20201001, "version": "0.123.4" } } autosearch_latest = {"version": "0.123.4", "url": 20201001} package_downloader.get_latest_version = MagicMock( return_value=latest_supported) storage.storage_manager.get_current_version = MagicMock( return_value="0.123.3") package_downloader.get_latest = MagicMock( return_value=autosearch_latest) GPlayConnector.get_latest_version = MagicMock( return_value=gplay_latest) wizard_latest = package_downloader.find_latest_pogo( APKArch.arm64_v8a) self.assertTrue(wizard_latest is not None) self.assertTrue(latest_supported[APKArch.arm64_v8a]["versionCode"] == wizard_latest["version_code"]) self.assertTrue(latest_supported[APKArch.arm64_v8a]["version"] == wizard_latest["version"])
def decorated(self, *args, **kwargs): api_creator = ResourceCreator(self.api) gacct = None session_id = None with GetStorage(self.api) as storage: try: storage.upload_all() create_valid_configs(self, api_creator) res = self.mitm.post('/autoconfig/register') self.assertTrue(res.status_code == 201) session_id = res.content.decode('utf-8') # Create Google Account gacc = { "login_type": "google", "username": "******", "password": "******" } res = self.api.post('/api/pogoauth', json=gacc) gacct = res.headers['X-URI'] self.assertTrue(res.status_code == 201) dev_payload = copy.copy( global_variables.DEFAULT_OBJECTS['device']['payload']) dev_payload['account_id'] = gacct (dev_info, _) = api_creator.create_valid_resource('device', payload=dev_payload) accept_info = {'status': 1, 'device_id': dev_info['uri']} res = self.api.post('/api/autoconf/{}'.format(session_id), json=accept_info) self.assertTrue(res.status_code == 200) res = self.mitm.get('/autoconfig/{}/status'.format(session_id)) self.assertTrue(res.status_code == 200) (ss_info, _) = api_creator.create_valid_resource('devicesetting') func(self, session_id, dev_info, ss_info, api_creator, *args, **kwargs) except Exception: raise finally: self.api.delete('/api/autoconf/rgc') self.api.delete('/api/autoconf/pd') api_creator.remove_resources() if session_id is not None: self.mitm.delete( '/autoconfig/{}/complete'.format(session_id)) if gacct is not None: self.api.delete(gacct)
def test_valid_version_from_gplay(self, get_apk_info): latest_gplay = {"version_code": 20200901, "version": "0.123.4"} autosearch_latest = {"version": "0.123.4", "url": 20201001} get_apk_info_resp = ("0.123.4", "com.ignored") get_apk_info.return_value = get_apk_info_resp with GetStorage(get_connection_api()) as storage: package_downloader = APKWizard(storage.db_wrapper, storage.storage_manager) package_downloader.find_latest_pogo = MagicMock( return_value=latest_gplay) storage.storage_manager.get_current_version = MagicMock( return_value="0.123.3") package_downloader.get_latest = MagicMock( return_value=autosearch_latest) GPlayConnector.download = MagicMock( return_value=TEST_GPLAY_RESPONSE) package_downloader.download_pogo(APKArch.arm64_v8a)
def test_lower_case(self): api_creator = ResourceCreator(self.api) with GetStorage(self.api): try: pd_email = 'UPPERcase' pd_update = {'user_id': pd_email} create_valid_configs(self, api_creator) res = self.api.patch('/api/autoconf/pd', json=pd_update) self.assertTrue(res.status_code == 200) res = self.api.get('/api/autoconf/pd') self.assertTrue(res.status_code == 200) self.assertTrue(res.json()['user_id'] == pd_email.lower()) except Exception: raise finally: self.api.delete('/api/autoconf/rgc') self.api.delete('/api/autoconf/pd') api_creator.remove_resources()
def test_invalid_version_from_gplay(self, get_apk_info, supported_pogo_version): supported_pogo_version.return_value = True get_apk_info.return_value = ("0.123.3", "com.ignored") latest_gplay = { "version_code": 20200901, "version": "0.123.4" } autosearch_latest = { "version": "0.123.4", "url": 20201001 } with GetStorage(get_connection_api()) as storage: package_downloader = APKWizard(storage.db_wrapper, storage.storage_manager) package_downloader.find_latest_pogo = MagicMock(return_value=latest_gplay) storage.storage_manager.get_current_version = MagicMock(return_value=None) package_downloader.get_latest = MagicMock(return_value=autosearch_latest) GPlayConnector.download = MagicMock(return_value=TEST_GPLAY_RESPONSE) with self.assertRaises(InvalidDownload): package_downloader.download_pogo(APKArch.arm64_v8a)
def test_version_supported_but_not_gplay(self): with GetStorage(get_connection_api()) as storage: wizard = APKWizard(storage.db_wrapper, storage.storage_manager) gplay_latest = (20200901, "0.123.3") latest_supported = { APKArch.arm64_v8a: { "versionCode": 20201001, "version": "0.123.4" } } autosearch_latest = {"version": "0.123.4", "url": 20201001} wizard.get_latest_version = MagicMock( return_value=latest_supported) storage.storage_manager.get_current_version = MagicMock( return_value="0.123.3") wizard.get_latest = MagicMock(return_value=autosearch_latest) GPlayConnector.get_latest_version = MagicMock( return_value=gplay_latest) wizard_latest = wizard.find_latest_pogo(APKArch.arm64_v8a) self.assertTrue(wizard_latest is None)
def test_gplay_between_current_and_supported(self, supported_pogo_version): supported_pogo_version.return_value = True with GetStorage(get_connection_api()) as storage: package_downloader = APKWizard(storage.db_wrapper, storage.storage_manager) gplay_latest = (20200901, "0.123.3") latest_supported = { APKArch.arm64_v8a: { "versionCode": 20201001, "version": "0.123.4" } } autosearch_latest = { "version": "0.123.4", "url": 20201001 } package_downloader.get_latest_version = MagicMock(return_value=latest_supported) package_downloader.get_version_code = MagicMock(return_value=20200801) storage.storage_manager.get_current_version = MagicMock(return_value="0.123.2") package_downloader.get_latest = MagicMock(return_value=autosearch_latest) GPlayConnector.get_latest_version = MagicMock(return_value=gplay_latest) wizard_latest = package_downloader.find_latest_pogo(APKArch.arm64_v8a) self.assertTrue(wizard_latest is not None) self.assertTrue(gplay_latest[0] == wizard_latest["version_code"]) self.assertTrue(gplay_latest[1] == wizard_latest["version"])