Ejemplo n.º 1
0
 def test_get_redir_user_demo(self):
     payload = {"user": {"username": self.demo["username"]}}
     self.client.login(username=payload["user"]["username"],
                       password="******")
     sapp = SocialApp(provider='github',
                      name='Github',
                      client_id='<test>',
                      secret='<test>')
     sapp.save()
     sacc = SocialAccount(uid=1001, user=self.test_user, provider="github")
     sacc.save()
     stoken = SocialToken(app=sapp, account=sacc, token="test_token")
     stoken.save()
     response = self.client.post('/accounts/profile', follow=True)
     first_url, first_response = response.redirect_chain[0]
     self.assertEqual(
         first_url,
         "/login?status=passed&token=test_token&username=testname&user_id=1001"
     )
     self.client.login(username=payload["user"]["username"],
                       password="******")
     stoken = SocialToken(app=sapp, account=sacc, token="test_token")
     stoken.save()
     response = self.client.post('/accounts/profile', follow=True)
     first_url, first_response = response.redirect_chain[0]
     self.assertEqual(
         first_url,
         "/login?status=passed&token=test_token&username=testname&user_id=1001"
     )
Ejemplo n.º 2
0
 def test_get_redir_user_demo(self):
     payload = {"user": {"username": self.demo["username"]}}
     self.client.login(username=payload["user"]["username"], password="******")
     sapp = SocialApp(provider='github', name='Github', client_id='<test>', secret='<test>')
     sapp.save()
     sacc = SocialAccount(uid=1001, user=self.test_user, provider="github")
     sacc.save()
     stoken = SocialToken(app=sapp, account=sacc, token="test_token")
     stoken.save()
     response = self.client.post('/accounts/profile', follow=True)
     first_url, first_response = response.redirect_chain[0]
     self.assertEqual(first_url, "/login?status=passed&token=test_token&username=testname&user_id=1001")
     self.client.login(username=payload["user"]["username"], password="******")
     stoken = SocialToken(app=sapp, account=sacc, token="test_token")
     stoken.save()
     response = self.client.post('/accounts/profile', follow=True)
     first_url, first_response = response.redirect_chain[0]
     self.assertEqual(first_url, "/login?status=passed&token=test_token&username=testname&user_id=1001")
Ejemplo n.º 3
0
    def complete_login(self, request, app, token, email_addresses=[]):

        client = TwitterAPI(request, app.client_id, app.secret,
                            self.request_token_url)
        extra_data = client.get_user_info()
        uid = extra_data['id']

        user = User.objects.filter(username=extra_data.get('screen_name'))

        if user:
            return user
        else:

            user = get_adapter() \
                .populate_new_user(username=extra_data.get('screen_name'),
                                   name=extra_data.get('name'))
            user.save()
            account = SocialAccount(user=user,
                                    uid=uid,
                                    provider=TwitterProvider.id,
                                    extra_data=extra_data)
            account.save()
            application = SocialApp.objects.get(secret=app.secret)
            sample_token = SocialToken.objects.filter(app=application,
                                                      account=account)
            if sample_token:
                token = sample_token[0]
            else:
                token = SocialToken(
                    app=application,
                    account=account,
                    token=request.session["oauth_api.twitter.com_access_token"]
                    ["oauth_token"],
                    token_secret=request.
                    session["oauth_api.twitter.com_access_token"]
                    ["oauth_token_secret"])
                token.save()

            mail = send_email_confirmation(request=request,
                                           user=user,
                                           signup=True)
            return SocialLogin(account=account,
                               token=token,
                               email_addresses=email_addresses)
Ejemplo n.º 4
0
    def complete_login(self, request, app, token, email_addresses=[]):

        client = TwitterAPI(request, app.client_id, app.secret,
                            self.request_token_url)
        extra_data = client.get_user_info()
        uid = extra_data['id']

        user = User.objects.filter(username=extra_data.get('screen_name'))

        if user:
            return user
        else:

            user = get_adapter() \
                .populate_new_user(username=extra_data.get('screen_name'),
                                   name=extra_data.get('name'))
            user.save()
            account = SocialAccount(user=user,
                                    uid=uid,
                                    provider=TwitterProvider.id,
                                    extra_data=extra_data)
            account.save()
            application = SocialApp.objects.get(secret=app.secret)
            sample_token = SocialToken.objects.filter(app=application, account=account)
            if sample_token:
                token = sample_token[0]
            else:
                token = SocialToken(app=application,
                                    account=account,
                                    token=request.session["oauth_api.twitter.com_access_token"]["oauth_token"],
                                    token_secret=request.session["oauth_api.twitter.com_access_token"][
                                        "oauth_token_secret"])
                token.save()

            mail = send_email_confirmation(request=request, user=user, signup=True)
            return SocialLogin(account=account, token=token, email_addresses=email_addresses)
Ejemplo n.º 5
0
class GitManagerTestCases(TestCase):
    def setUp(self):
        call_command('loaddata', 'fixtures/steps.json', verbosity=0)
        call_command('loaddata',
                     'fixtures/package_categories_languages.json',
                     verbosity=0)
        call_command('loaddata', 'fixtures/cookiecutter.json', verbosity=0)

        self.user = User.objects.create_user('test', '*****@*****.**', 'test')
        self.workbench_user = WorkbenchUser.objects.get(user=self.user)
        self.second_user = User.objects.create_user('test2', '*****@*****.**',
                                                    'test2')
        self.git_repo = GitRepository.objects.create(
            name='Experiment',
            owner=self.workbench_user,
            github_url='https://github')
        schema = DataSchema(name='main')
        schema.save()
        self.experiment = Experiment.objects.create(title='Experiment',
                                                    description='test',
                                                    owner=self.workbench_user,
                                                    git_repo=self.git_repo,
                                                    language_id=1,
                                                    template_id=2,
                                                    schema=schema)
        self.client = Client()
        self.client.login(username='******', password='******')

        if self._testMethodName is not 'test_init_github_helper_no_socialtoken':
            self.set_up_social()

    def set_up_social(self):
        self.social_app = SocialApp(provider='GitHub',
                                    name='GitHub',
                                    client_id='B',
                                    secret='A')
        self.social_app.save()

        self.social_account = SocialAccount(user=self.user,
                                            provider='github',
                                            uid='A')
        self.social_account.save()

        self.social_token = SocialToken(app=self.social_app,
                                        account=self.social_account,
                                        token='A',
                                        token_secret='B')
        self.social_token.save()

    def test_init_github_helper_no_socialtoken(self):
        github_helper = GitHubHelper
        args = [self.user, 'test']
        self.assertRaises(ValueError, github_helper, *args)

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_init_github_helper(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_init_github_helper_create(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test', create=True)
        self.assertIsNotNone(github_helper)
        self.assertEqual(github_helper.github_repository.repo_name,
                         'newly_created_repo')

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_github_owner(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)
        self.assertEqual(github_helper.owner, 'test')

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_init_github_helper(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)
        self.assertEqual(github_helper.get_clone_url(), 'https://A@clone-url')

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_github_list_folder(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)
        self.assertEqual(github_helper.list_files_in_folder('test1'),
                         GithubMockRepo.TEST1_LIST)

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_github_list_folder_with_slash(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)
        self.assertEqual(github_helper.list_files_in_folder('/test1'),
                         GithubMockRepo.TEST1_LIST)

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_github_list_folder_empty(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)
        self.assertEqual(github_helper.list_files_in_folder(),
                         GithubMockRepo.TEST2_LIST)

    @patch('git_manager.helpers.github_helper.GitHubHelper._get_github_object')
    def test_view_file_in_repo(self, mock_github):
        mock_github.return_value = GithubMock()
        github_helper = GitHubHelper(self.user, 'test')
        self.assertIsNotNone(github_helper)