예제 #1
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_messages.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)
예제 #2
0
 def test_resume_loan(self, mock_xsrf_token, mock_resume_loan):
     self.login_endpoints_user()
     self.service.resume_loan(
         device_messages.DeviceRequest(urlkey=self.device.key.urlsafe()))
     assert mock_resume_loan.call_count == 1
     assert mock_xsrf_token.call_count == 1
예제 #3
0
 def test_mark_lost(self, mock_xsrf_token, mock_marklost):
     self.service.mark_lost(
         device_messages.DeviceRequest(urlkey=self.device.key.urlsafe()))
     mock_marklost.assert_called_once_with(
         user_email=loanertest.SUPER_ADMIN_EMAIL)
     assert mock_xsrf_token.call_count == 1
예제 #4
0
 def test_get_device_directory_errors(self, test_error,
                                      mock_directory_class):
     request = device_messages.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)
예제 #5
0
 def test_get_device_unenrolled(self):
     request = device_messages.DeviceRequest(
         unknown_identifier=self.device.serial_number)
     self.device.enrolled = False
     with self.assertRaises(device_api.endpoints.BadRequestException):
         self.service.get_device(request)
예제 #6
0
 def test_get_device_not_found(self, mock_directory_class):
     mock_directory_client = mock_directory_class.return_value
     mock_directory_client.given_name.return_value = 'given name value'
     request = device_messages.DeviceRequest(unknown_identifier='not-found')
     with self.assertRaises(device_api.endpoints.NotFoundException):
         self.service.get_device(request)
예제 #7
0
 def test_device_audit_check_device_damaged(self):
     request = device_messages.DeviceRequest(
         unknown_identifier=self.device.serial_number)
     self.device.damaged = True
     with self.assertRaises(device_api.endpoints.BadRequestException):
         self.service.device_audit_check(request)
예제 #8
0
 def test_enroll_error(self, test_error, mock_device_cls):
     mock_device_cls.enroll.side_effect = test_error
     request = device_messages.DeviceRequest(
         serial_number=self.unenrolled_device.serial_number)
     with self.assertRaises(endpoints.BadRequestException):
         self.service.enroll(request)
예제 #9
0
 def test_device_audit_check_audit_error(self):
     request = device_messages.DeviceRequest(
         identifier=self.device.serial_number)
     self.testbed.mock_raiseevent.side_effect = device_model.DeviceAuditEventError
     with self.assertRaises(device_api.endpoints.BadRequestException):
         self.service.device_audit_check(request)
예제 #10
0
 def test_device_audit_check_device_not_enrolled(self):
     request = device_messages.DeviceRequest(
         identifier=self.device.serial_number)
     self.device.enrolled = False
     with self.assertRaises(device_api.endpoints.BadRequestException):
         self.service.device_audit_check(request)
예제 #11
0
  def testHistoryRequest(self):
    hist_req = device_messages.HistoryRequest(
        device=device_messages.DeviceRequest(asset_tag='FAKE-DEVICE-TAG'))

    self.assertEqual(hist_req.device.asset_tag, 'FAKE-DEVICE-TAG')
예제 #12
0
    def test_get_history(self, mock_xsrf_token, mock_bigquery):
        device_request = device_messages.DeviceRequest()
        device_request.asset_tag = '12345'
        request = device_messages.HistoryRequest(device=device_request)

        device_response = device_messages.Device()
        device_response.asset_tag = '12345'

        expected_response = device_messages.HistoryResponse()
        for _ in range(2):
            expected_response.devices.append(device_response)
            expected_response.timestamp.append(
                datetime.datetime(2019, 10, 22, 20, 43, 37))
            expected_response.actor.append('*****@*****.**')
            expected_response.summary.append(
                'Beginning new loan for user [email protected] with device 12345.'
            )

        bigquery_response = [
            (u"Key('Device', 5158133238333440)",
             datetime.datetime(2019, 10, 22, 20, 43, 37),
             u'*****@*****.**', u'enable_guest_mode',
             u'Beginning new loan for user [email protected] with device 12345.',
             {
                 u'ou_changed_date': datetime.datetime(2019, 10, 22, 20, 43,
                                                       37),
                 u'current_ou': u'/',
                 u'shelf': None,
                 u'due_date': datetime.datetime(2019, 10, 22, 20, 43, 37),
                 u'chrome_device_id': u'unique_id_1',
                 u'mark_pending_return_date': None,
                 u'asset_tag': u'12345',
                 u'last_known_healthy':
                 datetime.datetime(2019, 10, 22, 20, 43, 37),
                 u'locked': False,
                 u'last_reminder': {
                     u'count': 1,
                     u'time': datetime.datetime(2019, 10, 22, 20, 43, 37),
                     u'level': 1
                 },
                 u'next_reminder': None,
                 u'device_model': u'Chromebook',
                 u'enrolled': True,
                 u'serial_number': u'123ABC',
                 u'damaged': False,
                 u'onboarded': True,
                 u'assignment_date': datetime.datetime(2019, 10, 22, 20, 43,
                                                       37),
                 u'damaged_reason': None,
                 u'assigned_user': u'*****@*****.**',
                 u'lost': False,
                 u'last_heartbeat': datetime.datetime(2019, 10, 22, 20, 43, 37)
             }),
            (u"Key('Device', 5158133238333440)",
             datetime.datetime(2019, 10, 22, 20, 43, 37),
             u'*****@*****.**', u'enable_guest_mode',
             u'Beginning new loan for user [email protected] with device 12345.',
             {
                 u'ou_changed_date': datetime.datetime(2019, 10, 22, 20, 43,
                                                       37),
                 u'current_ou': u'/',
                 u'shelf': None,
                 u'due_date': datetime.datetime(2019, 10, 22, 20, 43, 37),
                 u'chrome_device_id': u'unique_id_1',
                 u'mark_pending_return_date': None,
                 u'asset_tag': u'12345',
                 u'last_known_healthy':
                 datetime.datetime(2019, 10, 22, 20, 43, 37),
                 u'locked': False,
                 u'last_reminder': {
                     u'count': 1,
                     u'time': datetime.datetime(2019, 10, 22, 20, 43, 37),
                     u'level': 1
                 },
                 u'next_reminder': None,
                 u'device_model': u'Chromebook',
                 u'enrolled': True,
                 u'serial_number': u'123ABC',
                 u'damaged': False,
                 u'onboarded': True,
                 u'assignment_date': datetime.datetime(2019, 10, 22, 20, 43,
                                                       37),
                 u'damaged_reason': None,
                 u'assigned_user': u'*****@*****.**',
                 u'lost': False,
                 u'last_heartbeat': datetime.datetime(2019, 10, 22, 20, 43, 37)
             }),
        ]
        mock_bigquery_client = mock.Mock()
        mock_bigquery_client.get_device_info.return_value = bigquery_response
        mock_bigquery.return_value = mock_bigquery_client

        actual_response = self.service.get_history(request)

        self.assertEqual(actual_response, expected_response)