コード例 #1
0
    def test_item_validation(self):
        """Exercise WBO data validation"""
        (p, c, ah) = (self.profile, self.collection, self.auth_header)
        too_long_id = ''.join('x' for x in range(100))

        self.assert_('invalid id' in WBO.validate({'id': ''}))
        self.assert_('invalid id' in WBO.validate({'id': 'foo/bar'}))
        self.assert_('invalid id' in WBO.validate({'id': too_long_id}))
        self.assert_('invalid id' not in WBO.validate({'id': 'abcd'}))

        self.assert_('invalid collection' in WBO.validate({}))
        self.assert_('invalid collection' in WBO.validate(
            {'collection': Collection(name=too_long_id, profile=p)}))

        self.assert_('invalid predecessorid' in WBO.validate(
            {
                'collection': c,
                'predecessorid': too_long_id
            }))
        self.assert_(
            'invalid predecessorid' in WBO.validate({
                'collection': c,
                'predecessorid': 'abcdef'
            }))

        w = WBO(parent=c,
                collection=c,
                wbo_id='abcdef',
                modified=WBO.get_time_now(),
                payload='test')
        w.put()

        self.assert_('invalid predecessorid' not in WBO.validate(
            {
                'collection': c,
                'predecessorid': 'abcdef'
            }))

        self.assert_('invalid predecessorid' in WBO.validate(
            {
                'collection': c,
                'predecessorid': too_long_id
            }))
        self.assert_(
            'invalid predecessorid' in WBO.validate({
                'collection': c,
                'predecessorid': 'defghi'
            }))

        w = WBO(parent=c,
                collection=c,
                wbo_id='defghi',
                modified=WBO.get_time_now(),
                payload='test')
        w.put()

        self.assert_('invalid predecessorid' not in WBO.validate(
            {
                'collection': c,
                'predecessorid': 'abcdef'
            }))

        self.assert_(
            'invalid modified date' in WBO.validate({'modified': 'abc'}))
        self.assert_('no modification date' in WBO.validate({}))
        self.assert_('no modification date' in WBO.validate({'modified': ''}))

        self.assert_(
            'invalid sortindex' in WBO.validate({'sortindex': 'abcd'}))
        self.assert_(
            'invalid sortindex' in WBO.validate({'sortindex': -1000000000}))
        self.assert_(
            'invalid sortindex' in WBO.validate({'sortindex': 1000000000}))

        self.assert_('payload needs to be json-encoded' in WBO.validate(
            {'payload': 'abcd'}))
        self.assert_('payload too large' in WBO.validate(
            {'payload': 'x'.join('x' for x in range(500000))}))