This command soft-deletes home projects when their owning user is no longer there.
36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
from bson import ObjectId
|
|
|
|
from pillar.tests import AbstractPillarTest
|
|
|
|
|
|
class PurgeHomeProjectsTest(AbstractPillarTest):
|
|
def test_purge(self):
|
|
self.create_standard_groups()
|
|
# user_a will be soft-deleted, user_b will be hard-deleted.
|
|
# We don't support soft-deleting users yet, but the code should be
|
|
# handling that properly anyway.
|
|
user_a = self.create_user(user_id=24 * 'a', roles={'subscriber'}, token='token-a')
|
|
user_b = self.create_user(user_id=24 * 'b', roles={'subscriber'}, token='token-b')
|
|
|
|
# GET the home project to create it.
|
|
home_a = self.get('/api/bcloud/home-project', auth_token='token-a').json()
|
|
home_b = self.get('/api/bcloud/home-project', auth_token='token-b').json()
|
|
|
|
with self.app.app_context():
|
|
users_coll = self.app.db('users')
|
|
|
|
res = users_coll.update_one({'_id': user_a}, {'$set': {'_deleted': True}})
|
|
self.assertEqual(1, res.modified_count)
|
|
|
|
res = users_coll.delete_one({'_id': user_b})
|
|
self.assertEqual(1, res.deleted_count)
|
|
|
|
from pillar.cli.maintenance import purge_home_projects
|
|
|
|
with self.app.app_context():
|
|
self.assertEqual(2, purge_home_projects(go=True))
|
|
|
|
proj_coll = self.app.db('projects')
|
|
self.assertEqual(True, proj_coll.find_one({'_id': ObjectId(home_a['_id'])})['_deleted'])
|
|
self.assertEqual(True, proj_coll.find_one({'_id': ObjectId(home_b['_id'])})['_deleted'])
|