Beispiel #1
0
  def setUp(self):
    super(TagModelTest, self).setUp()

    tag_model._MODELS_WITH_TAGS = (_ModelWithTags,)

    self.tag1 = tag_model.Tag(
        name='TestTag1', hidden=False, protect=True,
        color='blue', description='Description 1.')
    self.tag2 = tag_model.Tag(
        name='TestTag2', hidden=False, protect=False,
        color='red', description='Description 2.')
    self.tag1.put()
    self.tag2.put()

    self.tag1_data = tag_model.TagData(
        tag_key=self.tag1.key, more_info='tag1_data info.')
    self.tag2_data = tag_model.TagData(
        tag_key=self.tag2.key, more_info='tag2_data info.')

    self.entity1 = _ModelWithTags(
        tags=[self.tag1_data, self.tag2_data]).put().get()
    self.entity2 = _ModelWithTags(
        tags=[self.tag1_data, self.tag2_data]).put().get()
    self.entity3 = _ModelWithTags(
        tags=[self.tag1_data, self.tag2_data]).put().get()
Beispiel #2
0
    def associate_tag(self, user_email, tag_urlsafekey, more_info=None):
        """Associates a tag with a device.

    Args:
      user_email: str, the email of the user taking the action.
      tag_urlsafekey: str, the urlsafe representation of the ndb.Key for a tag.
      more_info: str, an informational field about a particular tag reference.
    """
        tag_data = tag_model.TagData(
            tag=api_utils.get_ndb_key(tag_urlsafekey).get(),
            more_info=more_info)
        if tag_data not in self.tags:
            for device_tag in self.tags:
                if tag_urlsafekey == device_tag.tag.key.urlsafe():
                    # Updates more_info field of an existing associated tag.
                    device_tag.more_info = more_info
                    self.put()
                    self.stream_to_bq(
                        user_email,
                        'Updated more_info on tag %s to %s on device %s.' %
                        (tag_data.tag.name, more_info, self.identifier))
                    return
            self.tags.append(tag_data)
            self.put()
            self.stream_to_bq(
                user_email, 'Associated tag %s with device %s' %
                (tag_data.tag.name, self.identifier))
Beispiel #3
0
  def associate_tag(self, user_email, tag_name, more_info=None):
    """Associates a tag with a device.

    Args:
      user_email: str, the email of the user taking the action.
      tag_name: str, the name of the tag to be associated.
      more_info: str, an informational field about a particular tag reference.
    """
    tag_data = tag_model.TagData(
        tag=tag_model.Tag.get(tag_name), more_info=more_info)
    if tag_data not in self.tags:
      for device_tag in self.tags:
        if tag_name == device_tag.tag.name:
          # Updates more_info field of an existing associated tag.
          device_tag.more_info = more_info
          self.put()
          self.stream_to_bq(
              user_email,
              'Updated more_info on tag %s to %s on device %s.' %
              (tag_data.tag.name, more_info, self.identifier))
          return
      self.tags.append(tag_data)
      self.put()
      self.stream_to_bq(
          user_email, 'Associated tag %s with device %s' %
          (tag_data.tag.name, self.identifier))
Beispiel #4
0
  def testTagDate(self):

    tag_model_object = tag_model.Tag(
        name='TestTag1', hidden=False, protect=True,
        color='blue', description='Description 1.')

    tag = tag_model.TagData(tag=tag_model_object, more_info='test_data')
    self.assertEqual('test_data', tag.more_info)
    self.assertEqual(tag_model_object, tag.tag)
Beispiel #5
0
  def setUp(self):
    super(DeviceModelTest, self).setUp()
    config_model.Config.set(
        'device_identifier_mode',
        config_model.DeviceIdentifierMode.SERIAL_NUMBER)
    self.shelf = shelf_model.Shelf.enroll(
        user_email=loanertest.USER_EMAIL, location='MTV', capacity=10,
        friendly_name='MTV office')

    self.tag1_key = tag_model.Tag(
        name='TestTag1', hidden=False, protect=True,
        color='blue', description='Description 1.').put()
    self.tag2_key = tag_model.Tag(
        name='TestTag2', hidden=False, protect=False,
        color='red', description='Description 2.').put()

    self.tag1_data = tag_model.TagData(
        tag=self.tag1_key.get(), more_info='tag1_data info.')
    self.tag2_data = tag_model.TagData(
        tag=self.tag2_key.get(), more_info='tag2_data info.')

    device_model.Device(
        serial_number='12321', enrolled=True,
        device_model='HP Chromebook 13 G1', current_ou='/',
        shelf=self.shelf.key, chrome_device_id='unique_id_1',
        damaged=False).put()
    device_model.Device(
        serial_number='67890', enrolled=True,
        device_model='Google Pixelbook', current_ou='/',
        shelf=self.shelf.key, chrome_device_id='unique_id_2',
        damaged=False, tags=[self.tag1_data]).put()
    device_model.Device(
        serial_number='VOID', enrolled=False,
        device_model='HP Chromebook 13 G1', current_ou='/',
        shelf=self.shelf.key, chrome_device_id='unique_id_8',
        damaged=False, tags=[self.tag1_data, self.tag2_data]).put()
    self.device1 = device_model.Device.get(serial_number='12321')
    self.device2 = device_model.Device.get(serial_number='67890')
    self.device3 = device_model.Device.get(serial_number='Void')

    datastore_user = user_model.User.get_user(loanertest.USER_EMAIL)
    datastore_user.update(superadmin=True)
Beispiel #6
0
 def test_update_new_name(self):
     """Test the renaming of a Tag."""
     self.tag1.update(user_email=loanertest.USER_EMAIL,
                      hidden=True,
                      protect=True,
                      color='blue',
                      description='Description 1.',
                      name='TestTag1 Renamed')
     self.assertIn(
         tag_model.TagData(tag_key=self.tag1.key,
                           more_info=self.tag1_data.more_info),
         self.entity1.tags)
     self.assertEqual(self.tag1.name, 'TestTag1 Renamed')
Beispiel #7
0
  def test_destroy(self, tag_name, tag_info, mock_put_multi):
    """Test destroying an existing Tag using deferred tasks."""
    tag_entity = tag_model.Tag.query(tag_model.Tag.name == tag_name).get()
    tag_entity.key.delete()

    tasks = self.taskqueue_stub.get_filtered_tasks()
    deferred.run(tasks[0].payload)
    tag_data = tag_model.TagData(tag=tag_entity, more_info=tag_info)
    self.assertIsNone(tag_entity.key.get())
    self.assertNotIn(tag_data, self.entity1.tags)
    self.assertNotIn(tag_data, self.entity2.tags)
    self.assertNotIn(tag_data, self.entity3.tags)
    mock_put_multi.assert_called_once_with(
        [self.entity1, self.entity2, self.entity3])