Example #1
0
  def testCreateDocumentNoDashboardVisibility(self):
    user = profile_utils.seedNDBUser(host_for=[self.program])
    profile_utils.loginNDB(user)

    url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name()
    response = self.get(url)
    self.assertResponseOK(response)
    self.assertGSoCTemplatesUsed(response)
    self.assertTemplateUsed(response, 'modules/gsoc/document/base.html')
    self.assertTemplateUsed(response, 'modules/gsoc/_form.html')

    # test POST
    override = {
        'prefix': 'gsoc_program', 'scope': self.gsoc, 'link_id': 'doc',
        'key_name': DocumentKeyNameProvider(),
        'modified_by': user.key.to_old_key(),
        'home_for': None,
        'author': user.key.to_old_key(), 'is_featured': None,
        'write_access': 'admin', 'read_access': 'public',
        'dashboard_visibility': [],
    }
    properties = seeder_logic.seed_properties(Document, properties=override)
    response = self.post(url, properties)
    self.assertResponseRedirect(response, url)

    key_name = properties['key_name']
    document = Document.get_by_key_name(key_name)
    self.assertEqual(document.key().name(), key_name)
Example #2
0
    def testAnOrgAdminCanUpdateOrgProfile(self):
        """Tests if an org admin can update the profile for its organization.
    """
        self.timeline.orgSignup()
        from soc.modules.gsoc.models.organization import GSoCOrganization
        self.data.createOrgAdmin(self.org)

        url = '/gsoc/profile/organization/' + self.org.key().name()
        postdata = seeder_logic.seed_properties(GSoCOrganization)
        updates = {
            'email': '*****@*****.**',
            'irc_channel': 'irc://i.f.net/gsoc',
            'pub_mailing_list': 'https://l.s.net',
            'tags': 'foo, bar',
            'gsoc_org_page_home': 'http://www.xyz.com',
            'contact_postalcode': '247667',
            'contact_country': 'India',
            'dev_mailing_list': 'http://d.com',
            'home': postdata['home'].key(),
            'max_score': 5,
        }
        postdata.update(updates)
        self.assertNotEqual(updates['email'], self.org.email)
        response = self.post(url, postdata)
        self.assertResponseRedirect(response)

        expected_redirect_url = 'http://testserver' + url + '?validated'
        actual_redirect_url = response.get('location', None)
        self.assertEqual(expected_redirect_url, actual_redirect_url)

        updated_org = db.get(self.org.key())
        self.assertEqual(updates['email'], updated_org.email)
Example #3
0
    def testCreateDocumentWithDashboardVisibility(self):
        url = "/gci/document/edit/gci_program/%s/doc" % self.gci.key().name()
        response = self.get(url)
        self.assertGCITemplatesUsed(response)
        self.assertTemplateUsed(response, "modules/gci/document/base.html")
        self.assertTemplateUsed(response, "modules/gci/_form.html")

        # test POST
        key_name = string_provider.DocumentKeyNameProvider()
        override = {
            "prefix": "gci_program",
            "scope": self.gci,
            "link_id": "doc",
            "key_name": key_name,
            "modified_by": self.user.key.to_old_key(),
            "home_for": None,
            "author": self.user.key.to_old_key(),
            "is_featured": None,
            "write_access": "admin",
            "read_access": "public",
            "dashboard_visibility": ["student", "mentor"],
        }
        properties = seeder_logic.seed_properties(Document, properties=override)
        response = self.post(url, properties)
        self.assertResponseRedirect(response, url)

        key_name = properties["key_name"]
        document = Document.get_by_key_name(key_name)

        self.assertEqual(document.scope.key(), self.gci.key())
        self.assertEqual(document.link_id, "doc")
        self.assertEqual(document.key().name(), key_name)
        self.assertIn("student", document.dashboard_visibility)
        self.assertIn("mentor", document.dashboard_visibility)
Example #4
0
    def testCreateDocument(self):
        self.data.createHost()
        url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name(
        )
        response = self.get(url)
        self.assertGSoCTemplatesUsed(response)
        self.assertTemplateUsed(response, 'v2/modules/gsoc/document/base.html')
        self.assertTemplateUsed(response, 'v2/modules/gsoc/_form.html')

        # test POST
        override = {
            'prefix': 'gsoc_program',
            'scope': self.gsoc,
            'link_id': 'doc',
            'key_name': DocumentKeyNameProvider(),
            'modified_by': self.data.user,
            'home_for': None,
            'author': self.data.user,
            'is_featured': None,
            'write_access': 'admin',
            'read_access': 'public',
        }
        properties = seeder_logic.seed_properties(Document,
                                                  properties=override)
        response = self.post(url, properties)
        self.assertResponseRedirect(response, url)

        key_name = properties['key_name']
        document = Document.get_by_key_name(key_name)
        self.assertPropertiesEqual(properties, document)
Example #5
0
    def testCreateDocumentNoDashboardVisibility(self):
        user = profile_utils.seedNDBUser(host_for=[self.program])
        profile_utils.loginNDB(user)

        url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name(
        )
        response = self.get(url)
        self.assertResponseOK(response)
        self.assertGSoCTemplatesUsed(response)
        self.assertTemplateUsed(response, 'modules/gsoc/document/base.html')
        self.assertTemplateUsed(response, 'modules/gsoc/_form.html')

        # test POST
        override = {
            'prefix': 'gsoc_program',
            'scope': self.gsoc,
            'link_id': 'doc',
            'key_name': DocumentKeyNameProvider(),
            'modified_by': user.key.to_old_key(),
            'home_for': None,
            'author': user.key.to_old_key(),
            'is_featured': None,
            'write_access': 'admin',
            'read_access': 'public',
            'dashboard_visibility': [],
        }
        properties = seeder_logic.seed_properties(Document,
                                                  properties=override)
        response = self.post(url, properties)
        self.assertResponseRedirect(response, url)

        key_name = properties['key_name']
        document = Document.get_by_key_name(key_name)
        self.assertEqual(document.key().name(), key_name)
Example #6
0
  def testAnOrgAdminCanUpdateOrgProfile(self):
    """Tests if an org admin can update the profile for its organization.
    """
    self.timeline.orgSignup()
    from soc.modules.gsoc.models.organization import GSoCOrganization
    self.data.createOrgAdmin(self.org)

    url = '/gsoc/profile/organization/' + self.org.key().name()
    postdata = seeder_logic.seed_properties(GSoCOrganization)
    updates = {
        'email': '*****@*****.**', 'irc_channel': 'irc://i.f.net/gsoc',
        'pub_mailing_list': 'https://l.s.net',
        'tags': 'foo, bar', 'gsoc_org_page_home': 'http://www.xyz.com',
        'contact_postalcode': '247667', 'contact_country': 'India',
        'dev_mailing_list': 'http://d.com', 'home': postdata['home'].key(),
        'max_score': 5,
    }
    postdata.update(updates)
    self.assertNotEqual(updates['email'], self.org.email)
    response = self.post(url, postdata)
    self.assertResponseRedirect(response)
    
    expected_redirect_url = 'http://testserver' + url + '?validated'
    actual_redirect_url = response.get('location', None)
    self.assertEqual(expected_redirect_url, actual_redirect_url)
     
    updated_org = db.get(self.org.key())
    self.assertEqual(updates['email'], updated_org.email)
Example #7
0
  def setUp(self):
    from soc.modules.gci.models.profile import GCIProfile
    from soc.modules.gci.models.profile import GCIStudentInfo

    self.init()

    program_suffix = self.gci.key().name()

    self.url = '/gci/profile/%(program_suffix)s' % {
        'program_suffix': program_suffix
        }
    
    self.validated_url = self.url + '?validated'

    self.student_url = '/gci/profile/%(role)s/%(program_suffix)s' % {
        'role': 'student',
        'program_suffix': program_suffix                                                            
        }

    self.birth_date = str(date.today() - timedelta(365*15))

    props = {}
    # we do not want to seed the data in the datastore, we just
    # want to get the properties generated for seeding. The post
    # test will actually do the entity creation, so we reuse the
    # seed_properties method from the seeder to get the most common
    # values for Profile and StudentInfo
    props.update(seeder_logic.seed_properties(GCIProfile))
    props.update(seeder_logic.seed_properties(GCIStudentInfo))

    props.update({
        'student_info': None,
        'status': 'active',
        'is_org_admin': False,
        'is_mentor': False,
        'org_admin_for': [],
        'mentor_for': [],
        'scope': self.gci,
        'birth_date': self.birth_date,
        'res_country': 'Netherlands',
        'ship_country': 'Netherlands',
    })

    self.default_props = props

    # we have other tests that verify the age_check system
    self.client.cookies['age_check'] = self.birth_date
Example #8
0
    def setUp(self):
        from soc.modules.gci.models.profile import GCIProfile
        from soc.modules.gci.models.profile import GCIStudentInfo

        self.init()

        program_suffix = self.gci.key().name()

        self.url = '/gci/profile/%(program_suffix)s' % {
            'program_suffix': program_suffix
        }

        self.validated_url = self.url + '?validated'

        self.student_url = '/gci/profile/%(role)s/%(program_suffix)s' % {
            'role': 'student',
            'program_suffix': program_suffix
        }

        self.birth_date = str(date.today() - timedelta(365 * 15))

        props = {}
        # we do not want to seed the data in the datastore, we just
        # want to get the properties generated for seeding. The post
        # test will actually do the entity creation, so we reuse the
        # seed_properties method from the seeder to get the most common
        # values for Profile and StudentInfo
        props.update(seeder_logic.seed_properties(GCIProfile))
        props.update(seeder_logic.seed_properties(GCIStudentInfo))

        props.update({
            'student_info': None,
            'status': 'active',
            'is_org_admin': False,
            'is_mentor': False,
            'org_admin_for': [],
            'mentor_for': [],
            'scope': self.gci,
            'birth_date': self.birth_date,
            'res_country': 'Netherlands',
            'ship_country': 'Netherlands',
        })

        self.default_props = props

        # we have other tests that verify the age_check system
        self.client.cookies['age_check'] = self.birth_date
Example #9
0
  def testCreateDocument(self):
    self.data.createHost()
    url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name()
    response = self.get(url)
    self.assertGSoCTemplatesUsed(response)
    self.assertTemplateUsed(response, 'v2/modules/gsoc/document/base.html')
    self.assertTemplateUsed(response, 'v2/modules/gsoc/_form.html')

    # test POST
    override = {
        'prefix': 'gsoc_program', 'scope': self.gsoc, 'link_id': 'doc',
        'key_name': DocumentKeyNameProvider(), 'modified_by': self.data.user,
        'home_for': None, 'author': self.data.user, 'is_featured': None,
        'write_access': 'admin', 'read_access': 'public',
    }
    properties = seeder_logic.seed_properties(Document, properties=override)
    response = self.post(url, properties)
    self.assertResponseRedirect(response, url)

    key_name = properties['key_name']
    document = Document.get_by_key_name(key_name)
    self.assertPropertiesEqual(properties, document)
Example #10
0
    def seedProperties(self, model, properties):
        """Returns seeded properties for the specified model.
    """
        from soc.modules.seeder.logic.seeder import logic as seeder_logic

        return seeder_logic.seed_properties(model, properties, recurse=False)
Example #11
0
 def seedProperties(self, model, properties):
     """Returns seeded properties for the specified model.
 """
     from soc.modules.seeder.logic.seeder import logic as seeder_logic
     return seeder_logic.seed_properties(model, properties, recurse=False)
Example #12
0
  def testCreateProfile(self):
    from soc.modules.gsoc.models.profile import GSoCProfile
    from soc.modules.gsoc.models.profile import GSoCStudentInfo

    self.timeline.studentSignup()
    self.data.createUser()

    suffix = "%(program)s" % {
        'program': self.gsoc.key().name(),
        }

    role_suffix = "%(role)s/%(suffix)s" % {
        'role': 'student',
        'suffix': suffix,
        }

    url = '/gsoc/profile/' + suffix
    role_url = '/gsoc/profile/' + role_suffix


    # we do not want to seed the data in the datastore, we just
    # want to get the properties generated for seeding. The post
    # test will actually do the entity creation, so we reuse the
    # seed_properties method from the seeder to get the most common
    # values for Profile and StudentInfo
    postdata = seeder_logic.seed_properties(GSoCProfile)
    props = seeder_logic.seed_properties(GSoCStudentInfo, properties={
        'tax_form': None,
        'enrollment_form': None,
    })
    props.pop('tax_form')
    props.pop('enrollment_form')
    postdata.update(props)
    postdata.update({
        'link_id': self.data.user.link_id,
        'student_info': None,
        'user': self.data.user, 'parent': self.data.user,
        'scope': self.gsoc, 'status': 'active',
        'email': self.data.user.account.email(),
        'mentor_for': [], 'org_admin_for': [],
        'is_org_admin': False, 'is_mentor': False,
    })

    response = self.post(role_url, postdata)

    self.assertResponseRedirect(response, url + '?validated')

    # hacky
    profile = GSoCProfile.all().get()
    profile.delete()

    postdata.update({
        'email': 'somerandominvalid@emailid',
        })

    response = self.post(role_url, postdata)

    # yes! this is the protocol for form posts. We get an OK response
    # with the response containing the form's GET request page whenever
    # the form has an error and could not be posted. This is the architecture
    # chosen in order to save the form error state's while rendering the
    # error fields.
    self.assertResponseOK(response)

    error_dict = response.context['error']
    self.assertTrue('email' in error_dict)