示例#1
0
    def _pre_setup(self):
        if self.facebook_test_user:
            if type(self.facebook_test_user) not in [str, unicode]:
                raise Exception("facebook_test_user variable must be a string (found a %s)" % type(self.facebook_test_user))

            app_name = get_app_name_from_test_case(type(self).__module__)
            facetools_fixture_name = _get_facetools_test_fixture_name(app_name)

            if not hasattr(self, 'fixtures'):
                self.fixtures = []
            if facetools_fixture_name not in self.fixtures:
                self.fixtures.append(facetools_fixture_name)
            super(FacebookTestCaseMixin, self)._pre_setup()

            # Make sure anybody that needs to sync their models loaded from fixtures
            # has a chance to do so now that the refreshed user test data is available.
            try:
                for test_user in TestUser.objects.all():
                    sync_facebook_test_user.send(sender=None, test_user=test_user)

                # Allow code to configure the test client so it has a signed request
                # of the specified test user for each request
                self.test_user = TestUser.objects.get(name=self.facebook_test_user)
                setup_facebook_test_client.send(sender=None, client=self.client, signed_request=_create_signed_request(
                    settings.FACEBOOK_APPLICATION_SECRET_KEY,
                    str(self.test_user.facebook_id),
                    oauth_token=self.test_user.access_token,
                ))
            except TestUser.DoesNotExist:
                raise TestUserNotLoaded("Test user %s hasn't been loaded via the %s fixture (did you run sync_facebook_test_users?)" %
                                        (self.facebook_test_user, facetools_fixture_name))
        else:
            super(FacebookTestCaseMixin, self)._pre_setup()
示例#2
0
    def _pre_setup(self):
        if self.facebook_test_user:
            if type(self.facebook_test_user) not in [str, unicode]:
                raise Exception("facebook_test_user variable must be a string (found a %s)" % type(self.facebook_test_user))

            app_name = get_app_name_from_test_case(type(self).__module__)
            facetools_fixture_name = _get_facetools_test_fixture_name(app_name)

            if not hasattr(self, 'fixtures'):
                self.fixtures = []
            if facetools_fixture_name not in self.fixtures:
                self.fixtures.append(facetools_fixture_name)
            super(FacebookTestCaseMixin, self)._pre_setup()

            # Make sure anybody that needs to sync their models loaded from fixtures
            # has a chance to do so now that the refreshed user test data is available.
            try:
                for test_user in TestUser.objects.all():
                    sync_facebook_test_user.send(sender=None, test_user=test_user)
                self.test_user = TestUser.objects.get(name=self.facebook_test_user)
                self.set_client_signed_request(self.test_user.facebook_id, self.test_user.access_token)
            except TestUser.DoesNotExist:
                raise TestUserNotLoaded("Test user %s hasn't been loaded via the %s fixture (did you run sync_facebook_test_users?)" %
                                        (self.facebook_test_user, facetools_fixture_name))
        else:
            super(FacebookTestCaseMixin, self)._pre_setup()
示例#3
0
    def handle_app(self, app, **options):
        app_name = '.'.join(app.__name__.split('.')[0:-1])

        test_users = _get_facetools_test_users(app_name)
        existing_facebook_test_users = _get_existing_facebook_test_users()
        existing_facetool_test_users = [u.name for u in TestUser.objects.all()]
        existing_test_users = set(existing_facebook_test_users.keys() +
                                  existing_facetool_test_users)

        # Create any test users on facebook their corresponding User models in facetools
        # that don't exist on facebook yet.
        for test_user in test_users:
            _print('Syncing %s' % test_user['name'])

            # Add user to facebook and local database
            if test_user['name'] not in existing_test_users:
                _create_test_user(app_installed=test_user.get(
                    'installed', True),
                                  name=test_user['name'],
                                  permissions=test_user.get('permissions'))

            # or add test user to facebook and sync with existing test user in the local database
            elif test_user['name'] not in existing_facebook_test_users:
                facebook_response_data = _create_test_user_on_facebook(
                    app_installed=test_user.get('installed', True),
                    name=test_user['name'],
                    permissions=test_user.get('permissions'))
                facetools_user = TestUser.objects.get(name=test_user['name'])
                facetools_user.facebook_id = facebook_response_data['id']
                facetools_user.access_token = facebook_response_data.get(
                    'access_token')
                facetools_user.login_url = facebook_response_data.get(
                    'login_url')
                facetools_user.save()

            # or add test user to the local database using the test user's data on facebook
            elif test_user['name'] not in existing_facetool_test_users:
                facebook_data = existing_facebook_test_users[test_user['name']]
                TestUser.objects.create(
                    name=test_user['name'],
                    facebook_id=facebook_data['id'],
                    access_token=facebook_data.get('access_token'),
                    login_url=facebook_data.get('login_url'))

            # or sync the existing user with the latest facebook information
            else:
                facebook_data = existing_facebook_test_users[test_user['name']]
                facetools_user = TestUser.objects.get(name=test_user['name'])
                facetools_user.facebook_id = facebook_data['id']
                facetools_user.access_token = facebook_data.get('access_token')
                facetools_user.login_url = facebook_data.get('login_url')
                facetools_user.save()

            sync_facebook_test_user.send(
                sender=None,
                test_user=TestUser.objects.get(name=test_user['name']))

        _create_test_user_friendships(test_users)
        _create_test_user_fixture(app, app_name, test_users)
    def handle_app(self, app, **options):
        app_name = '.'.join(app.__name__.split('.')[0:-1])

        test_users = _get_facetools_test_users(app_name)
        existing_facebook_test_users = _get_existing_facebook_test_users()
        existing_facetool_test_users = [u.name for u in TestUser.objects.all()]
        existing_test_users = set(existing_facebook_test_users.keys() + existing_facetool_test_users)

        # Create any test users on facebook their corresponding User models in facetools
        # that don't exist on facebook yet.
        for test_user in test_users:
            _print('Syncing %s' % test_user['name'])

            # Add user to facebook and local database
            if test_user['name'] not in existing_test_users:
                _create_test_user(
                    app_installed = test_user.get('installed', True),
                    name          = test_user['name'],
                    permissions   = test_user.get('permissions')
                )

            # or add test user to facebook and sync with existing test user in the local database
            elif test_user['name'] not in existing_facebook_test_users:
                facebook_response_data = _create_test_user_on_facebook(
                    app_installed = test_user.get('installed', True),
                    name          = test_user['name'],
                    permissions   = test_user.get('permissions')
                )
                facetools_user = TestUser.objects.get(name=test_user['name'])
                facetools_user.facebook_id = facebook_response_data['id']
                facetools_user.access_token = facebook_response_data.get('access_token')
                facetools_user.login_url = facebook_response_data.get('login_url')
                facetools_user.save()

            # or add test user to the local database using the test user's data on facebook
            elif test_user['name'] not in existing_facetool_test_users:
                facebook_data = existing_facebook_test_users[test_user['name']]
                TestUser.objects.create(
                    name         = test_user['name'],
                    facebook_id  = facebook_data['id'],
                    access_token = facebook_data.get('access_token'),
                    login_url    = facebook_data.get('login_url')
                )

            # or sync the existing user with the latest facebook information
            else:
                facebook_data = existing_facebook_test_users[test_user['name']]
                facetools_user = TestUser.objects.get(name=test_user['name'])
                facetools_user.facebook_id = facebook_data['id']
                facetools_user.access_token = facebook_data.get('access_token')
                facetools_user.login_url = facebook_data.get('login_url')
                facetools_user.save()

            sync_facebook_test_user.send(sender=None, test_user=TestUser.objects.get(name=test_user['name']))

        _create_test_user_friendships(test_users)
        _create_test_user_fixture(app, app_name, test_users)