Exemplo n.º 1
0
  def test_extend_loan(
      self, mock_xsrf_token, mock_loanextend, mock_confirm_user_action):
    tomorrow = datetime.datetime.utcnow() + datetime.timedelta(days=1)
    self.login_endpoints_user()
    self.service.extend_loan(device_message.ExtendLoanRequest(
        device=device_message.DeviceRequest(urlkey=self.device.key.urlsafe()),
        extend_date=tomorrow))
    mock_loanextend.assert_called_once_with(
        user_email=loanertest.USER_EMAIL, extend_date_time=tomorrow)
    mock_confirm_user_action.assert_called_once_with(
        loanertest.USER_EMAIL, self.device)
    mock_xsrf_token.assert_called_once()

    mock_xsrf_token.reset_mock()
    mock_loanextend.reset_mock()
    self.service.extend_loan(device_message.ExtendLoanRequest(
        device=device_message.DeviceRequest(
            chrome_device_id=self.device.chrome_device_id),
        extend_date=tomorrow))
    mock_loanextend.assert_called_once_with(
        user_email=loanertest.USER_EMAIL, extend_date_time=tomorrow)
    mock_xsrf_token.assert_called_once()

    mock_loanextend.side_effect = device_model.ExtendError
    self.assertRaises(
        device_api.endpoints.BadRequestException,
        self.service.extend_loan,
        device_message.ExtendLoanRequest(
            device=device_message.DeviceRequest(
                chrome_device_id=self.device.chrome_device_id),
            extend_date=tomorrow))
Exemplo n.º 2
0
    def test_get_device_errors(self):
        # No identifiers.
        with self.assertRaises(endpoints.BadRequestException):
            device_api._get_device(device_message.DeviceRequest())

        # URL-safe key that is still URL-safe, but technically not a key.
        with self.assertRaises(device_api.endpoints.BadRequestException):
            device_api._get_device(
                device_message.DeviceRequest(urlkey='bad-key'))
Exemplo n.º 3
0
  def test_get_device_errors(self):
    # No identifiers.
    self.assertRaisesRegexp(
        device_api.endpoints.BadRequestException,
        device_api._NO_IDENTIFIERS_MSG, device_api._get_device,
        device_message.DeviceRequest())

    # URL-safe key that is still URL-safe, but technically not a key.
    self.assertRaisesRegexp(
        device_api.endpoints.BadRequestException,
        device_api._BAD_URLKEY_MSG % 'bad-key', device_api._get_device,
        device_message.DeviceRequest(urlkey='bad-key'))
Exemplo n.º 4
0
 def test_unenroll_error(self, mock_device_cls):
     mock_device_cls.get.return_value.unenroll.side_effect = (
         device_model.FailedToUnenrollError())
     request = device_message.DeviceRequest(
         serial_number=self.unenrolled_device.serial_number)
     with self.assertRaises(endpoints.BadRequestException):
         self.service.unenroll(request)
Exemplo n.º 5
0
 def test_get_device_not_enrolled(self):
   constants.ON_LOCAL = False
   request = device_message.DeviceRequest(unknown_identifier='not-enrolled')
   self.assertRaisesRegexp(
       device_api.endpoints.NotFoundException,
       device_api._NO_DEVICE_MSG % 'not-enrolled',
       self.service.get_device, request)
Exemplo n.º 6
0
    def test_device_audit_check(self, mock_device_audit_check):
        request = device_message.DeviceRequest(unknown_identifier='6765')
        self.assertRaisesRegexp(device_api.endpoints.NotFoundException,
                                device_api._NO_DEVICE_MSG % '6765',
                                self.service.device_audit_check, request)

        device_model.Device(serial_number='12345',
                            enrolled=True,
                            device_model='HP Chromebook 13 G1',
                            current_ou='/',
                            chrome_device_id='unique_id_1',
                            damaged=False).put()
        request = device_message.DeviceRequest(unknown_identifier='12345')
        response = self.service.device_audit_check(request)
        assert mock_device_audit_check.call_count == 1
        self.assertIsInstance(response, message_types.VoidMessage)
Exemplo n.º 7
0
 def test_mark_pending_return(self, mock_xsrf_token, mock_markreturned):
     self.login_endpoints_user()
     self.service.mark_pending_return(
         device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
     mock_markreturned.assert_called_once_with(
         user_email=loanertest.USER_EMAIL)
     assert mock_xsrf_token.call_count == 1
Exemplo n.º 8
0
 def test_mark_pending_return_unassigned(self):
     self.device.assigned_user = None
     self.device.put()
     with self.assertRaisesRegexp(endpoints.UnauthorizedException,
                                  device_model._UNASSIGNED_DEVICE):
         self.service.mark_pending_return(
             device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
Exemplo n.º 9
0
 def test_device_audit_check_device_damaged(self):
   request = device_message.DeviceRequest(
       unknown_identifier=self.device.serial_number)
   self.device.damaged = True
   with self.assertRaisesRegexp(
       device_api.endpoints.BadRequestException,
       device_model._DEVICE_DAMAGED_MSG %self.device.serial_number):
     self.service.device_audit_check(request)
Exemplo n.º 10
0
 def test_enable_guest_unassigned(self):
     config_model.Config.set('allow_guest_mode', True)
     self.device.assigned_user = None
     self.device.put()
     with self.assertRaisesRegexp(endpoints.UnauthorizedException,
                                  device_model._UNASSIGNED_DEVICE):
         self.service.enable_guest_mode(
             device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
Exemplo n.º 11
0
 def test_device_audit_check_device_not_enrolled(self):
   request = device_message.DeviceRequest(
       unknown_identifier=self.device.serial_number)
   self.device.enrolled = False
   with self.assertRaisesRegexp(
       device_api.endpoints.BadRequestException,
       device_model._DEVICE_NOT_ENROLLED_MSG % self.device.serial_number):
     self.service.device_audit_check(request)
Exemplo n.º 12
0
 def test_resume_loan__unauthorized(self, mock_xsrf_token,
                                    mock_resume_loan):
     del mock_xsrf_token  # unused.
     self.login_endpoints_user()
     mock_resume_loan.side_effect = device_model.UnauthorizedError()
     with self.assertRaises(endpoints.UnauthorizedException):
         self.service.resume_loan(
             device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
Exemplo n.º 13
0
 def test_resume_loan(
     self, mock_xsrf_token, mock_resume_loan, mock_confirm_user_action):
   self.login_endpoints_user()
   self.service.resume_loan(device_message.DeviceRequest(
       urlkey=self.device.key.urlsafe()))
   mock_resume_loan.assert_called_once()
   mock_confirm_user_action.assert_called_once_with(
       loanertest.USER_EMAIL, self.device)
   mock_xsrf_token.assert_called_once()
Exemplo n.º 14
0
 def test_extend_loan_unassigned(self):
     self.device.assigned_user = None
     self.device.put()
     with self.assertRaisesRegexp(endpoints.UnauthorizedException,
                                  device_model._UNASSIGNED_DEVICE):
         self.service.extend_loan(
             device_message.ExtendLoanRequest(
                 device=device_message.DeviceRequest(
                     chrome_device_id=self.device.chrome_device_id)))
Exemplo n.º 15
0
  def test_mark_damaged(
      self, mock_xsrf_token, mock_markdamaged, mock_confirm_user_action):
    self.login_endpoints_user()
    self.service.mark_damaged(device_message.DamagedRequest(
        device=device_message.DeviceRequest(urlkey=self.device.key.urlsafe()),
        damaged_reason='Foo'))
    mock_markdamaged.assert_called_once_with(
        user_email=loanertest.USER_EMAIL, damaged_reason='Foo')
    mock_confirm_user_action.assert_called_once_with(
        loanertest.USER_EMAIL, self.device)
    mock_xsrf_token.assert_called_once()

    mock_xsrf_token.reset_mock()
    mock_markdamaged.reset_mock()
    self.service.mark_damaged(device_message.DamagedRequest(  # No reason given.
        device=device_message.DeviceRequest(urlkey=self.device.key.urlsafe())))
    mock_markdamaged.assert_called_once_with(
        user_email=loanertest.USER_EMAIL, damaged_reason=None)
    mock_xsrf_token.assert_called_once()
Exemplo n.º 16
0
 def test_mark_damaged__unauthorized(self, mock_xsrf, mock_markdamaged):
     del mock_xsrf  # unusued.
     self.login_endpoints_user()
     mock_markdamaged.side_effect = device_model.UnauthorizedError()
     with self.assertRaises(endpoints.UnauthorizedException):
         self.service.mark_damaged(
             device_message.DamagedRequest(
                 device=device_message.DeviceRequest(
                     urlkey=self.device.key.urlsafe()),
                 damaged_reason='Foo'))
Exemplo n.º 17
0
 def test_get_device_unable_to_get_shelf(self):
   # Delete the existing shelf key from datastore.
   self.shelf.key.delete()
   # Make sure it raises the execption after deleteing the key.
   with self.assertRaisesRegexp(
       device_api.endpoints.NotFoundException,
       device_api._SHELF_NOT_FOUND_MSG % self.device.shelf.urlsafe()):
     self.service.get_device(
         device_message.DeviceRequest(
             chrome_device_id=self.device.chrome_device_id))
Exemplo n.º 18
0
 def test_unenroll(self, mock_xsrf_token, mock_directoryclass):
   mock_directoryclient = mock_directoryclass.return_value
   mock_directoryclient.move_chrome_device_org_unit.return_value = (
       loanertest.TEST_DIR_DEVICE_DEFAULT)
   request = device_message.DeviceRequest(
       serial_number=self.device.serial_number)
   self.assertTrue(self.device.enrolled)
   response = self.service.unenroll(request)
   self.assertFalse(self.device.enrolled)
   self.assertIsNone(self.device.assigned_user)
   self.assertIsNone(self.device.due_date)
   self.assertIsInstance(response, message_types.VoidMessage)
   mock_xsrf_token.assert_called_once()
Exemplo n.º 19
0
 def test_unenroll_error(self, mock_directoryclass):
   err_message = 'Failed to move device'
   mock_directoryclient = mock_directoryclass.return_value
   mock_directoryclient.move_chrome_device_org_unit.side_effect = (
       device_model.directory.DirectoryRPCError(err_message))
   request = device_message.DeviceRequest(
       serial_number=self.unenrolled_device.serial_number)
   ou = config_model.Config.get('unenroll_ou')
   with self.assertRaisesRegexp(
       endpoints.BadRequestException,
       device_model._FAILED_TO_MOVE_DEVICE_MSG % (
           self.unenrolled_device.serial_number, ou, err_message)):
     self.service.unenroll(request)
Exemplo n.º 20
0
  def test_get_device(self):
    constants.ON_LOCAL = False
    asset_tag_response = self.service.get_device(
        device_message.DeviceRequest(asset_tag='12345'))
    chrome_device_id_response = self.service.get_device(
        device_message.DeviceRequest(chrome_device_id='unique_id_1'))
    serial_number_response = self.service.get_device(
        device_message.DeviceRequest(serial_number='123ABC'))
    urlkey_response = self.service.get_device(
        device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
    unknown_identifier_response = self.service.get_device(
        device_message.DeviceRequest(unknown_identifier='123ABC'))

    self.assertIsInstance(asset_tag_response, device_message.Device)
    self.assertIsInstance(chrome_device_id_response, device_message.Device)
    self.assertIsInstance(serial_number_response, device_message.Device)
    self.assertIsInstance(urlkey_response, device_message.Device)
    self.assertIsInstance(unknown_identifier_response, device_message.Device)
    self.assertEqual(
        self.device.serial_number, asset_tag_response.serial_number)
    self.assertEqual(
        self.device.device_model, urlkey_response.device_model)
Exemplo n.º 21
0
  def test_enable_guest_mode(
      self, mock_xsrf_token, mock_enableguest, mock_confirm_user_action):
    config_model.Config.set('allow_guest_mode', True)
    self.login_endpoints_user()
    self.service.enable_guest_mode(
        device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
    assert mock_enableguest.called
    mock_confirm_user_action.assert_called_once_with(
        loanertest.USER_EMAIL, self.device)
    mock_xsrf_token.assert_called_once()

    mock_xsrf_token.reset_mock()
    mock_enableguest.reset_mock()
    self.service.enable_guest_mode(device_message.DeviceRequest(
        chrome_device_id=self.device.chrome_device_id))
    assert mock_enableguest.called
    mock_xsrf_token.assert_called_once()

    def guest_disabled_error(*args, **kwargs):
      del args, kwargs  # Unused.
      raise device_model.GuestNotAllowedError(
          device_model._GUEST_MODE_DISABLED_MSG)

    def directory_error(*args, **kwargs):
      del args, kwargs  # Unused.
      raise device_model.EnableGuestError('Directory broke, all your fault.')

    mock_enableguest.side_effect = guest_disabled_error
    with self.assertRaises(endpoints.UnauthorizedException):
      self.service.enable_guest_mode(
          device_message.DeviceRequest(
              chrome_device_id=self.device.chrome_device_id))

    mock_enableguest.side_effect = directory_error
    with self.assertRaises(endpoints.InternalServerErrorException):
      self.service.enable_guest_mode(
          device_message.DeviceRequest(
              chrome_device_id=self.device.chrome_device_id))
Exemplo n.º 22
0
    def test_get_device(self, mock_directory_class):
        mock_directory_client = mock_directory_class.return_value
        mock_directory_client.given_name.return_value = 'given name value'
        asset_tag_response = self.service.get_device(
            device_message.DeviceRequest(asset_tag='12345'))
        chrome_device_id_response = self.service.get_device(
            device_message.DeviceRequest(chrome_device_id='unique_id_1'))
        serial_number_response = self.service.get_device(
            device_message.DeviceRequest(serial_number='123ABC'))
        urlkey_response = self.service.get_device(
            device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
        unknown_identifier_response = self.service.get_device(
            device_message.DeviceRequest(unknown_identifier='123ABC'))

        self.assertIsInstance(asset_tag_response, device_message.Device)
        self.assertIsInstance(chrome_device_id_response, device_message.Device)
        self.assertIsInstance(serial_number_response, device_message.Device)
        self.assertIsInstance(urlkey_response, device_message.Device)
        self.assertIsInstance(unknown_identifier_response,
                              device_message.Device)
        self.assertEqual(self.device.serial_number,
                         asset_tag_response.serial_number)
        self.assertEqual(self.device.device_model,
                         urlkey_response.device_model)
Exemplo n.º 23
0
  def test_enroll(self, mock_xsrf_token, mock_directoryclass):
    """Tests Enroll with mock methods."""
    mock_directoryclient = mock_directoryclass.return_value
    mock_directoryclient.get_chrome_device.return_value = (
        self.unenrolled_device)
    retrieved_device = device_model.Device.get(
        serial_number=self.unenrolled_device.serial_number)
    self.assertFalse(retrieved_device.enrolled)

    request = device_message.DeviceRequest(
        serial_number=self.unenrolled_device.serial_number)
    response = self.service.enroll(request)
    self.assertIsInstance(response, message_types.VoidMessage)
    retrieved_device = device_model.Device.get(
        serial_number=self.unenrolled_device.serial_number)
    self.assertTrue(retrieved_device.enrolled)
    mock_xsrf_token.assert_called_once()
Exemplo n.º 24
0
    def test_enroll(self, mock_directoryclass):
        """Tests Enroll with mock methods."""
        mock_directoryclient = mock_directoryclass.return_value
        mock_directoryclient.get_chrome_device.return_value = (
            self.unenrolled_device)
        mock_directoryclient.get_chrome_device_by_serial.return_value = (
            self.unenrolled_device_directory)
        retrieved_device = device_model.Device.get(
            serial_number=self.unenrolled_device.serial_number)
        self.assertFalse(retrieved_device.enrolled)

        request = device_message.DeviceRequest(
            serial_number=self.unenrolled_device.serial_number)
        with mock.patch.object(self.service, 'check_xsrf_token',
                               autospec=True) as mock_xsrf_token:
            response = self.service.enroll(request)
            self.assertIsInstance(response, message_types.VoidMessage)
            retrieved_device = device_model.Device.get(
                serial_number=self.unenrolled_device.serial_number)
            self.assertTrue(retrieved_device.enrolled)
            self.assertEqual(mock_xsrf_token.call_count, 1)
Exemplo n.º 25
0
 def test_get_device_unenrolled(self):
     request = device_message.DeviceRequest(
         unknown_identifier=self.device.serial_number)
     self.device.enrolled = False
     with self.assertRaises(device_api.endpoints.BadRequestException):
         self.service.get_device(request)
Exemplo n.º 26
0
 def test_get_device_directory_errors(self, test_error,
                                      mock_directory_class):
     request = device_message.DeviceRequest(asset_tag='12345')
     mock_directory_client = mock_directory_class.return_value
     mock_directory_client.given_name.side_effect = test_error
     self.assertIsNone(self.service.get_device(request).given_name)
Exemplo n.º 27
0
 def test_mark_lost(self, mock_xsrf_token, mock_marklost):
   self.service.mark_lost(device_message.DeviceRequest(
       urlkey=self.device.key.urlsafe()))
   mock_marklost.assert_called_once_with(
       user_email=loanertest.SUPER_ADMIN_EMAIL)
   mock_xsrf_token.assert_called_once()
Exemplo n.º 28
0
 def test_mark_lost__unauthorized(self, mock_xsrf_token, mock_marklost):
     del mock_xsrf_token  # unused.
     mock_marklost.side_effect = device_model.UnauthorizedError()
     with self.assertRaises(endpoints.UnauthorizedException):
         self.service.mark_lost(
             device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
Exemplo n.º 29
0
 def test_resume_loan(self, mock_xsrf_token, mock_resume_loan):
     self.login_endpoints_user()
     self.service.resume_loan(
         device_message.DeviceRequest(urlkey=self.device.key.urlsafe()))
     assert mock_resume_loan.call_count == 1
     assert mock_xsrf_token.call_count == 1
Exemplo n.º 30
0
 def test_get_device_no_shelf(self):
   chrome_device_id_response = self.service.get_device(
       device_message.DeviceRequest(chrome_device_id='unique_id_3'))
   self.assertIsNone(chrome_device_id_response.shelf)