Ejemplo n.º 1
0
class EcoTest(TestCase):
    def setUp(self):
        self.factory = RequestFactory()

        self.instance, system_user = tm.make_instance_and_system_user()

        self.user = User(username="******")
        self.user.save_with_user(system_user)
        self.user.roles.add(tm.make_commander_role(self.instance))

        self.species = Species(symbol='CEDR',
                               genus='cedrus',
                               species='atlantica',
                               max_dbh=2000,
                               max_height=100)
        self.species.save()

        p1 = Point(-8515941.0, 4953519.0)
        self.plot = Plot(geom=p1,
                         instance=self.instance,
                         created_by=self.user)

        self.plot.save_with_user(self.user)

        self.tree = Tree(plot=self.plot,
                         instance=self.instance,
                         readonly=False,
                         species=self.species,
                         diameter=1630,
                         created_by=self.user)

        self.tree.save_with_user(self.user)

    def test_group_eco(self):
        pass  # TODO: Once filtering has been enabled

    def test_eco_benefit_sanity(self):
        req = self.factory.get('/%s/eco/benefit/tree/%s/' %
                              (self.instance.pk, self.tree.pk))

        response = tree_benefits(req,
                                 instance_id=self.instance.pk,
                                 tree_id=self.tree.pk,
                                 region='NoEastXXX')

        self.assertEqual(response.status_code, 200)
        rslt = json.loads(response.content)

        bens = rslt['benefits']

        def assertBValue(benefit, unit, value):
            self.assertEqual(bens[benefit]['unit'], unit)
            self.assertEqual(int(float(bens[benefit]['value'])), value)

        assertBValue('energy', 'kwh', 1896)
        assertBValue('airquality', 'lbs/year', 6)
        assertBValue('stormwater', 'gal', 3185)
        assertBValue('co2', 'lbs/year', 563)
Ejemplo n.º 2
0
class UserExportsTestCase(OTMTestCase):
    def assertUserJSON(self, data, expectations):
        for key, expectation in expectations.items():
            value = data[key]
            self.assertEqual(
                expectation, value,
                "failure for key '%s': expected '%s', found '%s'" %
                (key, expectation, value))

    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(username='******',
                          password='******',
                          email='*****@*****.**',
                          organization='karhide',
                          first_name='therem',
                          last_name='⅀straven')

        self.user1.save_with_user(self.commander)

        self.user2 = User(username='******',
                          password='******',
                          email='*****@*****.**',
                          first_name='genly',
                          last_name='ai',
                          allow_email_contact=True)
        self.user2.save_with_user(self.commander)

        self.user3 = User(username='******',
                          password='******',
                          email='*****@*****.**')
        self.user3.save_with_user(self.commander)

        role = make_commander_role(self.instance)
        iuser1 = InstanceUser(instance=self.instance,
                              user=self.user1,
                              role=role)
        iuser1.save_with_user(self.user1)
        iuser2 = InstanceUser(instance=self.instance,
                              user=self.user2,
                              role=role)
        iuser2.save_with_user(self.user2)

        self.plot = Plot(geom=self.instance.center,
                         readonly=False,
                         instance=self.instance,
                         width=4)
        self.plot.save_with_user(self.user1)

        self.tree = Tree(instance=self.instance, plot=self.plot, diameter=3)
        self.tree.save_with_user(self.user2)
Ejemplo n.º 3
0
class UserExportsTestCase(TestCase):
    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(username='******',
                          password='******',
                          email='*****@*****.**',
                          organization='org111',
                          first_name='therem',
                          last_name='⅀straven')

        self.user1.save_with_user(self.commander)

        self.user2 = User(username='******',
                          password='******',
                          email='*****@*****.**',
                          first_name='genly',
                          last_name='ai',
                          allow_email_contact=True)
        self.user2.save_with_user(self.commander)

        self.user3 = User(username='******',
                          password='******',
                          email='*****@*****.**')
        self.user3.save_with_user(self.commander)

        role = make_commander_role(self.instance)
        iuser1 = InstanceUser(instance=self.instance,
                              user=self.user1,
                              role=role)
        iuser1.save_with_user(self.user1)
        iuser2 = InstanceUser(instance=self.instance,
                              user=self.user2,
                              role=role)
        iuser2.save_with_user(self.user2)

        pt = Point(0, 0)

        self.plot = Plot(geom=pt,
                         readonly=False,
                         instance=self.instance,
                         width=4)
        self.plot.save_with_user(self.user1)

        self.tree = Tree(instance=self.instance, plot=self.plot, diameter=3)
        self.tree.save_with_user(self.user2)
Ejemplo n.º 4
0
class UserExportsTestCase(OTMTestCase):
    def assertUserJSON(self, data, expectations):
        for key, expectation in expectations.items():
            value = data[key]
            self.assertEqual(
                expectation, value, "failure for key '%s': expected '%s', found '%s'" % (key, expectation, value)
            )

    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(
            username="******",
            password="******",
            email="*****@*****.**",
            organization="karhide",
            first_name="therem",
            last_name="⅀straven",
        )

        self.user1.save_with_user(self.commander)

        self.user2 = User(
            username="******",
            password="******",
            email="*****@*****.**",
            first_name="genly",
            last_name="ai",
            allow_email_contact=True,
        )
        self.user2.save_with_user(self.commander)

        self.user3 = User(username="******", password="******", email="*****@*****.**")
        self.user3.save_with_user(self.commander)

        role = make_commander_role(self.instance)
        iuser1 = InstanceUser(instance=self.instance, user=self.user1, role=role)
        iuser1.save_with_user(self.user1)
        iuser2 = InstanceUser(instance=self.instance, user=self.user2, role=role)
        iuser2.save_with_user(self.user2)

        self.plot = Plot(geom=self.instance.center, readonly=False, instance=self.instance, width=4)
        self.plot.save_with_user(self.user1)

        self.tree = Tree(instance=self.instance, plot=self.plot, diameter=3)
        self.tree.save_with_user(self.user2)
Ejemplo n.º 5
0
class UserExportsTestCase(OTMTestCase):

    def assertUserJSON(self, data, expectations):
        for key, value in expectations.items():
            self.assertEqual(data[key], value)

    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(username='******', password='******',
                          email='*****@*****.**',
                          organization='karhide',
                          first_name='therem', last_name='⅀straven')

        self.user1.save_with_user(self.commander)

        self.user2 = User(username='******', password='******',
                          email='*****@*****.**',
                          first_name='genly', last_name='ai',
                          allow_email_contact=True)
        self.user2.save_with_user(self.commander)

        self.user3 = User(username='******', password='******',
                          email='*****@*****.**')
        self.user3.save_with_user(self.commander)

        role = make_commander_role(self.instance)
        iuser1 = InstanceUser(instance=self.instance, user=self.user1,
                              role=role)
        iuser1.save_with_user(self.user1)
        iuser2 = InstanceUser(instance=self.instance, user=self.user2,
                              role=role)
        iuser2.save_with_user(self.user2)

        pt = Point(0, 0)

        self.plot = Plot(geom=pt, readonly=False, instance=self.instance,
                         width=4)
        self.plot.save_with_user(self.user1)

        self.tree = Tree(instance=self.instance, plot=self.plot, diameter=3)
        self.tree.save_with_user(self.user2)
Ejemplo n.º 6
0
class UserExportsTestCase(TestCase):
    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(username='******', password='******',
                          email='*****@*****.**',
                          organization='org111',
                          firstname='therem', lastname='⅀straven')

        self.user1.save_with_user(self.commander)

        self.user2 = User(username='******', password='******',
                          email='*****@*****.**',
                          firstname='genly', lastname='ai',
                          allow_email_contact=True)
        self.user2.save_with_user(self.commander)

        self.user3 = User(username='******', password='******',
                          email='*****@*****.**')
        self.user3.save_with_user(self.commander)

        role = make_commander_role(self.instance)
        iuser1 = InstanceUser(instance=self.instance, user=self.user1,
                              role=role)
        iuser1.save_with_user(self.user1)
        iuser2 = InstanceUser(instance=self.instance, user=self.user2,
                              role=role)
        iuser2.save_with_user(self.user2)

        pt = Point(0, 0)

        self.plot = Plot(geom=pt, readonly=False, instance=self.instance,
                         width=4)
        self.plot.save_with_user(self.user1)

        self.tree = Tree(instance=self.instance, plot=self.plot, diameter=3)
        self.tree.save_with_user(self.user2)
Ejemplo n.º 7
0
class UserRolesTest(OTMTestCase):
    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(username='******',
                          password='******',
                          email='*****@*****.**',
                          organization='org111',
                          first_name='therem',
                          last_name='⅀straven')

        self.user1.save_with_user(self.commander)

        self.user2 = User(username='******',
                          password='******',
                          email='*****@*****.**',
                          first_name='genly',
                          last_name='ai')
        self.user2.save_with_user(self.commander)

        self.user3 = User(username='******',
                          password='******',
                          email='*****@*****.**')
        self.user3.save_with_user(self.commander)

        self.user4 = User(username='******',
                          password='******',
                          email='*****@*****.**')
        self.user4.save_with_user(self.commander)

        self.factory = RequestFactory()

    def _add_user_to_instance_view(self, email):
        body = {'email': email}
        return create_user_role(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

    def test_add_user_to_instance(self):
        mail.outbox = []

        self.assertIsNone(self.user4.get_instance_user(self.instance))

        self._add_user_to_instance_view(self.user4.email)

        self.assertIsNotNone(self.user4.get_instance_user(self.instance))

        msg = mail.outbox[0]

        # Just make sure we have some chars and the
        # correct receiver
        self.assertGreater(len(msg.subject), 10)
        self.assertGreater(len(msg.body), 10)

        self.assertEquals(tuple(msg.to), (self.user4.email, ))

    def test_email_not_found_creates_invite(self):
        self.assertEqual(InstanceInvitation.objects.count(), 0)

        mail.outbox = []

        email = '*****@*****.**'
        body = {'email': email}
        create_user_role(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

        self.assertEqual(InstanceInvitation.objects.count(), 1)

        ii = InstanceInvitation.objects.all()[0]

        # Should have email and default role
        self.assertEqual(ii.email, email)
        self.assertEqual(ii.instance, self.instance)
        self.assertEqual(ii.role, self.instance.default_role)

        # Should have sent an email to the user
        self.assertEqual(len(mail.outbox), 1)

        msg = mail.outbox[0]

        # Just make sure we have some chars and the
        # correct receiver
        self.assertGreater(len(msg.subject), 10)
        self.assertGreater(len(msg.body), 10)

        self.assertEquals(tuple(msg.to), (email, ))

    def test_invalid_email(self):
        body = {'email': 'asdfasdf@'}
        self.assertRaises(
            ValidationError, create_user_role,
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

    def test_email_already_bound(self):
        iuser = InstanceUser(user=self.user1,
                             instance=self.instance,
                             role=self.instance.default_role)
        iuser.save_with_user(self.commander)

        body = {'email': self.user1.email}
        self.assertRaises(
            ValidationError, create_user_role,
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

    def test_email_already_bound_to_invite(self):
        email = "*****@*****.**"
        invite = InstanceInvitation(email=email,
                                    instance=self.instance,
                                    created_by=self.user4,
                                    role=self.instance.default_role)
        invite.save()

        body = {'email': email}
        self.assertRaises(
            ValidationError, create_user_role,
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

    def test_invites_updated(self):
        email = "*****@*****.**"
        invite = InstanceInvitation(email=email,
                                    instance=self.instance,
                                    created_by=self.user4,
                                    role=self.instance.default_role)
        invite.save()

        new_role = Role(name='Ambassador',
                        instance=self.instance,
                        rep_thresh=0)
        new_role.save()

        body = {'invites': {invite.pk: {'role': new_role.pk}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

        # requery invite
        invite = InstanceInvitation.objects.get(pk=invite.pk)
        self.assertEqual(invite.role, new_role)

    def test_user_roles_updated(self):
        iuser = InstanceUser(user=self.user2,
                             instance=self.instance,
                             role=self.instance.default_role)
        iuser.save_with_user(self.commander)

        new_role = Role(name='Ambassador',
                        instance=self.instance,
                        rep_thresh=0)
        new_role.save()

        body = {'users': {iuser.pk: {'role': new_role.pk, 'admin': False}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.role, new_role)
        self.assertEqual(iuser.admin, False)

        body = {'users': {iuser.pk: {'role': new_role.pk, 'admin': True}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.role, new_role)
        self.assertEqual(iuser.admin, True)

    def test_can_change_admin_without_feature(self):
        iuser = InstanceUser(user=self.user2,
                             instance=self.instance,
                             role=self.instance.default_role)
        iuser.save_with_user(self.commander)

        body = {'users': {iuser.pk: {'admin': False}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.admin, False)

        body = {'users': {iuser.pk: {'admin': True}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander), self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.admin, True)
Ejemplo n.º 8
0
class UserRolesTest(OTMTestCase):
    def setUp(self):
        self.instance = make_instance()
        self.commander = make_commander_user(self.instance, "comm")

        # Note unicode '⅀' is on purpose
        self.user1 = User(username='******', password='******',
                          email='*****@*****.**',
                          organization='org111',
                          first_name='therem', last_name='⅀straven')

        self.user1.save_with_user(self.commander)

        self.user2 = User(username='******', password='******',
                          email='*****@*****.**',
                          first_name='genly', last_name='ai')
        self.user2.save_with_user(self.commander)

        self.user3 = User(username='******', password='******',
                          email='*****@*****.**')
        self.user3.save_with_user(self.commander)

        self.user4 = User(username='******', password='******',
                          email='*****@*****.**')
        self.user4.save_with_user(self.commander)

        self.factory = RequestFactory()

    def _add_user_to_instance_view(self, email):
            body = {'email': email}
            return create_user_role(
                make_request(method='POST',
                             body=json.dumps(body),
                             user=self.commander),
                self.instance)

    def test_add_user_to_instance(self):
        mail.outbox = []

        self.assertIsNone(self.user4.get_instance_user(self.instance))

        self._add_user_to_instance_view(self.user4.email)

        self.assertIsNotNone(self.user4.get_instance_user(self.instance))

        msg = mail.outbox[0]

        # Just make sure we have some chars and the
        # correct receiver
        self.assertGreater(len(msg.subject), 10)
        self.assertGreater(len(msg.body), 10)

        self.assertEquals(tuple(msg.to), (self.user4.email,))

    def test_email_not_found_creates_invite(self):
        self.assertEqual(InstanceInvitation.objects.count(), 0)

        mail.outbox = []

        email = '*****@*****.**'
        body = {'email': email}
        create_user_role(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander),
            self.instance)

        self.assertEqual(InstanceInvitation.objects.count(), 1)

        ii = InstanceInvitation.objects.all()[0]

        # Should have email and default role
        self.assertEqual(ii.email, email)
        self.assertEqual(ii.instance, self.instance)
        self.assertEqual(ii.role, self.instance.default_role)

        # Should have sent an email to the user
        self.assertEqual(len(mail.outbox), 1)

        msg = mail.outbox[0]

        # Just make sure we have some chars and the
        # correct receiver
        self.assertGreater(len(msg.subject), 10)
        self.assertGreater(len(msg.body), 10)

        self.assertEquals(tuple(msg.to), (email,))

    def test_invalid_email(self):
        body = {'email': 'asdfasdf@'}
        self.assertRaises(ValidationError,
                          create_user_role,
                          make_request(method='POST',
                                       body=json.dumps(body),
                                       user=self.commander),
                          self.instance)

    def test_email_already_bound(self):
        iuser = InstanceUser(user=self.user1, instance=self.instance,
                             role=self.instance.default_role)
        iuser.save_with_user(self.commander)

        body = {'email': self.user1.email}
        self.assertRaises(ValidationError,
                          create_user_role,
                          make_request(method='POST',
                                       body=json.dumps(body),
                                       user=self.commander),
                          self.instance)

    def test_email_already_bound_to_invite(self):
        email = "*****@*****.**"
        invite = InstanceInvitation(email=email,
                                    instance=self.instance,
                                    created_by=self.user4,
                                    role=self.instance.default_role)
        invite.save()

        body = {'email': email}
        self.assertRaises(ValidationError,
                          create_user_role,
                          make_request(method='POST',
                                       body=json.dumps(body),
                                       user=self.commander),
                          self.instance)

    def test_invites_updated(self):
        email = "*****@*****.**"
        invite = InstanceInvitation(email=email,
                                    instance=self.instance,
                                    created_by=self.user4,
                                    role=self.instance.default_role)
        invite.save()

        new_role = Role(name='Ambassador', instance=self.instance,
                        rep_thresh=0)
        new_role.save()

        body = {'invites':
                {invite.pk:
                 {'role': new_role.pk}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander),
            self.instance)

        # requery invite
        invite = InstanceInvitation.objects.get(pk=invite.pk)
        self.assertEqual(invite.role, new_role)

    def test_user_roles_updated(self):
        iuser = InstanceUser(user=self.user2, instance=self.instance,
                             role=self.instance.default_role)
        iuser.save_with_user(self.commander)

        new_role = Role(name='Ambassador', instance=self.instance,
                        rep_thresh=0)
        new_role.save()

        body = {'users':
                {iuser.pk:
                 {'role': new_role.pk, 'admin': False}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander),
            self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.role, new_role)
        self.assertEqual(iuser.admin, False)

        body = {'users':
                {iuser.pk: {'role': new_role.pk, 'admin': True}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander),
            self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.role, new_role)
        self.assertEqual(iuser.admin, True)

    def test_can_change_admin_without_feature(self):
        iuser = InstanceUser(user=self.user2, instance=self.instance,
                             role=self.instance.default_role)
        iuser.save_with_user(self.commander)

        body = {'users':
                {iuser.pk: {'admin': False}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander),
            self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.admin, False)

        body = {'users':
                {iuser.pk: {'admin': True}}}

        update_user_roles(
            make_request(method='POST',
                         body=json.dumps(body),
                         user=self.commander),
            self.instance)

        #requery iuser
        iuser = InstanceUser.objects.get(pk=iuser.pk)
        self.assertEqual(iuser.admin, True)