示例#1
0
 def test_publish_xlsform(self):
     view = XFormViewSet.as_view({
         'post': 'create'
     })
     data = {
         'owner': 'http://testserver/api/v1/users/bob',
         'public': False,
         'public_data': False,
         'description': u'transportation_2011_07_25',
         'downloadable': True,
         'allows_sms': False,
         'encrypted': False,
         'sms_id_string': u'transportation_2011_07_25',
         'id_string': u'transportation_2011_07_25',
         'title': u'transportation_2011_07_25',
         'bamboo_dataset': u''
     }
     path = os.path.join(
         settings.PROJECT_ROOT, "apps", "main", "tests", "fixtures",
         "transportation", "transportation.xls")
     with open(path) as xls_file:
         post_data = {'xls_file': xls_file}
         request = self.factory.post('/', data=post_data, **self.extra)
         response = view(request)
         self.assertEqual(response.status_code, 201)
         xform = self.user.xforms.all()[0]
         data.update({
             'url':
             'http://testserver/api/v1/forms/%s' % xform.pk
         })
         self.assertDictContainsSubset(data, response.data)
         self.assertTrue(OwnerRole.user_has_role(self.user, xform))
         self.assertEquals("owner", response.data['users'][0]['role'])
示例#2
0
 def test_publish_xlsform(self):
     view = XFormViewSet.as_view({'post': 'create'})
     data = {
         'owner': 'http://testserver/api/v1/users/bob',
         'public': False,
         'public_data': False,
         'description': u'transportation_2011_07_25',
         'downloadable': True,
         'allows_sms': False,
         'encrypted': False,
         'sms_id_string': u'transportation_2011_07_25',
         'id_string': u'transportation_2011_07_25',
         'title': u'transportation_2011_07_25',
         'bamboo_dataset': u''
     }
     path = os.path.join(settings.PROJECT_ROOT, "apps", "main", "tests",
                         "fixtures", "transportation", "transportation.xls")
     with open(path) as xls_file:
         post_data = {'xls_file': xls_file}
         request = self.factory.post('/', data=post_data, **self.extra)
         response = view(request)
         self.assertEqual(response.status_code, 201)
         xform = self.user.xforms.all()[0]
         data.update(
             {'url': 'http://testserver/api/v1/forms/%s' % xform.pk})
         self.assertDictContainsSubset(data, response.data)
         self.assertTrue(OwnerRole.user_has_role(self.user, xform))
         self.assertEquals("owner", response.data['users'][0]['role'])
 def test_publish_xls_form_to_organization_project(self):
     self._org_create()
     project_data = {
         'owner':  self.company_data['user']
     }
     self._project_create(project_data)
     self._publish_xls_form_to_project()
     self.assertTrue(OwnerRole.user_has_role(self.user, self.xform))
示例#4
0
 def test_publish_select_external_xlsform(self):
     view = XFormViewSet.as_view({'post': 'create'})
     path = os.path.join(settings.PROJECT_ROOT, "apps", "api", "tests",
                         "fixtures", "select_one_external.xlsx")
     with open(path) as xls_file:
         meta_count = MetaData.objects.count()
         post_data = {'xls_file': xls_file}
         request = self.factory.post('/', data=post_data, **self.extra)
         response = view(request)
         self.assertEqual(response.status_code, 201)
         self.assertEqual(meta_count + 1, MetaData.objects.count())
         xform = self.user.xforms.all()[0]
         metadata = xform.metadata_set.all()[0]
         self.assertEqual('itemsets.csv', metadata.data_value)
         self.assertTrue(OwnerRole.user_has_role(self.user, xform))
         self.assertTrue(OwnerRole.user_has_role(self.user, metadata))
         self.assertEquals("owner", response.data['users'][0]['role'])
示例#5
0
 def test_publish_select_external_xlsform(self):
     view = XFormViewSet.as_view({
         'post': 'create'
     })
     path = os.path.join(
         settings.PROJECT_ROOT, "apps", "api", "tests", "fixtures",
         "select_one_external.xlsx")
     with open(path) as xls_file:
         meta_count = MetaData.objects.count()
         post_data = {'xls_file': xls_file}
         request = self.factory.post('/', data=post_data, **self.extra)
         response = view(request)
         self.assertEqual(response.status_code, 201)
         self.assertEqual(meta_count + 1, MetaData.objects.count())
         xform = self.user.xforms.all()[0]
         metadata = xform.metadata_set.all()[0]
         self.assertEqual('itemsets.csv', metadata.data_value)
         self.assertTrue(OwnerRole.user_has_role(self.user, xform))
         self.assertTrue(OwnerRole.user_has_role(self.user, metadata))
         self.assertEquals("owner", response.data['users'][0]['role'])
示例#6
0
    def test_reassign_role_owner_to_editor(self):
        self._publish_transportation_form()
        alice = self._create_user('alice', 'alice')

        self.assertFalse(OwnerRole.user_has_role(alice, self.xform))

        OwnerRole.add(alice, self.xform)

        self.assertTrue(OwnerRole.user_has_role(alice, self.xform))
        self.assertTrue(
            OwnerRole.has_role(perms_for(alice, self.xform), self.xform))

        EditorRole.add(alice, self.xform)

        self.assertFalse(OwnerRole.user_has_role(alice, self.xform))
        self.assertTrue(EditorRole.user_has_role(alice, self.xform))
        self.assertFalse(
            OwnerRole.has_role(perms_for(alice, self.xform), self.xform))
        self.assertTrue(
            EditorRole.has_role(perms_for(alice, self.xform), self.xform))
示例#7
0
    def test_reassign_role_owner_to_editor(self):
        self._publish_transportation_form()
        alice = self._create_user('alice', 'alice')

        self.assertFalse(OwnerRole.user_has_role(alice, self.xform))

        OwnerRole.add(alice, self.xform)

        self.assertTrue(OwnerRole.user_has_role(alice, self.xform))
        self.assertTrue(OwnerRole.has_role(
            perms_for(alice, self.xform), self.xform))

        EditorRole.add(alice, self.xform)

        self.assertFalse(OwnerRole.user_has_role(alice, self.xform))
        self.assertTrue(EditorRole.user_has_role(alice, self.xform))
        self.assertFalse(OwnerRole.has_role(
            perms_for(alice, self.xform), self.xform))
        self.assertTrue(EditorRole.has_role(
            perms_for(alice, self.xform), self.xform))
 def test_project_users_get_readonly_role_on_add_form(self):
     self._project_create()
     alice_data = {'username': '******', 'email': '*****@*****.**'}
     alice_profile = self._create_user_profile(alice_data)
     ReadOnlyRole.add(alice_profile.user, self.project)
     self.assertTrue(ReadOnlyRole.user_has_role(alice_profile.user,
                                                self.project))
     self._publish_xls_form_to_project()
     self.assertTrue(ReadOnlyRole.user_has_role(alice_profile.user,
                                                self.xform))
     self.assertFalse(OwnerRole.user_has_role(alice_profile.user,
                                              self.xform))
    def test_owner_cannot_remove_self_if_no_other_owner(self):
        self._project_create()

        view = ProjectViewSet.as_view({
            'put': 'share'
        })

        data = {'username': '******', 'remove': True, 'role': 'owner'}

        request = self.factory.put('/', data=data, **self.extra)
        response = view(request, pk=self.project.pk)

        self.assertEqual(response.status_code, 400)
        error = {'remove': [u"Project requires at least one owner"]}
        self.assertEquals(response.data, error)

        self.assertTrue(OwnerRole.user_has_role(self.user,
                                                self.project))

        alice_data = {'username': '******', 'email': '*****@*****.**'}
        profile = self._create_user_profile(alice_data)

        OwnerRole.add(profile.user, self.project)

        view = ProjectViewSet.as_view({
            'put': 'share'
        })

        data = {'username': '******', 'remove': True, 'role': 'owner'}

        request = self.factory.put('/', data=data, **self.extra)
        response = view(request, pk=self.project.pk)

        self.assertEqual(response.status_code, 204)

        self.assertFalse(OwnerRole.user_has_role(self.user,
                                                 self.project))