Exemple #1
0
    def do_login(self, create=True, superuser=False):
        # login page
        with self.wait_for_page_load():
            self.click(self.driver.find_element_by_id('login-button'), )

        # Create user
        if create:
            user = create_test_user()
            if superuser:
                user.is_superuser = True
                user.save()
            user.profile.language = 'en'
            user.profile.save()
            user.profile.languages.set(
                Language.objects.filter(code__in=('he', 'cs', 'hu')))
        else:
            user = None

        # Login
        username_input = self.driver.find_element_by_id('id_username')
        username_input.send_keys('*****@*****.**')
        password_input = self.driver.find_element_by_id('id_password')
        password_input.send_keys('testpassword')

        with self.wait_for_page_load():
            self.click(
                self.driver.find_element_by_xpath('//input[@value="Login"]'))
        return user
    def setUp(self):
        super(ViewTestCase, self).setUp()
        # Many tests needs access to the request factory.
        self.factory = RequestFactory()
        # Create user
        self.user = create_test_user()
        group = Group.objects.get(name='Users')
        self.user.groups.add(group)
        # Create project to have some test base
        self.subproject = self.create_subproject()
        self.project = self.subproject.project
        # Login
        self.client.login(username='******', password='******')
        # Prepopulate kwargs
        self.kw_project = {
            'project': self.project.slug
        }
        self.kw_subproject = {
            'project': self.project.slug,
            'subproject': self.subproject.slug,
        }
        self.kw_translation = {
            'project': self.project.slug,
            'subproject': self.subproject.slug,
            'lang': 'cs',
        }
        self.kw_lang_project = {
            'project': self.project.slug,
            'lang': 'cs',
        }

        # Store URL for testing
        self.translation_url = self.get_translation().get_absolute_url()
        self.project_url = self.project.get_absolute_url()
        self.subproject_url = self.subproject.get_absolute_url()
Exemple #3
0
    def do_login(self, create=True, superuser=False):
        # login page
        with self.wait_for_page_load():
            self.click(
                self.driver.find_element_by_id('login-button'),
            )

        # Create user
        if create:
            user = create_test_user()
            if superuser:
                user.is_superuser = True
                user.save()
            user.profile.language = 'en'
            user.profile.save()
            user.profile.languages.set(
                Language.objects.filter(code__in=('he', 'cs', 'hu'))
            )
        else:
            user = None

        # Login
        username_input = self.driver.find_element_by_id('id_username')
        username_input.send_keys('*****@*****.**')
        password_input = self.driver.find_element_by_id('id_password')
        password_input.send_keys('testpassword')

        with self.wait_for_page_load():
            self.click(
                self.driver.find_element_by_xpath('//input[@value="Login"]')
            )
        return user
Exemple #4
0
 def setUp(self):
     super(GitCloneTest, self).setUp()
     self.clone_test_repos()
     self.component = self.create_component()
     self.component.project.access_control = Project.ACCESS_PRIVATE
     self.component.project.save()
     self.user = create_test_user()
Exemple #5
0
    def do_login(self, create=True, superuser=False):
        # login page
        with self.wait_for_page_load():
            self.click(self.driver.find_element_by_id("login-button"))

        # Create user
        if create:
            user = create_test_user()
            if superuser:
                user.is_superuser = True
                user.save()
            user.profile.language = "en"
            user.profile.save()
            user.profile.languages.set(
                Language.objects.filter(code__in=("he", "cs", "hu")))
        else:
            user = None

        # Login
        username_input = self.driver.find_element_by_id("id_username")
        username_input.send_keys("*****@*****.**")
        password_input = self.driver.find_element_by_id("id_password")
        password_input.send_keys("testpassword")

        with self.wait_for_page_load():
            self.click(
                self.driver.find_element_by_xpath('//input[@value="Login"]'))
        return user
Exemple #6
0
 def setUp(self):
     super().setUp()
     self.clone_test_repos()
     self.component = self.create_component()
     self.component.project.access_control = Project.ACCESS_PRIVATE
     self.component.project.save()
     self.user = create_test_user()
Exemple #7
0
 def setUp(self):
     super(GitCloneTest, self).setUp()
     self.clone_test_repos()
     self.subproject = self.create_subproject()
     self.subproject.project.access_control = Project.ACCESS_PRIVATE
     self.subproject.project.save()
     self.user = create_test_user()
Exemple #8
0
 def test_delete_votes(self):
     component = self.create_po(suggestion_voting=True, suggestion_autoaccept=True)
     user = create_test_user()
     translation = component.translation_set.get(language_code="cs")
     unit = translation.unit_set.first()
     suggestion = Suggestion.objects.add(unit, "Test", None)
     Vote.objects.create(suggestion=suggestion, value=Vote.POSITIVE, user=user)
     component.project.delete()
    def test_login(self):
        # open home page
        self.driver.get('{0}{1}'.format(self.live_server_url, reverse('home')))

        # login page
        self.expand_navbar()
        self.click(self.driver.find_element_by_id('login-button'), )

        username_input = self.driver.find_element_by_id('id_username')
        username_input.send_keys('testuser')
        password_input = self.driver.find_element_by_id('id_password')
        password_input.send_keys('secret')
        self.click(
            self.driver.find_element_by_xpath('//input[@value="Login"]'))

        # Wait for submit
        time.sleep(1)

        # We should end up on login page as user was invalid
        self.driver.find_element_by_id('id_username')

        # Do proper login with new user
        create_test_user()
        password_input = self.driver.find_element_by_id('id_password')
        password_input.send_keys('testpassword')
        self.click(
            self.driver.find_element_by_xpath('//input[@value="Login"]'))

        # Wait for submit
        time.sleep(1)

        # Load profile
        self.expand_navbar()
        self.click(self.driver.find_element_by_id('profile-button'))

        # Wait for profile to load
        self.driver.find_element_by_id('subscriptions')

        # Finally logout
        self.expand_navbar()
        self.click(self.driver.find_element_by_id('logout-button'))

        # We should be back on home page
        self.expand_navbar()
        self.driver.find_element_by_id('suggestions')
Exemple #10
0
 def test_add_suggestions(self):
     user = create_test_user()
     call_command(
         "add_suggestions", "test", "test", "cs", TEST_PO, author=user.email
     )
     translation = self.component.translation_set.get(language_code="cs")
     self.assertEqual(translation.stats.suggestions, 1)
     profile = Profile.objects.get(user__email=user.email)
     self.assertEqual(profile.suggested, 1)
Exemple #11
0
 def test_add_suggestions(self):
     user = create_test_user()
     call_command(
         'add_suggestions', 'test', 'test', 'cs', TEST_PO,
         author=user.email
     )
     translation = self.component.translation_set.get(language_code='cs')
     self.assertEqual(translation.stats.suggestions, 1)
     profile = Profile.objects.get(user__email=user.email)
     self.assertEqual(profile.suggested, 1)
Exemple #12
0
 def test_add_suggestions(self):
     user = create_test_user()
     call_command(
         'add_suggestions', 'test', 'test', 'cs', TEST_PO,
         author=user.email
     )
     translation = self.subproject.translation_set.get(language_code='cs')
     self.assertEqual(translation.have_suggestion, 1)
     profile = Profile.objects.get(user__email=user.email)
     self.assertEqual(profile.suggested, 1)
Exemple #13
0
 def test_newlines(self):
     user = create_test_user()
     unit = Unit.objects.filter(translation__language_code="cs")[0]
     unit.translate(user, "new\nstring", STATE_TRANSLATED)
     self.assertEqual(unit.target, "new\nstring")
     # New object to clear all_flags cache
     unit = Unit.objects.get(pk=unit.pk)
     unit.flags = "dos-eol"
     unit.translate(user, "new\nstring", STATE_TRANSLATED)
     self.assertEqual(unit.target, "new\r\nstring")
     unit.translate(user, "other\r\nstring", STATE_TRANSLATED)
     self.assertEqual(unit.target, "other\r\nstring")
Exemple #14
0
 def test_newlines(self):
     user = create_test_user()
     unit = Unit.objects.all()[0]
     unit.translate(user, 'new\nstring', STATE_TRANSLATED)
     self.assertEqual(unit.target, 'new\nstring')
     # New object to clear all_flags cache
     unit = Unit.objects.all()[0]
     unit.flags = 'dos-eol'
     unit.translate(user, 'new\nstring', STATE_TRANSLATED)
     self.assertEqual(unit.target, 'new\r\nstring')
     unit.translate(user, 'other\r\nstring', STATE_TRANSLATED)
     self.assertEqual(unit.target, 'other\r\nstring')
Exemple #15
0
 def test_newlines(self):
     request = HttpRequest()
     request.user = create_test_user()
     unit = Unit.objects.all()[0]
     unit.translate(request, 'new\nstring', STATE_TRANSLATED)
     self.assertEqual(unit.target, 'new\nstring')
     # New object to clear all_flags cache
     unit = Unit.objects.all()[0]
     unit.flags = 'dos-eol'
     unit.translate(request, 'new\nstring', STATE_TRANSLATED)
     self.assertEqual(unit.target, 'new\r\nstring')
     unit.translate(request, 'other\r\nstring', STATE_TRANSLATED)
     self.assertEqual(unit.target, 'other\r\nstring')
Exemple #16
0
    def test_commit_groupping(self):
        project = self.create_subproject()
        translation = project.translation_set.get(language_code='cs')
        request = HttpRequest()
        request.user = create_test_user()
        for unit in translation.unit_set.all():
            unit.translate(request, 'test2', STATE_TRANSLATED)
        for unit in translation.unit_set.all():
            request.user = User.objects.create(
                first_name='User {}'.format(unit.pk),
                username='******'.format(unit.pk),
                email='{}@example.com'.format(unit.pk)
            )
            unit.translate(request, 'test', STATE_TRANSLATED)

        translation.commit_pending(None)
Exemple #17
0
    def setUp(self):
        super(ViewTestCase, self).setUp()
        if self.fake_search:
            Fulltext.FAKE = True
        # Many tests needs access to the request factory.
        self.factory = RequestFactory()
        # Create user
        self.user = create_test_user()
        group = Group.objects.get(name='Users')
        self.user.groups.add(group)
        # Create another user
        self.anotheruser = create_another_user()
        self.user.groups.add(group)
        # Create project to have some test base
        self.component = self.create_component()
        self.project = self.component.project
        # Invalidate caches
        self.project.stats.invalidate()
        cache.clear()
        # Login
        self.client.login(username='******', password='******')
        # Prepopulate kwargs
        self.kw_project = {
            'project': self.project.slug
        }
        self.kw_component = {
            'project': self.project.slug,
            'component': self.component.slug,
        }
        self.kw_translation = {
            'project': self.project.slug,
            'component': self.component.slug,
            'lang': 'cs',
        }
        self.kw_lang_project = {
            'project': self.project.slug,
            'lang': 'cs',
        }

        # Store URL for testing
        self.translation_url = self.get_translation().get_absolute_url()
        self.project_url = self.project.get_absolute_url()
        self.component_url = self.component.get_absolute_url()
Exemple #18
0
    def setUp(self):
        super(ViewTestCase, self).setUp()
        if self.fake_search:
            Fulltext.FAKE = True
        # Many tests needs access to the request factory.
        self.factory = RequestFactory()
        # Create user
        self.user = create_test_user()
        group = Group.objects.get(name='Users')
        self.user.groups.add(group)
        # Create another user
        self.anotheruser = create_another_user()
        self.user.groups.add(group)
        # Create project to have some test base
        self.component = self.create_component()
        self.project = self.component.project
        # Invalidate caches
        self.project.stats.invalidate()
        cache.clear()
        # Login
        self.client.login(username='******', password='******')
        # Prepopulate kwargs
        self.kw_project = {
            'project': self.project.slug
        }
        self.kw_component = {
            'project': self.project.slug,
            'component': self.component.slug,
        }
        self.kw_translation = {
            'project': self.project.slug,
            'component': self.component.slug,
            'lang': 'cs',
        }
        self.kw_lang_project = {
            'project': self.project.slug,
            'lang': 'cs',
        }

        # Store URL for testing
        self.translation_url = self.get_translation().get_absolute_url()
        self.project_url = self.project.get_absolute_url()
        self.component_url = self.component.get_absolute_url()
Exemple #19
0
    def test_commit_groupping(self):
        component = self.create_component()
        translation = component.translation_set.get(language_code='cs')
        request = HttpRequest()
        request.user = create_test_user()
        start_rev = component.repository.last_revision
        # Initial translation
        for unit in translation.unit_set.all():
            unit.translate(request, 'test2', STATE_TRANSLATED)
        # Translation completed, no commit forced
        self.assertEqual(start_rev, component.repository.last_revision)
        # Translation from same author should not trigger commit
        for unit in translation.unit_set.all():
            unit.translate(request, 'test3', STATE_TRANSLATED)
        for unit in translation.unit_set.all():
            unit.translate(request, 'test4', STATE_TRANSLATED)
        self.assertEqual(start_rev, component.repository.last_revision)
        # Translation from other author should trigger commmit
        for i, unit in enumerate(translation.unit_set.all()):
            request.user = User.objects.create(
                full_name='User {}'.format(unit.pk),
                username='******'.format(unit.pk),
                email='{}@example.com'.format(unit.pk)
            )
            # Fetch current pending state, it might have been
            # updated by background commit
            unit.pending = Unit.objects.get(pk=unit.pk).pending
            unit.translate(request, 'test', STATE_TRANSLATED)
            if i == 0:
                # First edit should trigger commit
                self.assertNotEqual(
                    start_rev, component.repository.last_revision
                )
                start_rev = component.repository.last_revision

        # No further commit now
        self.assertEqual(start_rev, component.repository.last_revision)

        # Commit pending changes
        translation.commit_pending('test', None)
        self.assertNotEqual(start_rev, component.repository.last_revision)
Exemple #20
0
 def test_middleware(self):
     user = create_test_user()
     # Unauthenticated
     response = self.client.get(reverse("home"), follow=True)
     self.assertContains(response, "Browse all 0 projects")
     # Login
     self.client.login(username="******", password="******")
     # Chck that homepage redirects
     response = self.client.get(reverse("home"), follow=True)
     self.assertTrue(response.redirect_chain[-1][0].startswith(
         reverse("legal:confirm")))
     # Check that contact works even without TOS
     response = self.client.get(reverse("contact"), follow=True)
     self.assertContains(response, "You can only contact administrators")
     # Confirm current TOS
     request = HttpRequest()
     request.META["REMOTE_ADDR"] = "127.0.0.1"
     user.agreement.make_current(request)
     # Homepage now should work
     response = self.client.get(reverse("home"), follow=True)
     self.assertContains(response, "Suggested translations")
Exemple #21
0
 def test_middleware(self):
     user = create_test_user()
     # Unauthenticated
     response = self.client.get(reverse('home'), follow=True)
     self.assertContains(response, 'Browse all 0 projects')
     # Login
     self.client.login(username='******', password='******')
     # Chck that homepage redirects
     response = self.client.get(reverse('home'), follow=True)
     self.assertTrue(response.redirect_chain[-1][0].startswith(
         reverse('legal:confirm')))
     # Check that contact works even without TOS
     response = self.client.get(reverse('contact'), follow=True)
     self.assertContains(response, 'You can contact maintainers')
     # Confirm current TOS
     request = HttpRequest()
     request.META['REMOTE_ADDR'] = '127.0.0.1'
     user.agreement.make_current(request)
     # Homepage now should work
     response = self.client.get(reverse('home'), follow=True)
     self.assertContains(response, 'Suggested translations')
Exemple #22
0
    def test_commit_groupping(self):
        project = self.create_component()
        translation = project.translation_set.get(language_code='cs')
        request = HttpRequest()
        request.user = create_test_user()
        start_rev = project.repository.last_revision
        # Initial translation
        for unit in translation.unit_set.all():
            unit.translate(request, 'test2', STATE_TRANSLATED)
        # Translation completed, commit forced
        self.assertNotEqual(start_rev, project.repository.last_revision)
        start_rev = project.repository.last_revision
        # Translation from same author should not trigger commit
        for unit in translation.unit_set.all():
            unit.translate(request, 'test3', STATE_TRANSLATED)
        for unit in translation.unit_set.all():
            unit.translate(request, 'test4', STATE_TRANSLATED)
        self.assertEqual(start_rev, project.repository.last_revision)
        # Translation from other author should trigger commmit
        for i, unit in enumerate(translation.unit_set.all()):
            request.user = User.objects.create(
                full_name='User {}'.format(unit.pk),
                username='******'.format(unit.pk),
                email='{}@example.com'.format(unit.pk)
            )
            unit.refresh_from_db()
            unit.translate(request, 'test', STATE_TRANSLATED)
            if i == 0:
                # First edit should trigger commit
                self.assertNotEqual(
                    start_rev, project.repository.last_revision
                )
                start_rev = project.repository.last_revision

        # No further commit now
        self.assertEqual(start_rev, project.repository.last_revision)

        # Commit pending changes
        translation.commit_pending(None)
        self.assertNotEqual(start_rev, project.repository.last_revision)
Exemple #23
0
    def test_commit_groupping(self):
        project = self.create_component()
        translation = project.translation_set.get(language_code='cs')
        request = HttpRequest()
        request.user = create_test_user()
        start_rev = project.repository.last_revision
        # Initial translation
        for unit in translation.unit_set.all():
            unit.translate(request, 'test2', STATE_TRANSLATED)
        # Translation completed, commit forced
        self.assertNotEqual(start_rev, project.repository.last_revision)
        start_rev = project.repository.last_revision
        # Translation from same author should not trigger commit
        for unit in translation.unit_set.all():
            unit.translate(request, 'test3', STATE_TRANSLATED)
        for unit in translation.unit_set.all():
            unit.translate(request, 'test4', STATE_TRANSLATED)
        self.assertEqual(start_rev, project.repository.last_revision)
        # Translation from other author should trigger commmit
        for i, unit in enumerate(translation.unit_set.all()):
            request.user = User.objects.create(
                first_name='User {}'.format(unit.pk),
                username='******'.format(unit.pk),
                email='{}@example.com'.format(unit.pk)
            )
            unit.refresh_from_db()
            unit.translate(request, 'test', STATE_TRANSLATED)
            if i == 0:
                # First edit should trigger commit
                self.assertNotEqual(
                    start_rev, project.repository.last_revision
                )
                start_rev = project.repository.last_revision

        # No further commit now
        self.assertEqual(start_rev, project.repository.last_revision)

        # Commit pending changes
        translation.commit_pending(None)
        self.assertNotEqual(start_rev, project.repository.last_revision)
Exemple #24
0
    def test_commit_groupping(self):
        component = self.create_component()
        translation = component.translation_set.get(language_code="cs")
        user = create_test_user()
        start_rev = component.repository.last_revision
        # Initial translation
        for unit in translation.unit_set.iterator():
            unit.translate(user, "test2", STATE_TRANSLATED)
        # Translation completed, no commit forced
        self.assertEqual(start_rev, component.repository.last_revision)
        # Translation from same author should not trigger commit
        for unit in translation.unit_set.iterator():
            unit.translate(user, "test3", STATE_TRANSLATED)
        for unit in translation.unit_set.iterator():
            unit.translate(user, "test4", STATE_TRANSLATED)
        self.assertEqual(start_rev, component.repository.last_revision)
        # Translation from other author should trigger commmit
        for i, unit in enumerate(translation.unit_set.iterator()):
            user = User.objects.create(
                full_name=f"User {unit.pk}",
                username=f"user-{unit.pk}",
                email=f"{unit.pk}@example.com",
            )
            # Fetch current pending state, it might have been
            # updated by background commit
            unit.pending = Unit.objects.get(pk=unit.pk).pending
            unit.translate(user, "test", STATE_TRANSLATED)
            if i == 0:
                # First edit should trigger commit
                self.assertNotEqual(start_rev,
                                    component.repository.last_revision)
                start_rev = component.repository.last_revision

        # No further commit now
        self.assertEqual(start_rev, component.repository.last_revision)

        # Commit pending changes
        translation.commit_pending("test", None)
        self.assertNotEqual(start_rev, component.repository.last_revision)
Exemple #25
0
 def setUp(self):
     Payment.objects.all().delete()
     Customer.objects.all().delete()
     self.user = create_test_user()
     self.client.login(username='******', password='******')
     self.plan_a = Plan.objects.create(name='Plan A',
                                       price=19,
                                       yearly_price=199,
                                       public=True)
     self.plan_b = Plan.objects.create(name='Plan B',
                                       price=49,
                                       yearly_price=499,
                                       public=True)
     self.plan_c = Plan.objects.create(name='Plan C',
                                       price=9,
                                       yearly_price=99,
                                       public=False)
     self.plan_d = Plan.objects.create(name='Plan D',
                                       price=0,
                                       yearly_price=0,
                                       public=True)
     setup_dirs()
Exemple #26
0
    def test_acl(self):
        """Test for ACL handling."""
        # Create user to verify ACL
        user = create_test_user()

        # Create project
        project = self.create_project()

        # Enable ACL
        project.access_control = Project.ACCESS_PRIVATE
        project.save()

        # Check user does not have access
        self.assertFalse(user.can_access_project(project))

        # Add to ACL group
        user.groups.add(Group.objects.get(name="Test@Translate"))

        # Need to fetch user again to clear permission cache
        user = User.objects.get(username="******")

        # We now should have access
        self.assertTrue(user.can_access_project(project))
Exemple #27
0
    def test_acl(self):
        """Test for ACL handling."""
        # Create user to verify ACL
        user = create_test_user()

        # Create project
        project = self.create_project()

        # Enable ACL
        project.access_control = Project.ACCESS_PRIVATE
        project.save()

        # Check user does not have access
        self.assertFalse(user.can_access_project(project))

        # Add to ACL group
        user.groups.add(Group.objects.get(name='Test@Translate'))

        # Need to fetch user again to clear permission cache
        user = User.objects.get(username='******')

        # We now should have access
        self.assertTrue(user.can_access_project(project))
Exemple #28
0
    def setUp(self):
        super().setUp()
        # Many tests needs access to the request factory.
        self.factory = RequestFactory()
        # Create user
        self.user = create_test_user()
        group = Group.objects.get(name="Users")
        self.user.groups.add(group)
        # Create another user
        self.anotheruser = create_another_user()
        self.user.groups.add(group)
        # Create project to have some test base
        self.component = self.create_component()
        self.project = self.component.project
        # Invalidate caches
        self.project.stats.invalidate()
        cache.clear()
        # Login
        self.client.login(username="******", password="******")
        # Prepopulate kwargs
        self.kw_project = {"project": self.project.slug}
        self.kw_component = {
            "project": self.project.slug,
            "component": self.component.slug,
        }
        self.kw_translation = {
            "project": self.project.slug,
            "component": self.component.slug,
            "lang": "cs",
        }
        self.kw_lang_project = {"project": self.project.slug, "lang": "cs"}

        # Store URL for testing
        self.translation_url = self.get_translation().get_absolute_url()
        self.project_url = self.project.get_absolute_url()
        self.component_url = self.component.get_absolute_url()
Exemple #29
0
 def test_middleware(self):
     user = create_test_user()
     # Unauthenticated
     response = self.client.get(reverse('home'), follow=True)
     self.assertContains(response, 'Suggested translations')
     # Login
     self.client.login(username='******', password='******')
     # Chck that homepage redirects
     response = self.client.get(reverse('home'), follow=True)
     self.assertTrue(
         response.redirect_chain[-1][0].startswith(
             reverse('legal:confirm')
         )
     )
     # Check that contact works even without TOS
     response = self.client.get(reverse('contact'), follow=True)
     self.assertContains(response, 'You can contact maintainers')
     # Confirm current TOS
     request = HttpRequest()
     request.META['REMOTE_ADDR'] = '127.0.0.1'
     user.agreement.make_current(request)
     # Homepage now should work
     response = self.client.get(reverse('home'), follow=True)
     self.assertContains(response, 'Suggested translations')