from twisted.trial.unittest import TestCase
from nevow.athena import LivePage
from nevow.context import WovenContext
from nevow.testutil import FakeRequest
from nevow.loaders import stan
from nevow.tags import html, head, body, directive
from nevow.inevow import IRequest
from axiom.store import Store
from axiom.userbase import LoginSystem
from axiom.dependency import installOn
from xmantissa.webadmin import (LocalUserBrowser,
UserInteractionFragment, EndowFragment, DepriveFragment,
SuspendFragment, UnsuspendFragment)
from xmantissa.product import Product
class UserInteractionFragmentTestCase(TestCase):
def setUp(self):
"""
Create a site store and a user store with a L{LocalUserBrowser}
installed on it.
"""
self.sitedir = self.mktemp()
self.siteStore = Store(self.sitedir)
self.loginSystem = LoginSystem(store=self.siteStore)
installOn(self.loginSystem, self.siteStore)
self.userStore = Store()
self.userStore.parent = self.siteStore
self.browser = LocalUserBrowser(store=self.userStore)
def test_createUser(self):
"""
Test that L{webadmin.UserInteractionFragment.createUser} method
actually creates a user.
"""
userInteractionFragment = UserInteractionFragment(self.browser)
userInteractionFragment.createUser(
u'testuser', u'localhost', u'password')
account = self.loginSystem.accountByAddress(u'testuser', u'localhost')
self.assertEquals(account.password, u'password')
def test_rendering(self):
"""
Test that L{webadmin.UserInteractionFragment} renders without raising
any exceptions.
"""
f = UserInteractionFragment(self.browser)
p = LivePage(
docFactory=stan(
html[
head(render=directive('liveglue')),
body(render=lambda ctx, data: f)]))
f.setFragmentParent(p)
ctx = WovenContext()
req = FakeRequest()
ctx.remember(req, IRequest)
d = p.renderHTTP(ctx)
def rendered(ign):
p.action_close(None)
d.addCallback(rendered)
return d
class EndowDepriveTestCase(TestCase):
def doRendering(self, fragmentClass):
"""
Ensure that the actions on the LocalUserBrowser scrolltable all render properly.
"""
sitedir = self.mktemp()
siteStore = Store(sitedir)
loginSystem = LoginSystem(store=siteStore)
installOn(loginSystem, siteStore)
p = Product(store=siteStore, types=["xmantissa.webadmin.LocalUserBrowser",
"xmantissa.signup.SignupConfiguration"])
account = loginSystem.addAccount(u'testuser', u'localhost', None)
p.installProductOn(account.avatars.open())
f = fragmentClass(None, u'testuser', account)
p = LivePage(
docFactory=stan(
html[
head(render=directive('liveglue')),
body(render=lambda ctx, data: f)]))
f.setFragmentParent(p)
ctx = WovenContext()
req = FakeRequest()
ctx.remember(req, IRequest)
d = p.renderHTTP(ctx)
def rendered(ign):
p.action_close(None)
d.addCallback(rendered)
return d
def test_endowRendering(self):
return self.doRendering(EndowFragment)
def test_depriveRendering(self):
return self.doRendering(DepriveFragment)
def test_suspendRendering(self):
return self.doRendering(SuspendFragment)
def test_unsuspendRendering(self):
return self.doRendering(UnsuspendFragment)
syntax highlighted by Code2HTML, v. 0.9.1