Exemplo n.º 1
0
class AdminUserTest(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.user.is_superuser = True
        self.user.save()

    def test_can_create_device(self):
        '''Superuser can create a device.'''
        assert_true(self.user.has_perm('devices.add_device'))

    def test_can_delete_device(self):
        assert_true(self.user.has_perm('devices.delete_device'))

    def test_can_change_device_status(self):
        assert_true(self.user.has_perm('user.can_change_device_status'))
Exemplo n.º 2
0
class AdminUserTest(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.user.is_superuser = True
        self.user.save()

    def test_can_create_device(self):
        '''Superuser can create a device.'''
        assert_true(self.user.has_perm('devices.add_device'))

    def test_can_delete_device(self):
        assert_true(self.user.has_perm('devices.delete_device'))

    def test_can_change_device_status(self):
        assert_true(self.user.has_perm('user.can_change_device_status'))
Exemplo n.º 3
0
 def test_can_checkout_headphones_to_user(self):
     # headphones are created
     device = HeadphonesFactory(status=Device.CHECKED_IN)
     # user is created
     user = UserFactory()
     # checks out to user
     self._checkout(device, user.username)
Exemplo n.º 4
0
 def test_can_checkout_ipad_to_user(self):
     # an ipad is created
     device = IpadFactory(status=Device.CHECKED_IN_READY)
     # a user is created
     user = UserFactory()
     # checks out the device to the user
     self._checkout(device, user.username)
Exemplo n.º 5
0
class DevicesAddViewTest(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.user.is_superuser = True
        self.user.save()
        self.client.login(username=self.user.username, password='******')

    def get_view_name(self):
        """
        Convenience method so that if the name of this url is changed in
         'urls.py' you would only have to change this string at this central position.
        """
        return 'devices:add'

    def test_view(self):
        response = self.client.get(reverse(self.get_view_name()))
        self.assertEqual(response.status_code, 200)
Exemplo n.º 6
0
class DevicesAddViewTest(TestCase):
    def setUp(self):
        self.user = UserFactory()
        self.user.is_superuser = True
        self.user.save()
        self.client.login(username=self.user.username,
                            password='******')

    def get_view_name(self):
        """
        Convenience method so that if the name of this url is changed in
         'urls.py' you would only have to change this string at this central position.
        """
        return 'devices:add'

    def test_view(self):
        response = self.client.get(reverse(self.get_view_name()))
        self.assertEqual(response.status_code, 200)
Exemplo n.º 7
0
class TestAUser(WebTest):

    def setUp(self):
        self.user = UserFactory()

    def tearDown(self):
        pass

    def test_can_see_homepage(self):
        # Rosie goes to homepage
        res = self.app.get('/')
        assert_equal(res.status_code, 200)
        assert_in('Inventory', res)

    def test_redirected_to_login_if_not_logged_in(self):
        res = self.app.get('/devices/')
        res = res.follow()
        assert_equal(res.status_code, 200)
        assert_equal(res.request.path, '/')

    def test_can_login(self):
        # Rosie goes to root
        res = self.app.get('/')
        # Rosie logs in
        form = res.forms['login_form']
        form['username'] = self.user.username
        form['password'] = '******'
        res = form.submit()
        # Follow login
        res = res.follow()
        # Follow redirect to devices
        res = res.follow()
        assert_equal(res.status_code, 200)
        assert_true(self.user.is_authenticated())
        assert_in('Welcome back, {0}!'.format(self.user.first_name), res)
        # Rosie is at the inventory page
        assert_equal(res.request.path, '/devices/')

    def test_root_redirects_to_inventory_if_logged_in(self):
        # Rosie is logged in
        # When she goes to the root, 
        res = self.app.get('/', user=self.user).follow()
        # She is taken to the inventory page
        assert_equal(res.request.path, '/devices/')
Exemplo n.º 8
0
 def setUp(self):
     self.user = UserFactory()
     self.user.is_superuser = True
     self.user.save()
Exemplo n.º 9
0
 def setUp(self):
     self.user = UserFactory()
     self.user.is_superuser = True
     self.user.save()
     self.client.login(username=self.user.username,
                         password='******')
Exemplo n.º 10
0
 def setUp(self):
     self.admin = UserFactory(first_name="Alan", last_name="Admin")
     self.admin.is_superuser = True
     self.admin.save()
Exemplo n.º 11
0
class TestASuperUser(WebTest):
    def setUp(self):
        self.admin = UserFactory(first_name="Alan", last_name="Admin")
        self.admin.is_superuser = True
        self.admin.save()

    def tearDown(self):
        pass

    def test_can_add_ipad(self):
        # Goes to root (already logged in)
        res = self.app.get('/', user=self.admin).follow()
        assert_equal(res.request.path, '/devices/')
        # There's an Add device button
        assert_in('Add device', res)
        res = res.click('Add device')
        assert_equal(res.request.path, '/devices/add/')
        assert_in('Add device', res)

        # Fills in form
        form = res.forms['device_form']
        form.set('device_type', 'ipad')  # selects iPad
        form['description'] = '16GB, white'
        # forgets to put make
        # submits
        res = form.submit()
        # error message is displayed
        assert_in('This field is required', res)
        # enters serial number
        form['make'] = 'SERW09302 iPad 4'
        # submits
        res = form.submit().follow()
        # device is saved to database
        assert_equal(Ipad.objects.all().count(), 1)
        assert_equal(Ipad.objects.latest().description,
                    '16GB, white')
        # redirected to device index
        assert_equal(res.request.path, '/devices/')
        # the new device's name, status, Lender/Lendee, serial number is displayed
        # headers
        res.mustcontain('Name', 'Lender', 'Lent to', 'Serial number', 'Updated at')
        res.mustcontain('iPad', 'Checked in - NOT READY')

    def test_can_add_headphones(self):
        # goes to add device page
        res = self.app.get('/devices/add/', user=self.admin)
        form = res.forms['device_form']
        form.set('device_type', 'headphones')  # selects headphones
        form['description'] = 'iPad headphones'
        form['make'] = 'iPad headphones'
        # submits
        res = form.submit().follow()
        # saved to db
        headphones = Headphones.objects.latest()
        assert_equal(headphones.name, 'Headphones')
        # redirected to device index
        assert_equal(res.request.path, '/devices/')

    def test_can_add_adapter(self):
        # goes to add device page
        res = self.app.get('/devices/add/', user=self.admin)
        # fills out the device form
        form = res.forms['device_form']
        form.set('device_type', 'adapter')  # selects adapter
        form['description'] = 'wall charger/adapter for iPad'
        form['make'] = "Apple wall charger adapter"
        # submits
        res = form.submit().follow()
        # saved to db
        adapter = Adapter.objects.latest()
        assert_in('adapter', adapter.make.lower())
        # redirected to device indes
        assert_equal(res.request.path, '/devices/')

    def test_can_add_case(self):
        # goes to add device page
        res = self.app.get('/devices/add/', user=self.admin)
        # fills out the device form
        form = res.forms['device_form']
        form.set('device_type', 'case')  # selects adapter
        form['description'] = 'case for iPad (blue)'
        form['make'] = "iPad Smartcase"
        # submits
        res = form.submit().follow()
        # saved to db
        case = Case.objects.latest()
        assert_in('case', case.make.lower())
        # redirected to device indes
        assert_equal(res.request.path, '/devices/')

    def test_can_see_delete_btn(self):
        # 3 devices are created
        device1, device2, device3 = IpadFactory(), IpadFactory(), IpadFactory()
        assert_equal(Ipad.objects.all().count(), 3)
        # user goes to index page
        res = self.app.get('/', user=self.admin).follow()
        # devices are listed
        assert_in(device1.serial_number, res)
        assert_in(device2.serial_number, res)
        # there is a delete button
        assert_in('Delete', res)

    def test_can_create_experimenter(self):
        # logs in 
        res = self.app.get('/', user=self.admin).follow()
        # Clicks on create new user
        res = res.click('Create user')
        # Fills out form to create a new user
        form = res.forms['user_form']
        # Sets the user type
        form.set('user_type', 'experimenter')
        form['first_name'] = 'Jimmy'
        form['last_name'] = 'Page'
        form['email'] = '*****@*****.**'
        form['password1'] = 'ledzep12'
        form['password2'] = 'ledzep12'
        # Submits
        res = form.submit().follow()
        # Back at the devices page
        assert_equal(res.request.path, '/devices/')
        # Sees success message
        assert_in('Successfully created user: [email protected]', res)
        # User is saved to database
        assert_equal(Experimenter.objects.all().count(), 1)
        new_experimenter = Experimenter.objects.get(user__username='******')
        assert_equal(new_experimenter.user.get_full_name(), 'Jimmy Page')

    def test_can_create_reader(self):
        # logs in 
        res = self.app.get('/', user=self.admin).follow()
        # Clicks on create new user
        res = res.click('Create user')
        # Fills out form to create a new user
        form = res.forms['user_form']
        # Sets the user type
        form.set('user_type', 'reader')
        form['first_name'] = 'Jimmy'
        form['last_name'] = 'Page'
        form['email'] = '*****@*****.**'
        form['password1'] = 'ledzep12'
        form['password2'] = 'ledzep12'
        # Submits
        res = form.submit().follow()
        # Back at the devices page
        assert_equal(res.request.path, '/devices/')
        # Sees success message
        assert_in('Successfully created user: [email protected]', res)
        # User is saved to database
        assert_equal(Reader.objects.all().count(), 1)
        new_reader = Reader.objects.get(user__username='******')
        assert_equal(new_reader.user.get_full_name(), 'Jimmy Page')

    def test_can_create_admin(self):
        # logs in 
        res = self.app.get('/', user=self.admin).follow()
        # Clicks on create new user
        res = res.click('Create user')
        # Fills out form to create a new user
        form = res.forms['user_form']
        # Sets the user type
        form.set('user_type', 'admin')
        form['first_name'] = 'Jimmy'
        form['last_name'] = 'Page'
        form['email'] = '*****@*****.**'
        form['password1'] = 'ledzep12'
        form['password2'] = 'ledzep12'
        # Submits
        res = form.submit().follow()
        # Back at the devices page
        assert_equal(res.request.path, '/devices/')
        # Sees success message
        assert_in('Successfully created user: [email protected]', res)
        # User is saved to database
        new_admin = User.objects.get(username='******')
        assert_equal(new_admin.get_full_name(), 'Jimmy Page')
        assert_true(new_admin.is_superuser)

    def test_can_delete_device(self):
        assert False, 'finish me'
Exemplo n.º 12
0
 def setUp(self):
     self.user = UserFactory()
     self.user.is_superuser = True
     self.user.save()
Exemplo n.º 13
0
 def setUp(self):
     user = UserFactory(first_name="Ellen", last_name="Experimenter")
     self.experimenter = ExperimenterFactory(user=user)
Exemplo n.º 14
0
 def setUp(self):
     self.user = UserFactory()
     self.client.login(username=self.user.username, password='******')
Exemplo n.º 15
0
 def setUp(self):
     self.user = UserFactory()
     self.user.is_superuser = True
     self.user.save()
     self.client.login(username=self.user.username, password='******')
Exemplo n.º 16
0
 def setUp(self):
     self.user = UserFactory()