Esempio n. 1
0
    def test_manage_announcements(self):
        """Test course author can manage announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements'

        actions.login(email, True)
        actions.register(self, name)

        # add new
        response = actions.view_announcements(self)
        add_form = response.forms['gcb-add-announcement']
        response = self.submit(add_form)
        assert_equals(response.status_int, 302)

        # check added
        response = actions.view_announcements(self)
        assert_contains('Sample Announcement (Draft)', response.body)

        # delete draft
        response = actions.view_announcements(self)
        delete_form = response.forms['gcb-delete-announcement-1']
        response = self.submit(delete_form)
        assert_equals(response.status_int, 302)

        # check deleted
        assert_does_not_contain('Welcome to the final class!', response.body)
Esempio n. 2
0
    def test_manage_announcements(self):
        """Test course author can manage announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements'

        actions.login(email, True)
        actions.register(self, name)

        # add new
        response = actions.view_announcements(self)
        add_form = response.forms['gcb-add-announcement']
        response = self.submit(add_form)
        assert_equals(response.status_int, 302)

        # check added
        response = actions.view_announcements(self)
        assert_contains('Sample Announcement (Draft)', response.body)

        # delete draft
        response = actions.view_announcements(self)
        delete_form = response.forms['gcb-delete-announcement-1']
        response = self.submit(delete_form)
        assert_equals(response.status_int, 302)

        # check deleted
        assert_does_not_contain('Welcome to the final class!', response.body)
Esempio n. 3
0
    def test_announcements_rest(self):
        """Test REST access to announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements Rest'

        actions.login(email, True)
        actions.register(self, name)

        response = actions.view_announcements(self)
        assert_does_not_contain('My Test Title', response.body)

        # REST GET existing item
        items = AnnouncementEntity.all().fetch(1)
        for item in items:
            response = self.get('rest/announcements/item?key=%s' % item.key())
            json_dict = json.loads(response.body)
            assert json_dict['status'] == 200
            assert 'message' in json_dict
            assert 'payload' in json_dict

            payload_dict = json.loads(json_dict['payload'])
            assert 'title' in payload_dict
            assert 'date' in payload_dict

            # REST PUT item
            payload_dict['title'] = u'My Test Title Мой заголовок теста'
            payload_dict['date'] = '2012/12/31'
            payload_dict['is_draft'] = True
            request = {}
            request['key'] = str(item.key())
            request['payload'] = json.dumps(payload_dict)

            # Check XSRF is required.
            response = self.put('rest/announcements/item?%s' % urllib.urlencode(
                {'request': json.dumps(request)}), {})
            assert_equals(response.status_int, 200)
            assert_contains('"status": 403', response.body)

            # Check PUT works.
            request['xsrf_token'] = json_dict['xsrf_token']
            response = self.put('rest/announcements/item?%s' % urllib.urlencode(
                {'request': json.dumps(request)}), {})
            assert_equals(response.status_int, 200)
            assert_contains('"status": 200', response.body)

            # Confirm change is visible on the page.
            response = self.get('announcements')
            assert_contains(
                u'My Test Title Мой заголовок теста (Draft)', response.body)

        # REST GET not-existing item
        response = self.get('rest/announcements/item?key=not_existent_key')
        json_dict = json.loads(response.body)
        assert json_dict['status'] == 404
Esempio n. 4
0
    def test_trigger_sample_announcements(self):
        """Test course author can trigger adding sample announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements'

        actions.login(email, True)
        actions.register(self, name)

        response = actions.view_announcements(self)
        assert_contains('Example Announcement', response.body)
        assert_contains('Welcome to the final class!', response.body)
        assert_does_not_contain('No announcements yet.', response.body)
Esempio n. 5
0
    def test_trigger_sample_announcements(self):
        """Test course author can trigger adding sample announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements'

        actions.login(email, True)
        actions.register(self, name)

        response = actions.view_announcements(self)
        assert_contains('Example Announcement', response.body)
        assert_contains('Welcome to the final class!', response.body)
        assert_does_not_contain('No announcements yet.', response.body)
Esempio n. 6
0
    def test_view_announcements(self):
        """Test student aspect of announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements'

        actions.login(email)
        actions.register(self, name)

        # Check no announcements yet.
        response = actions.view_announcements(self)
        assert_does_not_contain('Example Announcement', response.body)
        assert_does_not_contain('Welcome to the final class!', response.body)
        assert_contains('No announcements yet.', response.body)
        actions.logout()

        # Login as admin and add announcements.
        actions.login('*****@*****.**', True)
        actions.register(self, 'admin')
        response = actions.view_announcements(self)
        actions.logout()

        # Check we can see non-draft announcements.
        actions.login(email)
        response = actions.view_announcements(self)
        assert_contains('Example Announcement', response.body)
        assert_does_not_contain('Welcome to the final class!', response.body)
        assert_does_not_contain('No announcements yet.', response.body)

        # Check no access to access to draft announcements via REST handler.
        items = AnnouncementEntity.all().fetch(1000)
        for item in items:
            response = self.get('rest/announcements/item?key=%s' % item.key())
            if item.is_draft:
                json_dict = json.loads(response.body)
                assert json_dict['status'] == 401
            else:
                assert_equals(response.status_int, 200)
Esempio n. 7
0
    def test_view_announcements(self):
        """Test student aspect of announcements."""
        email = '*****@*****.**'
        name = 'Test Announcements'

        actions.login(email)
        actions.register(self, name)

        # Check no announcements yet.
        response = actions.view_announcements(self)
        assert_does_not_contain('Example Announcement', response.body)
        assert_does_not_contain('Welcome to the final class!', response.body)
        assert_contains('No announcements yet.', response.body)
        actions.logout()

        # Login as admin and add announcements.
        actions.login('*****@*****.**', True)
        actions.register(self, 'admin')
        response = actions.view_announcements(self)
        actions.logout()

        # Check we can see non-draft announcements.
        actions.login(email)
        response = actions.view_announcements(self)
        assert_contains('Example Announcement', response.body)
        assert_does_not_contain('Welcome to the final class!', response.body)
        assert_does_not_contain('No announcements yet.', response.body)

        # Check no access to access to draft announcements via REST handler.
        items = AnnouncementEntity.all().fetch(1000)
        for item in items:
            response = self.get('rest/announcements/item?key=%s' % item.key())
            if item.is_draft:
                json_dict = json.loads(response.body)
                assert json_dict['status'] == 401
            else:
                assert_equals(response.status_int, 200)
 def _add_announcement(self, form_settings):
     response = actions.view_announcements(self)
     add_form = response.forms['gcb-add-announcement']
     response = self.submit(add_form).follow()
     match = re.search(r'\'([^\']+rest/announcements/item\?key=([^\']+))',
                       response.body)
     url = match.group(1)
     key = match.group(2)
     response = self.get(url)
     json_dict = transforms.loads(response.body)
     payload_dict = transforms.loads(json_dict['payload'])
     payload_dict.update(form_settings)
     request = {}
     request['key'] = key
     request['payload'] = transforms.dumps(payload_dict)
     request['xsrf_token'] = json_dict['xsrf_token']
     response = self.put('rest/announcements/item?%s' % urllib.urlencode(
         {'request': transforms.dumps(request)}), {})
 def _add_announcement(self, form_settings):
     response = actions.view_announcements(self)
     add_form = response.forms['gcb-add-announcement']
     response = self.submit(add_form).follow()
     match = re.search(r'\'([^\']+rest/announcements/item\?key=([^\']+))',
                       response.body)
     url = match.group(1)
     key = match.group(2)
     response = self.get(url)
     json_dict = transforms.loads(response.body)
     payload_dict = transforms.loads(json_dict['payload'])
     payload_dict.update(form_settings)
     request = {}
     request['key'] = key
     request['payload'] = transforms.dumps(payload_dict)
     request['xsrf_token'] = json_dict['xsrf_token']
     response = self.put('rest/announcements/item?%s' % urllib.urlencode(
         {'request': transforms.dumps(request)}), {})