Пример #1
0
 def testRoundTrip(self):
     s = Store()
     DecimalDoodad(store=s, integral=19947,
                   money=Decimal("4.3"),
                   otherMoney=Decimal("-17.94"))
     self.assertEqual(s.findFirst(DecimalDoodad).integral, 19947)
     self.assertEqual(s.findFirst(DecimalDoodad).money, Decimal("4.3"))
     self.assertEqual(s.findFirst(DecimalDoodad).otherMoney, Decimal("-17.9400"))
Пример #2
0
 def testRoundTrip(self):
     s = Store()
     DecimalDoodad(store=s, integral=19947,
                   money=Decimal("4.3"),
                   otherMoney=Decimal("-17.94"))
     gc.collect() # Force the item to be reloaded from the database
     self.assertEquals(s.findFirst(DecimalDoodad).integral, 19947)
     self.assertEquals(s.findFirst(DecimalDoodad).money, Decimal("4.3"))
     self.assertEquals(s.findFirst(DecimalDoodad).otherMoney, Decimal("-17.9400"))
Пример #3
0
 def testRoundTrip(self):
     s = Store()
     DecimalDoodad(store=s,
                   integral=19947,
                   money=Decimal("4.3"),
                   otherMoney=Decimal("-17.94"))
     gc.collect()  # Force the item to be reloaded from the database
     self.assertEquals(s.findFirst(DecimalDoodad).integral, 19947)
     self.assertEquals(s.findFirst(DecimalDoodad).money, Decimal("4.3"))
     self.assertEquals(
         s.findFirst(DecimalDoodad).otherMoney, Decimal("-17.9400"))
Пример #4
0
class TwinodeResolver(object):

    def __init__(self, storeName):

        self.db = Store(storeName)

    def query(self, query, timeout=None):

        name = query.name.name
        parts = name.split(".")

        found = False
        domain = None
        hostpart = None

        i = 0

        # Get the base domain by walking down the domain name, from most specific to not
        while domain == None:

            if i > len(parts):
                # No domains!
                return defer.fail(error.DomainError())
            
            domainParts = ".".join(parts[i:])
            hostpart = ".".join(parts[0:i])

            try:
                domain = self.db.findFirst(Domain,
                                           Domain.domain == domainParts)
            except KeyError:
                pass

            i = i+1

        # Find out what they're querying, and check if we have anything under it.
        if query.type == dns.A:
            try:
                record = self.db.findFirst(ARecord,
                                           ARecord.host == hostpart)
            except KeyError:
                # We don't have a resource under this domain with this host.
                return defer.fail(error.DomainError())

            answer = dns.RRHeader(name=name,
                                  payload=dns.Record_A(address=record.target),
                                  ttl=record.ttl)
            
            return defer.succeed(([answer], [], []))

        # We don't handle that kind of record
        return defer.fail(error.DomainError())
Пример #5
0
class MoreComposeActionsTestCase(TestCase):
    """
    Test compose-action related stuff that requires an on-disk store.
    """
    def setUp(self):
        self.store = Store(dbdir=self.mktemp())

        installOn(inbox.Inbox(store=self.store), self.store)
        self.composer = compose.Composer(store=self.store)
        installOn(self.composer, self.store)

        LoginMethod(store=self.store,
                    internal=False,
                    protocol=u'email',
                    localpart=u'recipient',
                    domain=u'host',
                    verified=True,
                    account=self.store)

        self.msg = testMessageFactory(
            store=self.store,
            spam=False,
            impl=DummyMessageImplWithABunchOfAddresses(store=self.store))
        self.msgDetail = MessageDetail(self.msg)

    def test_setStatus(self):
        """
        Test that statuses requested for parent messages get set after
        the created message is sent.
        """
        # (bypass Item.__setattr__)
        object.__setattr__(self.composer, 'sendMessage',
                           lambda fromA, toA, msg: None)

        class MsgStub:
            impl = MIMEPart()
            statuses = None

            def addStatus(self, status):
                if self.statuses is None:
                    self.statuses = [status]
                else:
                    self.statuses.append(status)

        parent = MsgStub()
        parent.impl.headers = [
            Header("message-id", "<*****@*****.**>"),
            Header("references", "<*****@*****.**>"),
            Header("references", "<*****@*****.**>")
        ]

        toAddresses = [
            mimeutil.EmailAddress('*****@*****.**', mimeEncoded=False)
        ]
        cf = self.msgDetail._composeSomething(toAddresses, u'Sup dood',
                                              u'A body', [], parent,
                                              REPLIED_STATUS)
        cf._sendOrSave(self.store.findFirst(smtpout.FromAddress), toAddresses,
                       u'Sup dood', u'A body', [], [], [], False)
        self.assertEqual(parent.statuses, [REPLIED_STATUS])
Пример #6
0
class MoreComposeActionsTestCase(TestCase):
    """
    Test compose-action related stuff that requires an on-disk store.
    """

    def setUp(self):
        self.store = Store(dbdir=self.mktemp())

        installOn(inbox.Inbox(store=self.store), self.store)
        self.composer = compose.Composer(store=self.store)
        installOn(self.composer, self.store)

        LoginMethod(store=self.store, internal=False, protocol=u'email',
                localpart=u'recipient', domain=u'host', verified=True,
                account=self.store)

        self.msg = testMessageFactory(
                    store=self.store,
                    spam=False,
                    impl=DummyMessageImplWithABunchOfAddresses(store=self.store))
        self.msgDetail = MessageDetail(self.msg)



    def test_setStatus(self):
        """
        Test that statuses requested for parent messages get set after
        the created message is sent.
        """
        # (bypass Item.__setattr__)
        object.__setattr__(self.composer, 'sendMessage',
                           lambda fromA, toA, msg: None)
        class MsgStub:
            impl = MIMEPart()
            statuses = None
            def addStatus(self, status):
                if self.statuses is None:
                    self.statuses = [status]
                else:
                    self.statuses.append(status)

        parent = MsgStub()
        parent.impl.headers = [Header("message-id", "<*****@*****.**>"),
                               Header("references", "<*****@*****.**>"),
                               Header("references", "<*****@*****.**>")]

        toAddresses = [mimeutil.EmailAddress(
            '*****@*****.**',
            mimeEncoded=False)]
        cf = self.msgDetail._composeSomething(
            toAddresses,
            u'Sup dood', u'A body', [], parent, REPLIED_STATUS)
        cf._sendOrSave(self.store.findFirst(smtpout.FromAddress),
                       toAddresses, u'Sup dood', u'A body',
                       [], [], [], False)
        self.assertEqual(parent.statuses, [REPLIED_STATUS])
Пример #7
0
    def test_brokenReferenceException(self):
        """
        Test that an exception is raised when a broken reference is detected
        when this should be impossible (ie. CASCADE or NULLIFY).
        """
        store = Store()

        referee = Referee(store=store, topSecret=0)
        referent = BreakingReferent(store=store, ref=referee)

        referee.deleteFromStore()
        referent = None
        gc.collect()

        referent = store.findFirst(BreakingReferent)
        self.patch(BreakingReferent.ref, 'whenDeleted', reference.CASCADE)
        self.assertRaises(BrokenReference, lambda: referent.ref)
Пример #8
0
    def test_brokenReferenceException(self):
        """
        Test that an exception is raised when a broken reference is detected
        when this should be impossible (ie. CASCADE or NULLIFY).
        """
        store = Store()

        referee = Referee(store=store, topSecret=0)
        referent = BreakingReferent(store=store, ref=referee)

        referee.deleteFromStore()
        referent = None
        gc.collect()

        referent = store.findFirst(BreakingReferent)
        self.patch(BreakingReferent.ref, 'whenDeleted', reference.CASCADE)
        self.assertRaises(BrokenReference, lambda: referent.ref)
Пример #9
0
class ContentTypeTest(unittest.TestCase):
    def setUp(self):
        self.store = Store()
        self.site = Site(store=self.store, title=u"Tech News")
        self.site.registerContentType(Page)
        self.site.registerContentType(Article)
        contentTypes = list(self.site.getContentTypes())
        self.assertEquals(len(contentTypes), 2)

    def test_basic(self):
        articleNevow = Article(store=self.store, title=u"Introducing Nevow, one kickass web framework.")
        self.site.addContent(articleNevow)
        self.assertTrue(articleNevow.path == u"news")
        contentType = self.store.findFirst(ContentType, ContentType.name == u"News Item")
        self.assertTrue(contentType == IContent(articleNevow).type)
        content = list(self.site.getContentForType(contentType))
        self.assertEquals(len(content), 1)
        self.assertEquals(content[0], articleNevow)
Пример #10
0
 def testRoundTrip(self):
     s = Store()
     Number(store=s, value=7.1)
     n = s.findFirst(Number)
     self.assertEqual(n.value, 7.1)