def test_bulk_delete_temporary_metadata(self): exp = datetime.utcnow() + timedelta(seconds=30) meta = self.db.put(BytesIO(b"content"), meta=new_meta(expires_on=exp)) self.db.bulk_delete(metas=[meta]) with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta) with self.assertRaises(DeletedBlobMeta.DoesNotExist): get_meta(meta, deleted=True)
def test_bulk_delete_permanent_metadata(self): meta = self.db.put(BytesIO(b"content"), meta=new_meta()) now = datetime.utcnow() with patch('corehq.blobs.metadata._utcnow', return_value=now): self.db.bulk_delete(metas=[meta]) with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta) deleted = get_meta(meta, deleted=True) self.assertEqual(deleted.deleted_on, now)
def test_delete_permanent_metadata(self): early = datetime.utcnow() - timedelta(minutes=5) meta = self.db.put(BytesIO(b"content"), meta=new_meta(created_on=early)) self.db.delete(key=meta.key) with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta) deleted = get_meta(meta, deleted=True) self.assertFalse(deleted.deleted_on is None) self.assertGreaterEqual(deleted.deleted_on, meta.created_on) self.assertLessEqual(deleted.deleted_on, datetime.utcnow())
def test_bulk_delete(self): metas = [] for name in "abc": meta = new_meta(parent_id="parent", name=name) meta.content_length = 0 metas.append(meta) self.db.metadb.put(meta) a, b, c = metas self.db.metadb.bulk_delete([a, b]) for meta in [a, b]: with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta) get_meta(c) # should not have been deleted
def test_bulk_delete(self): metas = [] for name in "abc": meta = new_meta(parent_id="parent", name=name) meta.content_length = 0 metas.append(meta) self.db.metadb.put(meta) a, b, c = metas self.db.metadb.bulk_delete([a, b]) for meta in [a, b]: with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta) get_meta(c) # should not have been deleted
def test_save_on_put(self): meta = new_meta() self.assertEqual(meta.id, None) self.db.put(BytesIO(b"content"), meta=meta) self.assertTrue(meta.id) saved = get_meta(meta) self.assertTrue(saved is not meta) self.assertEqual(saved.key, meta.key)
def test_save_on_put(self): meta = new_meta() self.assertEqual(meta.id, None) self.db.put(BytesIO(b"content"), meta=meta) self.assertTrue(meta.id) saved = get_meta(meta) self.assertTrue(saved is not meta) self.assertEqual(saved.key, meta.key)
def test_save_empty_properties(self): meta = new_meta() self.assertEqual(meta.properties, {}) self.db.put(BytesIO(b"content"), meta=meta) self.assertEqual(get_meta(meta).properties, {}) query = BlobMeta.objects.partitioned_query(meta.parent_id) results = query.filter(id=meta.id).values_list('id', 'properties') self.assertEqual(list(results), [(meta.id, None)])
def test_save_empty_properties(self): meta = new_meta() self.assertEqual(meta.properties, {}) self.db.put(BytesIO(b"content"), meta=meta) self.assertEqual(get_meta(meta).properties, {}) dbname = get_db_alias_for_partitioned_doc(meta.parent_id) with connections[dbname].cursor() as cursor: cursor.execute( "SELECT id, properties FROM blobs_blobmeta WHERE id = %s", [meta.id], ) self.assertEqual(cursor.fetchall(), [(meta.id, None)])
def test_save_empty_properties(self): meta = new_meta() self.assertEqual(meta.properties, {}) self.db.put(BytesIO(b"content"), meta=meta) self.assertEqual(get_meta(meta).properties, {}) dbname = get_db_alias_for_partitioned_doc(meta.parent_id) with connections[dbname].cursor() as cursor: cursor.execute( "SELECT id, properties FROM blobs_blobmeta WHERE id = %s", [meta.id], ) self.assertEqual(cursor.fetchall(), [(meta.id, None)])
def test_delete(self): meta = new_meta() self.db.put(BytesIO(b"content"), meta=meta) self.db.delete(key=meta.key) with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta)
def test_save_properties(self): meta = new_meta(properties={"mood": "Vangelis"}) self.db.put(BytesIO(b"content"), meta=meta) self.assertEqual(get_meta(meta).properties, {"mood": "Vangelis"})
def test_delete(self): meta = new_meta() self.db.put(BytesIO(b"content"), meta=meta) self.db.delete(key=meta.key) with self.assertRaises(BlobMeta.DoesNotExist): get_meta(meta)
def test_save_properties(self): meta = new_meta(properties={"mood": "Vangelis"}) self.db.put(BytesIO(b"content"), meta=meta) self.assertEqual(get_meta(meta).properties, {"mood": "Vangelis"})