コード例 #1
0
    def test_diff_top_level_attributes(self):
        valid = datetime.utcnow()
        expires1 = valid + timedelta(days=30)
        expires2 = valid + timedelta(days=31)
        couch = MobileAuthKeyRecord(domain='my-domain',
                                    user_id='123',
                                    valid=valid,
                                    expires=expires1)
        sql = SQLMobileAuthKeyRecord(domain='other-domain',
                                     user_id='123',
                                     valid=valid,
                                     expires=expires2)

        (domain_diff, key_diff,
         expires_diff) = Command.get_diff_as_string(couch.to_json(),
                                                    sql).split("\n")
        self.assertEqual(
            domain_diff,
            "domain: couch value 'my-domain' != sql value 'other-domain'")
        self.assertRegex(key_diff, r"key: couch value '.+' != sql value '.+'")
        self.assertRegex(
            expires_diff,
            r"expires: couch value datetime.datetime\(\d{4}, \d+, \d+, \d+, \d+, \d+, \d+\) != "
            r"sql value datetime.datetime\(\d{4}, \d+, \d+, \d+, \d+, \d+, \d+\)"
        )
コード例 #2
0
 def test_diff_identical(self):
     key = '234'
     valid = datetime.utcnow()
     expires = valid + timedelta(days=30)
     couch = MobileAuthKeyRecord(domain='my-domain',
                                 user_id='123',
                                 valid=valid,
                                 expires=expires,
                                 key=key)
     sql = SQLMobileAuthKeyRecord(domain='my-domain',
                                  user_id='123',
                                  valid=valid,
                                  expires=expires,
                                  key=key)
     self.assertIsNone(Command.get_diff_as_string(couch.to_json(), sql))
コード例 #3
0
    def test_sync_to_sql(self):
        valid = datetime.utcnow()
        expires = valid + timedelta(days=30)
        couch = MobileAuthKeyRecord(domain='my-domain',
                                    user_id='123',
                                    valid=valid,
                                    expires=expires)
        couch.save()

        actual = SQLMobileAuthKeyRecord.objects.get(id=couch._id)
        self.assertEqual(actual.domain, 'my-domain')
        self.assertEqual(actual.user_id, '123')
        self.assertEqual(actual.valid, valid)
        self.assertEqual(actual.expires, expires)
        self.assertEqual(actual.type, 'AES256')
        self.assertEqual(actual.key, couch.key)
コード例 #4
0
    def test_migration(self):
        valid = datetime.utcnow()
        expires = valid + timedelta(days=30)
        couch = MobileAuthKeyRecord(domain='my-domain',
                                    user_id='123',
                                    valid=valid,
                                    expires=expires)
        couch.save()

        # Create any sql objects that didn't exist pre-migration
        call_command('populate_mobileauthkeyrecord')
        actual = SQLMobileAuthKeyRecord.objects.get(id=couch._id)
        self.assertEqual(actual.domain, 'my-domain')
        self.assertEqual(actual.user_id, '123')
        self.assertEqual(actual.valid, valid)
        self.assertEqual(actual.expires, expires)
        self.assertEqual(actual.type, 'AES256')
        self.assertEqual(actual.key, couch.key)

        # Update any pre-existing sql objects
        couch['domain'] = 'other-domain'
        couch['user_id'] = '456'
        couch.save(sync_to_sql=False)
        call_command('populate_mobileauthkeyrecord')
        actual = SQLMobileAuthKeyRecord.objects.get(id=couch._id)
        self.assertEqual(actual.domain, 'other-domain')
        self.assertEqual(actual.user_id, '456')
        self.assertEqual(actual.valid, valid)
        self.assertEqual(actual.expires, expires)
        self.assertEqual(actual.type, 'AES256')
        self.assertEqual(actual.key, couch.key)
コード例 #5
0
def new_key_record(domain, user_id, now=None):
    """
    return initialized but unsaved MobileAuthKeyRecord

    """
    from corehq.apps.mobile_auth.models import MobileAuthKeyRecord
    now = now or datetime.utcnow()
    record = MobileAuthKeyRecord(
        domain=domain,
        user_id=user_id,
        valid=now,
    )
    bump_expiry(record, now=now)

    return record
コード例 #6
0
ファイル: views.py プロジェクト: tsinkala/commcare-hq
 def key_for_time(self, now):
     return MobileAuthKeyRecord.current_for_user(
         domain=self.domain,
         user_id=self.user_id,
         now=now,
     )
コード例 #7
0
 def tearDown(self):
     SQLMobileAuthKeyRecord.objects.all().delete()
     for doc in get_all_docs_with_doc_types(self.db,
                                            ['MobileAuthKeyRecord']):
         MobileAuthKeyRecord.wrap(doc).delete()
     super().tearDown()
コード例 #8
0
 def setUpClass(cls):
     super().setUpClass()
     cls.db = MobileAuthKeyRecord.get_db()