import functools from cas_server import models class DummyUserManager(object): def __init__(self, username, session_key): self.username = username self.session_key = session_key def get(self, username=None, session_key=None): if username == self.username and session_key == self.session_key: return models.User(username=username, session_key=session_key) else: raise models.User.DoesNotExist() def dummy(*args, **kwds): pass def dummy_service_pattern(**kwargs): def decorator(func): @functools.wraps(func) def wrapper(*args, **kwds): service_validate = models.ServicePattern.validate models.ServicePattern.validate = classmethod(lambda x,y: models.ServicePattern(**kwargs)) ret = func(*args, **kwds) models.ServicePattern.validate = service_validate return ret return wrapper return decorator def dummy_user(username, session_key): def decorator(func): @functools.wraps(func) def wrapper(*args, **kwds): user_manager = models.User.objects user_save = models.User.save user_delete = models.User.delete models.User.objects = DummyUserManager(username, session_key) models.User.save = dummy models.User.delete = dummy ret = func(*args, **kwds) models.User.objects = user_manager models.User.save = user_save models.User.delete = user_delete return ret return wrapper return decorator def dummy_ticket(ticket_class, service, ticket): def decorator(func): @functools.wraps(func) def wrapper(*args, **kwds): ticket_manager = ticket_class.objects ticket_save = ticket_class.save ticket_delete = ticket_class.delete ticket_class.objects = DummyTicketManager(ticket_class, service, ticket) ticket_class.save = dummy ticket_class.delete = dummy ret = func(*args, **kwds) ticket_class.objects = ticket_manager ticket_class.save = ticket_save ticket_class.delete = ticket_delete return ret return wrapper return decorator def dummy_proxy(func): @functools.wraps(func) def wrapper(*args, **kwds): proxy_manager = models.Proxy.objects models.Proxy.objects = DummyProxyManager() ret = func(*args, **kwds) models.Proxy.objects = proxy_manager return ret return wrapper class DummyProxyManager(object): def create(self, **kwargs): for field in models.Proxy._meta.fields: field.allow_unsaved_instance_assignment = True return models.Proxy(**kwargs) class DummyTicketManager(object): def __init__(self, ticket_class, service, ticket): self.ticket_class = ticket_class self.service = service self.ticket = ticket def create(self, **kwargs): for field in self.ticket_class._meta.fields: field.allow_unsaved_instance_assignment = True return self.ticket_class(**kwargs) def filter(self, *args, **kwargs): return DummyQuerySet() def get(self, **kwargs): for field in self.ticket_class._meta.fields: field.allow_unsaved_instance_assignment = True if 'value' in kwargs: if kwargs['value'] != self.ticket: raise self.ticket_class.DoesNotExist() else: kwargs['value'] = self.ticket if 'service' in kwargs: if kwargs['service'] != self.service: raise self.ticket_class.DoesNotExist() else: kwargs['service'] = self.service if not 'user' in kwargs: kwargs['user'] = models.User(username="test") for field in models.ServiceTicket._meta.fields: field.allow_unsaved_instance_assignment = True for key in list(kwargs): if '__' in key: del kwargs[key] kwargs['attributs'] = {'mail': 'test@example.com'} kwargs['service_pattern'] = models.ServicePattern() return self.ticket_class(**kwargs) class DummySession(dict): session_key = "test_session" def set_expiry(self, int): pass def flush(self): self.clear() class DummyQuerySet(set): pass