예제 #1
0
    def testVolumesForQueryOwner(self):
        # Searching by owner with domain (e.g., example.com) in query should
        # return the volume if the owner in datastore doesn't have domain. I.e.,
        # searching for "*****@*****.**" should still find volumes with
        # owner="lololol".
        models.BitLockerVolume(
            owner='lololol',
            created_by=search.users.User('*****@*****.**'),
            dn='CN;',
            recovery_key=str(uuid.uuid4()),
            parent_guid=str(uuid.uuid4()).upper(),
            hostname=models.BitLockerVolume.NormalizeHostname('lololol'),
            volume_uuid=str(uuid.uuid4()).upper()).put()
        volumes = search.VolumesForQuery('owner:[email protected]',
                                         'bitlocker')
        self.assertEqual(1, len(volumes))
        self.assertEqual(models.BitLockerVolume.NormalizeHostname('lololol'),
                         volumes[0].hostname)

        # Searching by owner without domain (e.g., example.com) in query should
        # still return the volume if the owner in datastore does have domain. I.e.,
        # searching for "stub1337" should still find volumes with
        # owner="*****@*****.**".
        models.BitLockerVolume(
            owner='*****@*****.**',
            created_by=search.users.User('*****@*****.**'),
            dn='CN;',
            recovery_key=str(uuid.uuid4()),
            parent_guid=str(uuid.uuid4()).upper(),
            hostname=models.BitLockerVolume.NormalizeHostname('stub1337'),
            volume_uuid=str(uuid.uuid4()).upper()).put()
        volumes = search.VolumesForQuery('owner:stub1337', 'bitlocker')
        self.assertEqual(1, len(volumes))
        self.assertEqual(models.BitLockerVolume.NormalizeHostname('stub1337'),
                         volumes[0].hostname)
예제 #2
0
    def testProvisioningVolumesForQueryCreatedBy(self):
        models.ProvisioningVolume.created.auto_now = False

        today = datetime.datetime.today()

        for i in range(2 * search.MAX_VOLUMES_PER_QUERY):
            models.ProvisioningVolume(
                owner='stub',
                serial='stub',
                volume_uuid=str(uuid.uuid4()),
                created_by=users.User('*****@*****.**'),
                hdd_serial='stub',
                passphrase=str(uuid.uuid4()),
                platform_uuid='stub',
                created=today - datetime.timedelta(days=i),
            ).put()
        volumes = search.VolumesForQuery('created_by:[email protected]',
                                         permissions.TYPE_PROVISIONING, False)

        self.assertEqual(search.MAX_VOLUMES_PER_QUERY, len(volumes))
        for i in range(search.MAX_VOLUMES_PER_QUERY):
            self.assertEqual(users.User('*****@*****.**'),
                             volumes[i].created_by)
            self.assertEqual(today - datetime.timedelta(days=i),
                             volumes[i].created)

        models.ProvisioningVolume.created.auto_now = True
예제 #3
0
    def testVolumesForQueryPrefix(self):
        query = 'owner:stub'
        volumes = search.VolumesForQuery(query,
                                         'bitlocker',
                                         prefix_search=True)

        self.assertEqual(2, len(volumes))
예제 #4
0
    def testVolumesForQueryCreatedBy(self):
        created_by = 'foouser'
        email = '%s@%s' % (created_by, os.environ['AUTH_DOMAIN'])

        query = 'created_by:%s' % created_by
        volumes = search.VolumesForQuery(query, 'bitlocker')

        self.assertEqual(1, len(volumes))
        self.assertEqual(email, volumes[0].created_by.email())
예제 #5
0
    def testVolumesForQueryHostname(self):
        hostname = 'foohost'
        query = 'hostname:%s' % hostname

        volumes = search.VolumesForQuery(query, 'bitlocker')

        self.assertEqual(1, len(volumes))
        self.assertEqual(models.BitLockerVolume.NormalizeHostname(hostname),
                         volumes[0].hostname)
예제 #6
0
    def testVolumesForQueryHostname(self):
        hostname = 'foohost'
        query = 'hostname:%s' % hostname

        mock_model = search.SEARCH_TYPES['bitlocker']
        mock_model.all().AndReturn(mock_model)
        mock_model.NormalizeHostname(hostname).AndReturn(hostname)
        mock_model.filter('hostname =', hostname)
        result = self.mox.CreateMockAnything()
        result.created = ''  # used for sorting.
        mock_model.fetch(999).AndReturn([result])

        self.mox.ReplayAll()
        search.VolumesForQuery(query, 'bitlocker', False)
        self.mox.VerifyAll()
예제 #7
0
    def testVolumesForQueryPrefix(self):
        field_name = 'foo'
        field_prefix = 'bar'
        query = '%s:%s' % (field_name, field_prefix)

        mock_model = search.SEARCH_TYPES['bitlocker']
        mock_model.all().AndReturn(mock_model)
        mock_model.filter('%s >=' % field_name,
                          field_prefix).AndReturn(mock_model)
        mock_model.filter('%s <' % field_name, field_prefix + u'\ufffd')
        result = self.mox.CreateMockAnything()
        result.created = ''  # used for sorting.
        mock_model.fetch(999).AndReturn([result])

        self.mox.ReplayAll()
        search.VolumesForQuery(query, 'bitlocker', True)
        self.mox.VerifyAll()
예제 #8
0
    def testVolumesForQueryCreatedBy(self):
        created_by = 'foouser'
        query = 'created_by:%s' % created_by
        email = '%s@%s' % (created_by, os.environ['AUTH_DOMAIN'])

        created_by_user = search.users.User(email)

        mock_model = search.SEARCH_TYPES['bitlocker']
        mock_model.all().AndReturn(mock_model)
        mock_model.filter('created_by =', created_by_user)
        result = self.mox.CreateMockAnything()
        result.created = ''  # used for sorting.
        mock_model.fetch(999).AndReturn([result])

        self.mox.ReplayAll()
        search.VolumesForQuery(query, 'bitlocker', False)
        self.mox.VerifyAll()