blob: a6b58977bfd778e231fe169dc012b06d1fe0a945 [file] [log] [blame]
from observertest import BaseObserverToscaTest
from core.models import Site, Deployment, User, ControllerUser
# Note that as a side effect, these tests will also create a Site
class ObserverUserTest(BaseObserverToscaTest):
tests = ["create_user"]
# hide_observer_output = False # uncomment to display lots of stuff to screen
def cleanup(self):
# We don't want to leak resources, so we make sure to let the observer
# attempt to delete these objects.
self.try_to_delete(User, purge=False, email="johndoe@foo.bar")
self.try_to_delete(Site, purge=False, login_base="testsite")
self.run_observer()
self.try_to_delete(User, purge=True, email="johndoe@foo.bar")
self.try_to_delete(Site, purge=True, login_base="testsite")
def assert_nouser(self, email):
assert(not User.objects.filter(email=email))
def assert_user(self, email, **kwargs):
obj = User.objects.get(email=email)
assert(obj)
for (k,v) in kwargs.items():
if (getattr(obj,k,None) != v):
print "Object %s property '%s' is '%s' and should be '%s'" % (obj, k, getattr(obj,k,None), v)
assert(False)
return obj
def create_user(self):
self.assert_noobj(Site, "testsite")
self.assert_nouser("johndoe@foo.bar")
self.execute(self.make_nodetemplate(self.get_usable_deployment(), "tosca.nodes.Deployment",
props={"no-delete": True}) + \
"""
testsite:
type: tosca.nodes.Site
properties:
site_url: http://opencloud.us/
requirements:
- deployment:
node: %s
relationship: tosca.relationships.SiteDeployment
requirements:
- controller:
node: %s
relationship: tosca.relationships.UsesController
johndoe@foo.bar:
type: tosca.nodes.User
properties:
password: letmein
firstname: john
lastname: doe
requirements:
- site:
node: testsite
relationship: tosca.relationships.MemberOfSite
""" % (self.get_usable_deployment(), self.get_usable_controller()))
testsite = self.assert_obj(Site, "testsite")
testuser = self.assert_user("johndoe@foo.bar")
self.run_model_policy(save_output="/tmp/usertest:create_user:model_policy")
# make sure a ControllerSite object was created
cu = ControllerUser.objects.filter(user=testuser)
assert(len(cu) == 1)
self.run_observer(save_output="/tmp/usertest:create_user:observer")
testuser = self.assert_user("johndoe@foo.bar")
cu = ControllerUser.objects.filter(user=testuser)
assert(len(cu) == 1)
assert(cu[0].kuser_id is not None)
assert(cu[0].kuser_id != "")
if __name__ == "__main__":
ObserverUserTest()