Skip to content

Commit

Permalink
prevent tests from deleting the default user
Browse files Browse the repository at this point in the history
PR aiidateam#2214 stripped of safeguards that prevented the default user from
being deleted in between tests.
Since AiiDA expects a default user in many operations, leaving the DB
in a state with no default user is not ideal.

This commit reintroduces safeguards that result in the default user
remaining untouched.
  • Loading branch information
ltalirz committed Feb 14, 2019
1 parent b1b34f6 commit 45537a9
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
6 changes: 5 additions & 1 deletion aiida/backends/djsite/db/testbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ def setUpClass_method(self):

def clean_db(self):
from aiida.backends.djsite.db import models
from aiida.manage import get_config

email = get_config().current_profile.default_user_email

# I first need to delete the links, because in principle I could not delete input nodes, only outputs.
# For simplicity, since I am deleting everything, I delete the links first
Expand All @@ -52,7 +55,8 @@ def clean_db(self):
models.DbLog.objects.all().delete()
models.DbNode.objects.all().delete() # pylint: disable=no-member
models.DbWorkflow.objects.all().delete() # pylint: disable=no-member
models.DbUser.objects.all().delete() # pylint: disable=no-member
# The default user is needed for many operations in AiiDA; do not delete it.
models.DbUser.objects.exclude(email=email).delete() # pylint: disable=no-member
models.DbComputer.objects.all().delete()
models.DbGroup.objects.all().delete()

Expand Down
15 changes: 10 additions & 5 deletions aiida/backends/testimplbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

import six

from aiida.common.exceptions import InternalError
from aiida.common.exceptions import InternalError, NotExistent
from aiida import orm


Expand Down Expand Up @@ -87,10 +87,15 @@ def insert_data(self):
backend=self.backend
).store()

config = get_config()
email = config.current_profile.default_user_email
self.user = orm.User(email=email).store()
self.user_email = email
# Since the default user is needed for many operations in AiiDA, it is not deleted by clean_db.
# In principle, it should therefore always exist - if not we create it anyhow.
default_user_email = get_config().current_profile.default_user_email
try:
self.user = orm.User.objects.get(email=default_user_email)
except NotExistent:
self.user = orm.User(email=email).store()

self.user_email = self.user.email

def get_computer(self):
"""
Expand Down

0 comments on commit 45537a9

Please sign in to comment.