def test_refresh(self, mock_box_refresh, mock_drive_refresh, mock_mendeley_refresh): fake_authorized_box_account = BoxAccountFactory( date_last_refreshed=datetime.datetime.utcnow()) fake_authorized_drive_account = GoogleDriveAccountFactory( date_last_refreshed=datetime.datetime.utcnow()) fake_authorized_mendeley_account = MendeleyAccountFactory( date_last_refreshed=datetime.datetime.utcnow()) fake_unauthorized_box_account = BoxAccountFactory( date_last_refreshed=datetime.datetime.utcnow() - datetime.timedelta(days=4)) fake_unauthorized_drive_account = GoogleDriveAccountFactory( date_last_refreshed=datetime.datetime.utcnow() - datetime.timedelta(days=4)) fake_unauthorized_mendeley_account = MendeleyAccountFactory( date_last_refreshed=datetime.datetime.utcnow() - datetime.timedelta(days=4)) for addon in self.addons: Provider = look_up_provider(addon) main(delta=relativedelta(days=3), Provider=Provider, rate_limit=(5, 1), dry_run=False) assert_equal(1, mock_box_refresh.call_count) assert_equal(1, mock_drive_refresh.call_count) assert_equal(1, mock_mendeley_refresh.call_count)
def test_get_targets(self): now = datetime.datetime.utcnow() records = [ BoxAccountFactory(expires_at=now + datetime.timedelta(days=4)), BoxAccountFactory(expires_at=now + datetime.timedelta(days=2)), GoogleDriveAccountFactory(expires_at=now + datetime.timedelta(days=4)), GoogleDriveAccountFactory(expires_at=now + datetime.timedelta(days=2)), MendeleyAccountFactory(expires_at=now + datetime.timedelta(days=4)), MendeleyAccountFactory(expires_at=now + datetime.timedelta(days=2)), ] box_targets = list( get_targets(delta=relativedelta(days=-3), addon_short_name='box')) drive_targets = list( get_targets(delta=relativedelta(days=-3), addon_short_name='googledrive')) mendeley_targets = list( get_targets(delta=relativedelta(days=-3), addon_short_name='mendeley')) assert_equal(records[1]._id, box_targets[0]._id) assert_not_in(records[0], box_targets) assert_equal(records[3]._id, drive_targets[0]._id) assert_not_in(records[2], drive_targets) assert_equal(records[5]._id, mendeley_targets[0]._id) assert_not_in(records[4], mendeley_targets)
def setUp(self): super(TestBoxNodeSettingsModel, self).setUp() self.node = ProjectFactory() self.user = self.node.creator self.external_account = BoxAccountFactory() self.user.add_addon('box') self.user.external_accounts.append(self.external_account) self.user.save() self.user_settings = self.user.get_addon('box') self.user_settings.grant_oauth_access( node=self.node, external_account=self.external_account, metadata={'folder': 'fake_folder_id'} ) self.user_settings.save() self.node_settings = BoxNodeSettingsFactory( user_settings=self.user_settings, folder_id='1234567890', owner=self.node ) self.node_settings.external_account = self.external_account self.node_settings.save()
def test_migration(self): BoxUserSettings.remove() user = UserFactory() node = ProjectFactory(creator=user) account = BoxAccountFactory() user.external_accounts = [account] user.add_addon('box', auth=Auth(user)) user_addon = user.get_addon('box') user_addon.save() node.add_addon('box', auth=Auth(user)) node_addon = node.get_addon('box') node_addon.foreign_user_settings = user_addon node_addon.folder_id = 'abcdef0' node_addon.folder_path = '/' node_addon.folder_name = '/ (Full Box)' node_addon.save() assert_equal(node_addon.external_account, None) assert_equal(node_addon.folder_id, 'abcdef0') do_migration() node_addon.reload() assert_equal(node_addon.external_account, account) assert_equal(node_addon.folder_id, 'abcdef0') assert_equal(node_addon.folder_path, '/') assert_equal(node_addon.folder_name, '/ (Full Box)')
def _prep_oauth_case(self): self.node = ProjectFactory() self.user = self.node.creator self.external_account = BoxAccountFactory() self.user.external_accounts.append(self.external_account) self.user.save() self.user_settings = self.user.get_or_add_addon('box')
def test_clear_auth(self): node_settings = BoxNodeSettingsFactory() node_settings.external_account = BoxAccountFactory() node_settings.user_settings = BoxUserSettingsFactory() node_settings.save() node_settings.clear_auth() assert_is_none(node_settings.external_account) assert_is_none(node_settings.folder_id) assert_is_none(node_settings.user_settings)
def setUp(self): super(TestBoxNodeSettingsModel, self).setUp() self.node = ProjectFactory() self.user = self.node.creator self.external_account = BoxAccountFactory() self.user.add_addon('box') self.user.external_accounts.append(self.external_account) self.user.save() self.user_settings = self.user.get_addon('box') self.user_settings.grant_oauth_access( node=self.node, external_account=self.external_account, metadata={'folder': 'fake_folder_id'}) self.user_settings.save() self.node_settings = BoxNodeSettingsFactory( user_settings=self.user_settings, folder_id='1234567890', owner=self.node) self.node_settings.external_account = self.external_account self.node_settings.save()
def test_refresh(self, mock_box_refresh, mock_drive_refresh, mock_mendeley_refresh): fake_box_account = BoxAccountFactory( expires_at=datetime.datetime.utcnow()) fake_drive_account = GoogleDriveAccountFactory( expires_at=datetime.datetime.utcnow()) fake_mendeley_account = MendeleyAccountFactory( expires_at=datetime.datetime.utcnow()) for addon in self.addons: Provider = look_up_provider(addon) main(delta=relativedelta(days=-3), Provider=Provider, dry_run=False) assert_equal(1, mock_box_refresh.call_count) assert_equal(1, mock_drive_refresh.call_count) assert_equal(1, mock_mendeley_refresh.call_count)
def test_verify_oauth_access_no_metadata(self): self._prep_oauth_case() self.user_settings.grant_oauth_access( node=self.node, external_account=self.external_account, ) self.user_settings.save() assert_true( self.user_settings.verify_oauth_access( node=self.node, external_account=self.external_account)) assert_false( self.user_settings.verify_oauth_access( node=self.node, external_account=BoxAccountFactory()))
def setUp(self): super(TestNodeSettingsCallbacks, self).setUp() # Create node settings with auth self.user_settings = BoxUserSettingsFactory(access_token='123abc') self.node_settings = BoxNodeSettingsFactory( user_settings=self.user_settings, ) self.external_account = BoxAccountFactory() self.user_settings.owner.external_accounts.append( self.external_account) self.node_settings.external_account = self.external_account self.project = self.node_settings.owner self.user = self.user_settings.owner self.user_settings.grant_oauth_access( node=self.project, external_account=self.external_account, )
def test_set_user_auth(self): node_settings = BoxNodeSettingsFactory() user_settings = BoxUserSettingsFactory() external_account = BoxAccountFactory() user_settings.owner.external_accounts.append(external_account) user_settings.save() node_settings.external_account = external_account node_settings.set_user_auth(user_settings) node_settings.save() assert_true(node_settings.has_auth) assert_equal(node_settings.user_settings, user_settings) # A log was saved last_log = node_settings.owner.logs[-1] assert_equal(last_log.action, 'box_node_authorized') log_params = last_log.params assert_equal(log_params['folder_id'], node_settings.folder_id) assert_equal(log_params['node'], node_settings.owner._primary_key) assert_equal(last_log.user, user_settings.owner)
class TestBoxNodeSettingsModel(OsfTestCase): def setUp(self): super(TestBoxNodeSettingsModel, self).setUp() self.node = ProjectFactory() self.user = self.node.creator self.external_account = BoxAccountFactory() self.user.add_addon('box') self.user.external_accounts.append(self.external_account) self.user.save() self.user_settings = self.user.get_addon('box') self.user_settings.grant_oauth_access( node=self.node, external_account=self.external_account, metadata={'folder': 'fake_folder_id'} ) self.user_settings.save() self.node_settings = BoxNodeSettingsFactory( user_settings=self.user_settings, folder_id='1234567890', owner=self.node ) self.node_settings.external_account = self.external_account self.node_settings.save() def tearDown(self): super(TestBoxNodeSettingsModel, self).tearDown() self.user_settings.remove() self.node_settings.remove() self.external_account.remove() self.node.remove() self.user.remove() def test_complete_true(self): assert_true(self.node_settings.has_auth) assert_true(self.node_settings.complete) def test_complete_false(self): self.user_settings.oauth_grants[self.node._id].pop(self.external_account._id) assert_true(self.node_settings.has_auth) assert_false(self.node_settings.complete) def test_complete_auth_false(self): self.node_settings.user_settings = None assert_false(self.node_settings.has_auth) assert_false(self.node_settings.complete) def test_fields(self): node_settings = BoxNodeSettings(user_settings=self.user_settings) node_settings.save() assert_true(node_settings.user_settings) assert_equal(node_settings.user_settings.owner, self.user) assert_true(hasattr(node_settings, 'folder_id')) assert_true(hasattr(node_settings, 'user_settings')) def test_folder_defaults_to_none(self): node_settings = BoxNodeSettings(user_settings=self.user_settings) node_settings.save() assert_is_none(node_settings.folder_id) def test_has_auth(self): self.user.external_accounts = [] self.user_settings.reload() settings = BoxNodeSettings(user_settings=self.user_settings) settings.save() assert_false(settings.has_auth) self.user.external_accounts.append(self.external_account) settings.reload() assert_true(settings.has_auth) def test_clear_auth(self): node_settings = BoxNodeSettingsFactory() node_settings.external_account = BoxAccountFactory() node_settings.user_settings = BoxUserSettingsFactory() node_settings.save() node_settings.clear_auth() assert_is_none(node_settings.external_account) assert_is_none(node_settings.folder_id) assert_is_none(node_settings.user_settings) def test_to_json(self): settings = self.node_settings user = UserFactory() result = settings.to_json(user) assert_equal(result['addon_short_name'], 'box') def test_delete(self): assert_true(self.node_settings.user_settings) assert_true(self.node_settings.folder_id) old_logs = self.node.logs self.node_settings.delete() self.node_settings.save() assert_is(self.node_settings.user_settings, None) assert_is(self.node_settings.folder_id, None) assert_true(self.node_settings.deleted) assert_equal(self.node.logs, old_logs) def test_deauthorize(self): assert_true(self.node_settings.user_settings) assert_true(self.node_settings.folder_id) self.node_settings.deauthorize(auth=Auth(self.user)) self.node_settings.save() assert_is(self.node_settings.user_settings, None) assert_is(self.node_settings.folder_id, None) last_log = self.node.logs[-1] assert_equal(last_log.action, 'box_node_deauthorized') params = last_log.params assert_in('node', params) assert_in('project', params) assert_in('folder_id', params) @mock.patch("website.addons.box.model.BoxNodeSettings._update_folder_data") def test_set_folder(self, mock_update_folder): folder_id = '1234567890' self.node_settings.set_folder(folder_id, auth=Auth(self.user)) self.node_settings.save() # Folder was set assert_equal(self.node_settings.folder_id, folder_id) # Log was saved last_log = self.node.logs[-1] assert_equal(last_log.action, 'box_folder_selected') def test_set_user_auth(self): node_settings = BoxNodeSettingsFactory() user_settings = BoxUserSettingsFactory() external_account = BoxAccountFactory() user_settings.owner.external_accounts.append(external_account) user_settings.save() node_settings.external_account = external_account node_settings.set_user_auth(user_settings) node_settings.save() assert_true(node_settings.has_auth) assert_equal(node_settings.user_settings, user_settings) # A log was saved last_log = node_settings.owner.logs[-1] assert_equal(last_log.action, 'box_node_authorized') log_params = last_log.params assert_equal(log_params['folder_id'], node_settings.folder_id) assert_equal(log_params['node'], node_settings.owner._primary_key) assert_equal(last_log.user, user_settings.owner) @mock.patch("website.addons.box.model.refresh_oauth_key") def test_serialize_credentials(self, mock_refresh): mock_refresh.return_value = True self.user_settings.access_token = 'key-11' self.user_settings.save() credentials = self.node_settings.serialize_waterbutler_credentials() expected = {'token': self.node_settings.user_settings.access_token} assert_equal(credentials, expected) def test_serialize_credentials_not_authorized(self): self.node_settings.user_settings = None self.node_settings.save() with assert_raises(exceptions.AddonError): self.node_settings.serialize_waterbutler_credentials() def test_serialize_settings(self): settings = self.node_settings.serialize_waterbutler_settings() expected = {'folder': self.node_settings.folder_id} assert_equal(settings, expected) def test_serialize_settings_not_configured(self): self.node_settings.folder_id = None self.node_settings.save() with assert_raises(exceptions.AddonError): self.node_settings.serialize_waterbutler_settings() def test_create_log(self): action = 'file_added' path = 'pizza.nii' nlog = len(self.node.logs) self.node_settings.create_waterbutler_log( auth=Auth(user=self.user), action=action, metadata={'path': path, 'materialized': path}, ) self.node.reload() assert_equal(len(self.node.logs), nlog + 1) assert_equal( self.node.logs[-1].action, 'box_{0}'.format(action), ) assert_equal( self.node.logs[-1].params['path'], path )
class TestBoxNodeSettingsModel(OsfTestCase): def setUp(self): super(TestBoxNodeSettingsModel, self).setUp() self.node = ProjectFactory() self.user = self.node.creator self.external_account = BoxAccountFactory() self.user.add_addon('box') self.user.external_accounts.append(self.external_account) self.user.save() self.user_settings = self.user.get_addon('box') self.user_settings.grant_oauth_access( node=self.node, external_account=self.external_account, metadata={'folder': 'fake_folder_id'}) self.user_settings.save() self.node_settings = BoxNodeSettingsFactory( user_settings=self.user_settings, folder_id='1234567890', owner=self.node) self.node_settings.external_account = self.external_account self.node_settings.save() def tearDown(self): super(TestBoxNodeSettingsModel, self).tearDown() self.user_settings.remove() self.node_settings.remove() self.external_account.remove() self.node.remove() self.user.remove() def test_complete_true(self): assert_true(self.node_settings.has_auth) assert_true(self.node_settings.complete) def test_complete_false(self): self.user_settings.oauth_grants[self.node._id].pop( self.external_account._id) assert_true(self.node_settings.has_auth) assert_false(self.node_settings.complete) def test_complete_auth_false(self): self.node_settings.user_settings = None assert_false(self.node_settings.has_auth) assert_false(self.node_settings.complete) def test_fields(self): node_settings = BoxNodeSettings(user_settings=self.user_settings) node_settings.save() assert_true(node_settings.user_settings) assert_equal(node_settings.user_settings.owner, self.user) assert_true(hasattr(node_settings, 'folder_id')) assert_true(hasattr(node_settings, 'user_settings')) def test_folder_defaults_to_none(self): node_settings = BoxNodeSettings(user_settings=self.user_settings) node_settings.save() assert_is_none(node_settings.folder_id) def test_has_auth(self): self.user.external_accounts = [] self.user_settings.reload() settings = BoxNodeSettings(user_settings=self.user_settings) settings.save() assert_false(settings.has_auth) self.user.external_accounts.append(self.external_account) settings.reload() assert_true(settings.has_auth) def test_clear_auth(self): node_settings = BoxNodeSettingsFactory() node_settings.external_account = BoxAccountFactory() node_settings.user_settings = BoxUserSettingsFactory() node_settings.save() node_settings.clear_auth() assert_is_none(node_settings.external_account) assert_is_none(node_settings.folder_id) assert_is_none(node_settings.user_settings) def test_to_json(self): settings = self.node_settings user = UserFactory() result = settings.to_json(user) assert_equal(result['addon_short_name'], 'box') def test_delete(self): assert_true(self.node_settings.user_settings) assert_true(self.node_settings.folder_id) old_logs = self.node.logs self.node_settings.delete() self.node_settings.save() assert_is(self.node_settings.user_settings, None) assert_is(self.node_settings.folder_id, None) assert_true(self.node_settings.deleted) assert_equal(self.node.logs, old_logs) def test_deauthorize(self): assert_true(self.node_settings.user_settings) assert_true(self.node_settings.folder_id) self.node_settings.deauthorize(auth=Auth(self.user)) self.node_settings.save() assert_is(self.node_settings.user_settings, None) assert_is(self.node_settings.folder_id, None) last_log = self.node.logs[-1] assert_equal(last_log.action, 'box_node_deauthorized') params = last_log.params assert_in('node', params) assert_in('project', params) assert_in('folder_id', params) @mock.patch("website.addons.box.model.BoxNodeSettings._update_folder_data") def test_set_folder(self, mock_update_folder): folder_id = '1234567890' self.node_settings.set_folder(folder_id, auth=Auth(self.user)) self.node_settings.save() # Folder was set assert_equal(self.node_settings.folder_id, folder_id) # Log was saved last_log = self.node.logs[-1] assert_equal(last_log.action, 'box_folder_selected') def test_set_user_auth(self): node_settings = BoxNodeSettingsFactory() user_settings = BoxUserSettingsFactory() external_account = BoxAccountFactory() user_settings.owner.external_accounts.append(external_account) user_settings.save() node_settings.external_account = external_account node_settings.set_user_auth(user_settings) node_settings.save() assert_true(node_settings.has_auth) assert_equal(node_settings.user_settings, user_settings) # A log was saved last_log = node_settings.owner.logs[-1] assert_equal(last_log.action, 'box_node_authorized') log_params = last_log.params assert_equal(log_params['folder_id'], node_settings.folder_id) assert_equal(log_params['node'], node_settings.owner._primary_key) assert_equal(last_log.user, user_settings.owner) @mock.patch("website.addons.box.model.refresh_oauth_key") def test_serialize_credentials(self, mock_refresh): mock_refresh.return_value = True self.user_settings.access_token = 'key-11' self.user_settings.save() credentials = self.node_settings.serialize_waterbutler_credentials() expected = {'token': self.node_settings.user_settings.access_token} assert_equal(credentials, expected) def test_serialize_credentials_not_authorized(self): self.node_settings.user_settings = None self.node_settings.save() with assert_raises(exceptions.AddonError): self.node_settings.serialize_waterbutler_credentials() def test_serialize_settings(self): settings = self.node_settings.serialize_waterbutler_settings() expected = {'folder': self.node_settings.folder_id} assert_equal(settings, expected) def test_serialize_settings_not_configured(self): self.node_settings.folder_id = None self.node_settings.save() with assert_raises(exceptions.AddonError): self.node_settings.serialize_waterbutler_settings() def test_create_log(self): action = 'file_added' path = 'pizza.nii' nlog = len(self.node.logs) self.node_settings.create_waterbutler_log( auth=Auth(user=self.user), action=action, metadata={ 'path': path, 'materialized': path }, ) self.node.reload() assert_equal(len(self.node.logs), nlog + 1) assert_equal( self.node.logs[-1].action, 'box_{0}'.format(action), ) assert_equal(self.node.logs[-1].params['path'], path)
def set_user_settings(self, settings): external_account = BoxAccountFactory() settings.owner.external_accounts.append(external_account) settings.owner.save()