def testByPermRead(self, owner, expected_email):
        vol_uuid = str(uuid.uuid4()).upper()
        secret = str(uuid.uuid4())
        base.User(
            key_name='*****@*****.**',
            user=users.get_current_user(),
            email='*****@*****.**',
            provisioning_perms=[permissions.RETRIEVE],
        ).put()
        models.ProvisioningVolume(
            owners=[owner],
            hdd_serial='stub',
            passphrase=secret,
            platform_uuid='stub',
            serial='stub',
            volume_uuid=vol_uuid,
        ).put()

        with mock.patch.object(util, 'SendEmail') as mock_send_email:
            self.testapp.get('/provisioning/%s?json=1' % vol_uuid)
            self.assertEqual(1, mock_send_email.call_count)
            recipients, _, _ = mock_send_email.call_args[0]
        self.assertItemsEqual(
            ['*****@*****.**', expected_email, '*****@*****.**'],
            recipients)
Esempio n. 2
0
    def testWalkthrough(self, _):
        models.ProvisioningVolume(owner='stub',
                                  created_by=users.get_current_user(),
                                  hdd_serial='stub',
                                  passphrase=str(uuid.uuid4()),
                                  created=datetime.datetime.now(),
                                  platform_uuid='stub',
                                  serial='stub',
                                  volume_uuid=str(uuid.uuid4()).upper(),
                                  tag='v1').put()

        resp = gae_main.app.get_response(
            '/api/internal/maintenance/update_volumes_schema',
            {'REQUEST_METHOD': 'GET'})

        self.assertEqual(200, resp.status_int)

        taskqueue = self.testbed.get_stub(testbed.TASKQUEUE_SERVICE_NAME)
        tasks = taskqueue.get_filtered_tasks()
        self.assertEqual(9, len(tasks))

        for task in tasks:
            deferred.run(task.payload)

        self.assertEqual('v1', models.ProvisioningVolume.all().fetch(1)[0].tag)
    def testByPermSilentWithAudit(self):
        vol_uuid = str(uuid.uuid4()).upper()
        secret = str(uuid.uuid4())
        base.User(
            key_name='*****@*****.**',
            user=users.get_current_user(),
            email='*****@*****.**',
            provisioning_perms=[
                permissions.RETRIEVE,
                permissions.SILENT_RETRIEVE_WITH_AUDIT_EMAIL,
            ],
        ).put()
        models.ProvisioningVolume(
            owners=['stub6'],
            hdd_serial='stub',
            passphrase=secret,
            platform_uuid='stub',
            serial='stub',
            volume_uuid=vol_uuid,
        ).put()

        with mock.patch.object(util, 'SendEmail') as mock_send_email:
            self.testapp.get('/provisioning/%s?json=1' % vol_uuid)
            self.assertEqual(1, mock_send_email.call_count)
            recipients, _, _ = mock_send_email.call_args[0]
        self.assertEqual(['*****@*****.**', '*****@*****.**'],
                         recipients)
Esempio n. 4
0
    def testProvisioningQueryCreatedBySortingOrder(self):
        models.ProvisioningVolume.created.auto_now = False

        today = datetime.datetime.today()

        for i in range(2 * search.MAX_PASSPHRASES_PER_QUERY):
            models.ProvisioningVolume(
                owner='stub7',
                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()
        resp = util.FromSafeJson(
            self.testapp.get(
                '/search?search_type=provisioning&'
                'field1=created_by&[email protected]&json=1').body)
        self.assertTrue(resp['too_many_results'])
        volumes = resp['passphrases']

        self.assertEqual(search.MAX_PASSPHRASES_PER_QUERY, len(volumes))
        for i in range(search.MAX_PASSPHRASES_PER_QUERY):
            self.assertEqual('stub7', volumes[i]['created_by'])
            self.assertEqual(str(today - datetime.timedelta(days=i)),
                             volumes[i]['created'])

        models.ProvisioningVolume.created.auto_now = True
Esempio n. 5
0
    def testProvisioningPassphrasesForQueryCreatedBy(self):
        models.ProvisioningVolume.created.auto_now = False

        today = datetime.datetime.today()

        for i in range(2 * search.MAX_PASSPHRASES_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._PassphrasesForQuery(models.ProvisioningVolume,
                                              'created_by:[email protected]',
                                              False)

        self.assertEqual(search.MAX_PASSPHRASES_PER_QUERY, len(volumes))
        for i in range(search.MAX_PASSPHRASES_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
Esempio n. 6
0
    def testWalkthrough(self):
        models.ProvisioningVolume.created.auto_now = False

        vol_uuid1 = str(uuid.uuid4()).upper()
        secret1 = str(uuid.uuid4())

        base.User(
            key_name='*****@*****.**',
            user=users.get_current_user(),
            provisioning_perms=[],
        ).put()

        models.ProvisioningVolume(
            owner='stub',
            created_by=users.get_current_user(),
            hdd_serial='stub',
            passphrase=secret1,
            created=datetime.datetime.now(),
            platform_uuid='stub',
            serial='stub',
            volume_uuid=vol_uuid1,
        ).put()

        old = datetime.datetime.now() - datetime.timedelta(days=365)
        models.ProvisioningVolume(owner='stub1',
                                  created_by=users.get_current_user(),
                                  hdd_serial='stub',
                                  passphrase=secret1,
                                  created=old,
                                  platform_uuid='stub',
                                  serial='stub',
                                  volume_uuid=str(uuid.uuid4()).upper()).put()

        resp = gae_main.app.get_response('/created?json=1',
                                         {'REQUEST_METHOD': 'GET'})

        self.assertEqual(httplib.OK, resp.status_int)

        data = util.FromSafeJson(resp.body)

        self.assertEqual(1, len(data))
        self.assertEqual(secret1, data[0]['passphrase'])

        models.ProvisioningVolume.created.auto_now = True
Esempio n. 7
0
    def _CreateNewSecretEntity(self, owner, volume_uuid, secret):
        user = base.GetCurrentUser()
        platform = self.request.get('platform')
        # Set default platform to Mac
        if not platform:
            platform = 'Mac'

        return models.ProvisioningVolume(owner=owner,
                                         volume_uuid=volume_uuid,
                                         passphrase=str(secret))
Esempio n. 8
0
  def testProvisioningAsOwner(self):
    vol_uuid = str(uuid.uuid4()).upper()
    secret = str(uuid.uuid4())
    base.User(
        key_name='*****@*****.**', user=users.get_current_user(),
        provisioning_perms=[permissions.RETRIEVE_OWN],
    ).put()
    models.ProvisioningVolume(
        owner='stub7', hdd_serial='stub', passphrase=secret,
        platform_uuid='stub', serial='stub',
        volume_uuid=vol_uuid,
    ).put()

    with mock.patch.object(util, 'SendEmail') as _:
      resp = gae_main.app.get_response(
          '/provisioning/%s?json=1' % vol_uuid)
    self.assertEqual(httplib.OK, resp.status_int)
    self.assertIn('"passphrase": "%s"' % secret, resp.body)