Example #1
0
    def test_folder_defaults_to_none(self):
        node_settings = GoogleDriveNodeSettings(
            user_settings=self.user_settings)
        node_settings.save()

        assert_is_none(node_settings.folder_id)
        assert_is_none(node_settings.folder_path)
Example #2
0
    def test_fields(self):
        node_settings = GoogleDriveNodeSettings(user_settings=self.user_settings)
        node_settings.save()

        assert_true(node_settings.user_settings)
        assert_true(hasattr(node_settings, 'folder_id'))
        assert_true(hasattr(node_settings, 'folder_path'))
        assert_true(hasattr(node_settings, 'folder_name'))
        assert_equal(node_settings.user_settings.owner, self.user)
Example #3
0
    def test_has_auth(self):
        settings = GoogleDriveNodeSettings(user_settings=self.user_settings)
        settings.user_settings.access_token = None
        settings.save()

        assert_false(settings.has_auth)

        settings.user_settings.access_token = '123abc'
        settings.user_settings.save()

        assert_true(settings.has_auth)
def do_migration():
    for node_addon in GoogleDriveNodeSettings.find(Q('foreign_user_settings', 'ne', None)):
        f_id = None
        user_addon = node_addon.foreign_user_settings
        user = user_addon.owner
        if not user_addon.external_accounts:
            logger.warning('User {0} has no googledrive external account'.format(user._id))
            continue
        account = user_addon.external_accounts[0]

        if node_addon.folder_id:
            f_id = node_addon.folder_id

        node_addon.set_auth(account, user_addon.owner)  #.set_auth will reset the folder_id field
        node_addon.folder_id = f_id
        node_addon.save()

        user_addon.grant_oauth_access(
            node=node_addon.owner,
            external_account=account,
            metadata={'folder': f_id}
        )

        logger.info('Added external account {0} to node {1}'.format(
            account._id, node_addon.owner._id,
        ))
def do_migration():
    for node_addon in GoogleDriveNodeSettings.find(
            Q('foreign_user_settings', 'ne', None)):
        f_id = None
        user_addon = node_addon.foreign_user_settings
        user = user_addon.owner
        if not user_addon.external_accounts:
            logger.warning(
                'User {0} has no googledrive external account'.format(
                    user._id))
            continue
        account = user_addon.external_accounts[0]

        if node_addon.folder_id:
            f_id = node_addon.folder_id

        node_addon.set_auth(
            account,
            user_addon.owner)  #.set_auth will reset the folder_id field
        node_addon.folder_id = f_id
        node_addon.save()

        user_addon.grant_oauth_access(node=node_addon.owner,
                                      external_account=account,
                                      metadata={'folder': f_id})

        logger.info('Added external account {0} to node {1}'.format(
            account._id,
            node_addon.owner._id,
        ))
def do_migration(records):
    database['googledrivenodesettings'].update({'user_settings': {
        '$type': 2
    }}, {'$rename': {
        'user_settings': 'foreign_user_settings'
    }},
                                               multi=True)

    for user_addon in records:
        user = user_addon.owner
        old_account = user_addon.oauth_settings

        logger.info('Record found for user {}'.format(user._id))

        # Create/load external account and append to user
        try:
            account = ExternalAccount(
                provider='googledrive',
                provider_name='Google Drive',
                display_name=old_account.username,
                oauth_key=old_account.access_token,
                refresh_token=old_account.refresh_token,
                provider_id=old_account.user_id,
                expires_at=old_account.expires_at,
            )
            account.save()
        except KeyExistsException:
            # ... or get the old one
            account = ExternalAccount.find_one(
                Q('provider', 'eq', 'googledrive')
                & Q('provider_id', 'eq', old_account.user_id))
            assert account is not None
        user.external_accounts.append(account)
        user.save()

        # Remove oauth_settings from user settings object
        user_addon.oauth_settings = None
        user_addon.save()

        logger.info('Added external account {0} to user {1}'.format(
            account._id,
            user._id,
        ))

    # Add external account to authorized nodes
    for node in GoogleDriveNodeSettings.find():
        if node.foreign_user_settings is None:
            continue
        logger.info('Migrating user_settings for googledrive {}'.format(
            node._id))
        node.user_settings = node.foreign_user_settings
        node.save()
def do_migration(records):
    database['googledrivenodesettings'].update({'user_settings': {'$type': 2}}, {'$rename': { 'user_settings': 'foreign_user_settings'}}, multi=True)

    for user_addon in records:
        user = user_addon.owner
        old_account = user_addon.oauth_settings

        logger.info('Record found for user {}'.format(user._id))

        # Create/load external account and append to user
        try:
            account = ExternalAccount(
                provider='googledrive',
                provider_name='Google Drive',
                display_name=old_account.username,
                oauth_key=old_account.access_token,
                refresh_token=old_account.refresh_token,
                provider_id=old_account.user_id,
                expires_at=old_account.expires_at,
            )
            account.save()
        except KeyExistsException:
            # ... or get the old one
            account = ExternalAccount.find_one(
                Q('provider', 'eq', 'googledrive') &
                Q('provider_id', 'eq', old_account.user_id)
            )
            assert account is not None
        user.external_accounts.append(account)
        user.save()

        # Remove oauth_settings from user settings object
        user_addon.oauth_settings = None
        user_addon.save()

        logger.info('Added external account {0} to user {1}'.format(
            account._id, user._id,
        ))

    # Add external account to authorized nodes
    for node in GoogleDriveNodeSettings.find():
        if node.foreign_user_settings is None:
            continue
        logger.info('Migrating user_settings for googledrive {}'.format(node._id))
        node.user_settings = node.foreign_user_settings
        node.save()
Example #8
0
    def test_folder_defaults_to_none(self):
        node_settings = GoogleDriveNodeSettings(user_settings=self.user_settings)
        node_settings.save()

        assert_is_none(node_settings.folder_id)
        assert_is_none(node_settings.folder_path)
Example #9
0
 def tearDown(self):
     GitHubNodeSettings.remove()
     GitHubUserSettings.remove()
     GoogleDriveNodeSettings.remove()
     GoogleDriveUserSettings.remove()
Example #10
0
 def tearDown(self):
     GitHubNodeSettings.remove()
     GitHubUserSettings.remove()
     GoogleDriveNodeSettings.remove()
     GoogleDriveUserSettings.remove()