def test_updatecheck_positive_critical_on_other_channel(self): app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome') platform = PlatformFactory.create(name='win') channel = ChannelFactory.create(name='stable') channel2 = ChannelFactory.create(name='alpha') first_version = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.110', file=SimpleUploadedFile('./chrome_installer_first.exe', b'_' * 23963192), file_size=23963192) first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' first_version.save() critical_version = VersionFactory.create( is_critical=True, app=app, platform=platform, channel=channel2, version='13.0.782.111', file=SimpleUploadedFile('./chrome_installer_critical.exe', b'_' * 23963192), file_size=23963192) critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' critical_version.save() last_version = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.112', file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192), file_size=23963192) last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' last_version.save() Action.objects.create( version=last_version, arguments='--do-not-launch-chrome', event=EVENT_DICT_CHOICES['install'], run='chrome_installer.exe' ) Action.objects.create( version=last_version, event=EVENT_DICT_CHOICES['postinstall'], other=dict( version='13.0.782.112', onsuccess='exitsilentlyonlaunchcmd', ) ) response = self.client.post(reverse('update'), fixtures.request_update_check, content_type='text/xml') self.assertEqual(response.status_code, 200) self.assertXmlDocument(response.content) self.assertXmlEquivalentOutputs(response.content, fixtures.response_update_check_positive)
def test_monitoring(self): for key in self.cache_keys: self.assertEqual(cache.get(key, 0), 0) VersionFactory.create(file_size=100) SparkleVersionFactory.create(file_size=100) Crash.objects.create(archive_size=80, minidump_size=20) Symbols.objects.create(file_size=100) Feedback.objects.create(screenshot_size=25, blackbox_size=25, attached_file_size=25, system_logs_size=25) monitoring_size() for key in self.cache_keys: self.assertEqual(cache.get(key), 100)
def test_get_version_partial_update(self): userid = "{%s}" % UUID(int=1) userid_beta = "{%s}" % UUID(int=40) version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b'')) version_beta = Version.objects.create( file=SimpleUploadedFile('./chrome_installer.exe', b''), app=version.app, platform=version.platform, channel=version.channel, version='39.0.0.0', ) PartialUpdate.objects.create(version=version_beta, percent=5, start_date=datetime.now(), end_date=datetime.now(), active_users=ACTIVE_USERS_DICT_CHOICES['all']) self.assertEqual(version, get_version(version.app.pk, version.platform.name, version.channel.name, '36.0.2062.124', userid)) self.assertEqual(version_beta, get_version(version.app.pk, version.platform.name, version.channel.name, '36.0.2062.124', userid_beta))
def test_filter_by_enabled(self): version = VersionFactory.create( version='37.0.2062.125', file=SimpleUploadedFile('./chrome_installer.exe', False)) version_disabled = VersionFactory.create( app=version.app, platform=version.platform, channel=version.channel, is_enabled=False, version='38.0.2062.125', file=SimpleUploadedFile('./chrome_installer2.exe', False)) self.assertEqual(Version.objects.all().count(), 2) self.assertEqual(Version.objects.filter_by_enabled().count(), 1) self.assertIn(version, Version.objects.filter_by_enabled()) self.assertNotIn(version_disabled, Version.objects.filter_by_enabled())
def test_create(self): version = VersionFactory.create() data = dict(event=1, version=version.pk) response = self.client.post(reverse(self.url), data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) obj = Action.objects.get(id=response.data['id']) self.assertEqual(response.data, self.serializer(obj).data)
def test_property(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', '')) self.assertEqual(version.file_absolute_url, 'http://cache.pack.google.com/edgedl/chrome/install/782.112/chrome_installer.exe') self.assertEqual(version.file_package_name, 'chrome_installer.exe') self.assertEqual(version.file_url, u'http://cache.pack.google.com/edgedl/chrome/install/782.112/')
def test_get_attributes(self): ver = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False)) action = Action( version=ver, arguments='--do-not-launch-chrome', event=EVENT_DICT_CHOICES['install'], run='chrome_installer.exe' ) self.assertDictEqual( action.get_attributes(), dict( arguments='--do-not-launch-chrome', run='chrome_installer.exe', )) action = Action( version=ver, terminateallbrowsers=True, event=EVENT_DICT_CHOICES['postinstall'], other=dict( version='13.0.782.112', onsuccess='exitsilentlyonlaunchcmd') ) self.assertDictEqual( action.get_attributes(), dict( terminateallbrowsers='true', version='13.0.782.112', onsuccess='exitsilentlyonlaunchcmd', ) )
def test_data(self): app = ApplicationFactory.create(id='{430FD4D0-B729-4F61-AA34-91526481799D}', name='chrome') platform = PlatformFactory.create(name='win') channel = ChannelFactory.create(name='stable') obj = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.112', file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192), file_size=23963192) obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' obj.save() Data.objects.create( app=app, name=NAME_DATA_DICT_CHOICES['install'], index='verboselogging', value='app-specific values here') Data.objects.create( app=app, name=NAME_DATA_DICT_CHOICES['untrusted']) response = self.client.post(reverse('update'), fixtures.request_data, content_type='text/xml') self.assertEqual(response.status_code, 200) self.assertXmlDocument(response.content) self.assertXmlEquivalentOutputs(response.content, fixtures.response_data)
def test_property_default_storage(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', '')) _url = 'http://example.com/static/media/build/%s/%s/%s/37.0.2062.124/chrome_installer.exe' \ % (version.app.name, version.channel.name, version.platform.name) self.assertEqual(version.file_absolute_url, _url) self.assertEqual(version.file_package_name, 'chrome_installer.exe') _url = u'http://example.com/static/media/build/%s/%s/%s/37.0.2062.124/' \ % (version.app.name, version.channel.name, version.platform.name) self.assertEqual(version.file_url, _url)
def test_updatecheck_positive_critical(self): app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome') platform = PlatformFactory.create(name='win') channel = ChannelFactory.create(name='stable') first_version = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.110', file=SimpleUploadedFile('./chrome_installer_first.exe', b'_' * 23963192), file_size=23963192) first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' first_version.save() critical_version = VersionFactory.create( is_critical=True, app=app, platform=platform, channel=channel, version='13.0.782.111', file=SimpleUploadedFile('./chrome_installer_critical.exe', b'_' * 23963192), file_size=23963192) critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' critical_version.save() last_version = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.112', file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192), file_size=23963192) last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' last_version.save() response = self.client.post(reverse('update'), fixtures.request_update_check, content_type='text/xml') self.assertEqual(response.status_code, 200) self.assertXmlDocument(response.content) self.assertXmlEquivalentOutputs(response.content, fixtures.response_update_check_postitive_critical)
def test_version_upload_to(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False)) self.assertEqual(version_upload_to(version, 'chrome_installer.exe'), 'build/{}/{}/{}/{}/chrome_installer.exe'.format( version.app.name, version.channel.name, version.platform.name, version.version, version.file.name, ))
def test_userid_counting(self): now = datetime.utcnow() userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}' user_id = get_id(userid) appid1 = '{430FD4D0-B729-4F61-AA34-91526481799D}' appid2 = '{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}' request_events = DayEvents('request', now.year, now.month, now.day) app1_events = DayEvents('request:%s' % appid1, now.year, now.month, now.day) app2_events = DayEvents('request:%s' % appid2, now.year, now.month, now.day) self.assertEqual(len(request_events), 0) self.assertEqual(len(app1_events), 0) self.assertEqual(len(app2_events), 0) app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome') platform = PlatformFactory.create(name='win') channel = ChannelFactory.create(name='stable') obj = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.112', file=SimpleUploadedFile('./chrome_installer.exe', b'_' * 23963192)) obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' obj.save() Action.objects.create( version=obj, arguments='--do-not-launch-chrome', event=EVENT_DICT_CHOICES['install'], run='chrome_installer.exe' ) Action.objects.create( version=obj, event=EVENT_DICT_CHOICES['postinstall'], other=dict( version='13.0.782.112', onsuccess='exitsilentlyonlaunchcmd', ) ) self.client.post(reverse('update'), fixtures.request_update_check, content_type='text/xml') self.assertEqual(len(request_events), 1) self.assertEqual(len(app1_events), 1) self.assertEqual(len(app2_events), 1) self.assertTrue(user_id in request_events) self.assertTrue(user_id in app1_events) self.assertTrue(user_id in app2_events)
def test_update(self): version = VersionFactory.create() data = dict(event=1, version=version.pk) response = self.client.post(reverse(self.url), data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) obj_id = response.data['id'] obj = Action.objects.get(id=obj_id) self.assertEqual(response.data, self.serializer(obj).data) url = reverse(self.url_detail, kwargs=dict(pk=obj_id)) response = self.client.patch(url, dict(event=2)) self.assertEqual(response.status_code, status.HTTP_200_OK) obj = Action.objects.get(id=obj_id) self.assertEqual(obj.event, 2)
def test_get_version(self): userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}' version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b'')) self.assertEqual(version, get_version(version.app.pk, version.platform.name, version.channel.name, '36.0.2062.124', userid)) self.assertEqual(version, get_version(version.app.pk, version.platform.name, version.channel.name, '', userid))
def test_create(self): version = VersionFactory.create() data = dict( is_enabled=True, exclude_new_users=True, version=version.pk, end_date=str(date.today()), percent=51.0, start_date=str(date.today()), active_users=1, ) response = self.client.post(reverse(self.url), data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) obj = PartialUpdate.objects.get(id=response.data['id']) self.assertEqual(response.data, self.serializer(obj).data)
def test_auto_fill_file_size(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b' ' * 10)) data = dict( app=version.app.id, platform=version.platform.id, channel=version.channel.id, version='4.3.2.1', release_notes=version.release_notes, file=version.file, file_hash=version.file_hash, ) new_version = VersionSerializer(data=data) self.assertTrue(new_version.is_valid()) new_version_instance = new_version.save() self.assertEqual(new_version_instance.file_size, 10)
def test_serializer(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False)) self.assertDictEqual(VersionSerializer(version).data, dict( id=version.id, is_enabled=version.is_enabled, app=version.app.id, platform=version.platform.id, channel=version.channel.id, version=str(version.version), release_notes=version.release_notes, file=version.file.url, file_hash=version.file_hash, file_size=version.file_size, created=version.created.strftime('%Y-%m-%dT%H:%M:%S.%fZ'), modified=version.modified.strftime('%Y-%m-%dT%H:%M:%S.%fZ'), ))
def test_get_app_version_channel(self): userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}' channel_beta = Channel.objects.create(name="beta") version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b'')) version_beta = Version.objects.create( file=SimpleUploadedFile('./chrome_installer.exe', b''), app=version.app, platform=version.platform, channel=channel_beta, version='39.0.0.0', ) self.assertEqual(version_beta, get_version(version.app.pk, version.platform.name, channel_beta.name, '', userid))
def test_get_app_version_active_users(self): userid = "{%s}" % UUID(int=1) userid_beta = "{%s}" % UUID(int=40) userid_beta_not_active = "{%s}" % UUID(int=60) version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b'')) version_beta = Version.objects.create( file=SimpleUploadedFile('./chrome_installer.exe', b''), app=version.app, platform=version.platform, channel=version.channel, version='39.0.0.0', ) id = get_id(userid_beta) mark_event('request', id) PartialUpdate.objects.create(version=version_beta, percent=5, start_date=datetime.now(), end_date=datetime.now()) self.assertEqual(version, get_version(version.app.pk, version.platform.name, version.channel.name, '36.0.2062.124', userid)) self.assertEqual(version_beta, get_version(version.app.pk, version.platform.name, version.channel.name, '36.0.2062.124', userid_beta)) self.assertEqual(version, get_version(version.app.pk, version.platform.name, version.channel.name, '36.0.2062.124', userid_beta_not_active))
def test_pre_save_callback(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b'')) self.assertEqual(version.file.size, 0) self.assertEqual(version.file_hash, '2jmj7l5rSw0yVb/vlWAYkK/YBwk=')
def test_updatecheck_positive_critical_on_other_channel(self): app = ApplicationFactory.create( id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome') platform = PlatformFactory.create(name='win') channel = ChannelFactory.create(name='stable') channel2 = ChannelFactory.create(name='alpha') first_version = VersionFactory.create( app=app, platform=platform, channel=channel, version='13.0.782.110', file=SimpleUploadedFile('./chrome_installer_first.exe', b'_' * 23963192), file_size=23963192) first_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' first_version.save() critical_version = VersionFactory.create( is_critical=True, app=app, platform=platform, channel=channel2, version='13.0.782.111', file=SimpleUploadedFile('./chrome_installer_critical.exe', b'_' * 23963192), file_size=23963192) critical_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' critical_version.save() last_version = VersionFactory.create(app=app, platform=platform, channel=channel, version='13.0.782.112', file=SimpleUploadedFile( './chrome_installer.exe', b'_' * 23963192), file_size=23963192) last_version.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' last_version.save() Action.objects.create(version=last_version, arguments='--do-not-launch-chrome', event=EVENT_DICT_CHOICES['install'], run='chrome_installer.exe') Action.objects.create(version=last_version, event=EVENT_DICT_CHOICES['postinstall'], other=dict( version='13.0.782.112', onsuccess='exitsilentlyonlaunchcmd', )) response = self.client.post(reverse('update'), fixtures.request_update_check, content_type='text/xml') self.assertEqual(response.status_code, 200) self.assertXmlDocument(response.content) self.assertXmlEquivalentOutputs( response.content, fixtures.response_update_check_positive)
def test_factory(self): version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', False)) self.assertTrue(Version.objects.get(id=version.id))
def test_userid_counting(self): now = datetime.utcnow() userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}' user_id = get_id(userid) appid1 = '{430FD4D0-B729-4F61-AA34-91526481799D}' appid2 = '{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}' install_date = datetime(year=2014, month=1, day=1, hour=15, minute=41, second=48) update_date = install_date + timedelta(days=31) request_events = DayEvents('request', install_date.year, install_date.month, install_date.day) app1_install_events = DayEvents('new_install:%s' % appid1, install_date.year, install_date.month, install_date.day) app2_install_events = DayEvents('new_install:%s' % appid2, install_date.year, install_date.month, install_date.day) app1_update_events = DayEvents('request:%s' % appid1, update_date.year, update_date.month, update_date.day) app2_update_events = DayEvents('request:%s' % appid2, update_date.year, update_date.month, update_date.day) self.assertEqual(len(request_events), 0) self.assertEqual(len(app1_install_events), 0) self.assertEqual(len(app2_install_events), 0) app = ApplicationFactory.create( id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome') platform = PlatformFactory.create(name='win') channel = ChannelFactory.create(name='stable') obj = VersionFactory.create(app=app, platform=platform, channel=channel, version='13.0.782.112', file=SimpleUploadedFile( './chrome_installer.exe', b'_' * 23963192)) obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo=' obj.save() Action.objects.create(version=obj, arguments='--do-not-launch-chrome', event=EVENT_DICT_CHOICES['install'], run='chrome_installer.exe') Action.objects.create(version=obj, event=EVENT_DICT_CHOICES['postinstall'], other=dict( version='13.0.782.112', onsuccess='exitsilentlyonlaunchcmd', )) with freeze_time(install_date): # 56508 sec self.client.post(reverse('update'), fixtures.request_update_check, content_type='text/xml') self.client.post(reverse('update'), fixtures.request_event_install_success, content_type='text/xml') self.assertEqual(len(request_events), 1) self.assertEqual(len(app1_install_events), 0) self.assertEqual(len(app2_install_events), 1) self.assertEqual(len(app1_update_events), 0) self.assertEqual(len(app2_update_events), 0) self.assertTrue(user_id in request_events) self.assertFalse(user_id in app1_install_events) self.assertTrue(user_id in app2_install_events) with freeze_time(update_date): self.client.post(reverse('update'), fixtures.request_update_check, content_type='text/xml') self.assertEqual(len(app1_update_events), 0) self.assertEqual(len(app2_update_events), 1) self.assertFalse(user_id in app1_update_events) self.assertTrue(user_id in app2_update_events)
def test_pre_save_callbac(self): version = VersionFactory.create( file=SimpleUploadedFile('./chrome_installer.exe', b'')) self.assertEqual(version.file.size, 0) self.assertEqual(version.file_hash, '2jmj7l5rSw0yVb/vlWAYkK/YBwk=')
def test_factory(self): version = VersionFactory.create( file=SimpleUploadedFile('./chrome_installer.exe', False)) self.assertTrue(Version.objects.get(id=version.id))