Пример #1
0
 def setUp(self):
     from acme.messages import Error, ERROR_PREFIX
     self.error = Error.with_code('malformed', detail='foo', title='title')
     self.jobj = {
         'detail': 'foo',
         'title': 'some title',
         'type': ERROR_PREFIX + 'malformed',
     }
     self.error_custom = Error(typ='custom', detail='bar')
     self.empty_error = Error()
Пример #2
0
 def setUp(self):
     from acme.messages import Error
     self.error = Error(
         detail='foo', typ='urn:acme:error:malformed', title='title')
     self.jobj = {
         'detail': 'foo',
         'title': 'some title',
         'type': 'urn:acme:error:malformed',
     }
     self.error_custom = Error(typ='custom', detail='bar')
     self.jobj_cusom = {'type': 'custom', 'detail': 'bar'}
Пример #3
0
 def setUp(self):
     from acme.messages import Error, ERROR_PREFIX, Identifier, IDENTIFIER_FQDN
     self.error = Error.with_code('malformed', detail='foo', title='title')
     self.jobj = {
         'detail': 'foo',
         'title': 'some title',
         'type': ERROR_PREFIX + 'malformed',
     }
     self.error_custom = Error(typ='custom', detail='bar')
     self.identifier = Identifier(typ=IDENTIFIER_FQDN, value='example.com')
     self.subproblem = Error.with_code('caa', detail='bar', title='title', identifier=self.identifier)
     self.error_with_subproblems = Error.with_code('malformed', detail='foo', title='title', subproblems=[self.subproblem])
     self.empty_error = Error()
Пример #4
0
    def setUp(self):
        from acme.messages import Error
        self.msg = Error(
            error='badCSR',
            message='RSA keys must be at least 2048 bits long',
            more_info='https://ca.example.com/documentation/csr-requirements')

        self.jmsg = {
            'type': 'error',
            'error': 'badCSR',
            'message': 'RSA keys must be at least 2048 bits long',
            'moreInfo':
            'https://ca.example.com/documentation/csr-requirements',
        }
Пример #5
0
class ErrorTest(unittest.TestCase):
    def setUp(self):
        from acme.messages import Error
        self.msg = Error(
            error='badCSR',
            message='RSA keys must be at least 2048 bits long',
            more_info='https://ca.example.com/documentation/csr-requirements')

        self.jmsg = {
            'type': 'error',
            'error': 'badCSR',
            'message': 'RSA keys must be at least 2048 bits long',
            'moreInfo':
            'https://ca.example.com/documentation/csr-requirements',
        }

    def test_to_partial_json(self):
        self.assertEqual(self.msg.to_partial_json(), self.jmsg)

    def test_from_json(self):
        from acme.messages import Error
        self.assertEqual(Error.from_json(self.jmsg), self.msg)

    def test_json_without_optionals(self):
        del self.jmsg['message']
        del self.jmsg['moreInfo']

        from acme.messages import Error
        msg = Error.from_json(self.jmsg)

        self.assertTrue(msg.message is None)
        self.assertTrue(msg.more_info is None)
        self.assertEqual(self.jmsg, msg.to_partial_json())
Пример #6
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""

    def setUp(self):
        from acme.messages import Error
        self.error = Error(
            detail='foo', typ='urn:acme:error:malformed', title='title')
        self.jobj = {
            'detail': 'foo',
            'title': 'some title',
            'type': 'urn:acme:error:malformed',
        }
        self.error_custom = Error(typ='custom', detail='bar')
        self.jobj_cusom = {'type': 'custom', 'detail': 'bar'}

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_description(self):
        self.assertEqual(
            'The request message was malformed', self.error.description)
        self.assertTrue(self.error_custom.description is None)

    def test_str(self):
        self.assertEqual(
            'urn:acme:error:malformed :: The request message was '
            'malformed :: foo :: title', str(self.error))
        self.assertEqual('custom :: bar', str(self.error_custom))
Пример #7
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""

    def setUp(self):
        from acme.messages import Error
        self.error = Error(
            detail='foo', typ='urn:acme:error:malformed', title='title')
        self.jobj = {
            'detail': 'foo',
            'title': 'some title',
            'type': 'urn:acme:error:malformed',
        }
        self.error_custom = Error(typ='custom', detail='bar')
        self.jobj_cusom = {'type': 'custom', 'detail': 'bar'}

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_description(self):
        self.assertEqual(
            'The request message was malformed', self.error.description)
        self.assertTrue(self.error_custom.description is None)

    def test_str(self):
        self.assertEqual(
            'urn:acme:error:malformed :: The request message was '
            'malformed :: foo :: title', str(self.error))
        self.assertEqual('custom :: bar', str(self.error_custom))
Пример #8
0
 def test_is_acme_error(self):
     from acme.messages import is_acme_error, Error
     self.assertTrue(is_acme_error(self.error))
     self.assertFalse(is_acme_error(self.error_custom))
     self.assertFalse(is_acme_error(Error()))
     self.assertFalse(is_acme_error(self.empty_error))
     self.assertFalse(is_acme_error("must pet all the {dogs|rabbits}"))
Пример #9
0
    def setUp(self):
        self.chall = challenges.DNS(token=jose.b64decode(
            'evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA'))

        from acme.messages import ChallengeBody
        from acme.messages import Error
        from acme.messages import STATUS_INVALID
        self.status = STATUS_INVALID
        error = Error(typ='serverInternal',
                      detail='Unable to communicate with DNS server')
        self.challb = ChallengeBody(
            uri='http://challb', chall=self.chall, status=self.status,
            error=error)

        self.jobj_to = {
            'uri': 'http://challb',
            'status': self.status,
            'type': 'dns',
            'token': 'evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA',
            'error': error,
        }
        self.jobj_from = self.jobj_to.copy()
        self.jobj_from['status'] = 'invalid'
        self.jobj_from['error'] = {
            'type': 'urn:acme:error:serverInternal',
            'detail': 'Unable to communicate with DNS server',
        }
class ErrorTest(unittest.TestCase):

    def setUp(self):
        from acme.messages import Error
        self.msg = Error(
            error='badCSR', message='RSA keys must be at least 2048 bits long',
            more_info='https://ca.example.com/documentation/csr-requirements')

        self.jmsg = {
            'type': 'error',
            'error': 'badCSR',
            'message':'RSA keys must be at least 2048 bits long',
            'moreInfo': 'https://ca.example.com/documentation/csr-requirements',
        }

    def test_to_partial_json(self):
        self.assertEqual(self.msg.to_partial_json(), self.jmsg)

    def test_from_json(self):
        from acme.messages import Error
        self.assertEqual(Error.from_json(self.jmsg), self.msg)

    def test_json_without_optionals(self):
        del self.jmsg['message']
        del self.jmsg['moreInfo']

        from acme.messages import Error
        msg = Error.from_json(self.jmsg)

        self.assertTrue(msg.message is None)
        self.assertTrue(msg.more_info is None)
        self.assertEqual(self.jmsg, msg.to_partial_json())
Пример #11
0
    def test_from_json_with_subproblems(self):
        from acme.messages import Error

        parsed_error = Error.from_json(self.error_with_subproblems.to_json())

        self.assertEqual(1, len(parsed_error.subproblems))
        self.assertEqual(self.subproblem, parsed_error.subproblems[0])
Пример #12
0
 def test_unicode_error(self):
     from acme.messages import Error, is_acme_error
     arabic_error = Error.with_code(
         'malformed',
         detail=u'\u0639\u062f\u0627\u0644\u0629',
         title='title')
     self.assertTrue(is_acme_error(arabic_error))
Пример #13
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""
    def setUp(self):
        from acme.messages import Error, ERROR_PREFIX
        self.error = Error(detail='foo',
                           typ=ERROR_PREFIX + 'malformed',
                           title='title')
        self.jobj = {
            'detail': 'foo',
            'title': 'some title',
            'type': ERROR_PREFIX + 'malformed',
        }
        self.error_custom = Error(typ='custom', detail='bar')
        self.empty_error = Error()
        self.jobj_custom = {'type': 'custom', 'detail': 'bar'}

    def test_default_typ(self):
        from acme.messages import Error
        self.assertEqual(Error().typ, 'about:blank')

    def test_from_json_empty(self):
        from acme.messages import Error
        self.assertEqual(Error(), Error.from_json('{}'))

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_description(self):
        self.assertEqual('The request message was malformed',
                         self.error.description)
        self.assertTrue(self.error_custom.description is None)

    def test_code(self):
        from acme.messages import Error
        self.assertEqual('malformed', self.error.code)
        self.assertEqual(None, self.error_custom.code)
        self.assertEqual(None, Error().code)

    def test_is_acme_error(self):
        from acme.messages import is_acme_error
        self.assertTrue(is_acme_error(self.error))
        self.assertFalse(is_acme_error(self.error_custom))
        self.assertFalse(is_acme_error(self.empty_error))
        self.assertFalse(is_acme_error("must pet all the {dogs|rabbits}"))

    def test_unicode_error(self):
        from acme.messages import Error, ERROR_PREFIX, is_acme_error
        arabic_error = Error(detail=u'\u0639\u062f\u0627\u0644\u0629',
                             typ=ERROR_PREFIX + 'malformed',
                             title='title')
        self.assertTrue(is_acme_error(arabic_error))

    def test_with_code(self):
        from acme.messages import Error, is_acme_error
        self.assertTrue(is_acme_error(Error.with_code('badCSR')))
        self.assertRaises(ValueError, Error.with_code,
                          'not an ACME error code')
Пример #14
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""

    def setUp(self):
        from acme.messages import Error, ERROR_PREFIX
        self.error = Error(
            detail='foo', typ=ERROR_PREFIX + 'malformed', title='title')
        self.jobj = {
            'detail': 'foo',
            'title': 'some title',
            'type': ERROR_PREFIX + 'malformed',
        }
        self.error_custom = Error(typ='custom', detail='bar')
        self.empty_error = Error()
        self.jobj_custom = {'type': 'custom', 'detail': 'bar'}

    def test_default_typ(self):
        from acme.messages import Error
        self.assertEqual(Error().typ, 'about:blank')

    def test_from_json_empty(self):
        from acme.messages import Error
        self.assertEqual(Error(), Error.from_json('{}'))

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_description(self):
        self.assertEqual(
            'The request message was malformed', self.error.description)
        self.assertTrue(self.error_custom.description is None)

    def test_code(self):
        from acme.messages import Error
        self.assertEqual('malformed', self.error.code)
        self.assertEqual(None, self.error_custom.code)
        self.assertEqual(None, Error().code)

    def test_is_acme_error(self):
        from acme.messages import is_acme_error
        self.assertTrue(is_acme_error(self.error))
        self.assertFalse(is_acme_error(self.error_custom))
        self.assertFalse(is_acme_error(self.empty_error))
        self.assertFalse(is_acme_error("must pet all the {dogs|rabbits}"))

    def test_unicode_error(self):
        from acme.messages import Error, ERROR_PREFIX, is_acme_error
        arabic_error = Error(
                detail=u'\u0639\u062f\u0627\u0644\u0629', typ=ERROR_PREFIX + 'malformed',
            title='title')
        self.assertTrue(is_acme_error(arabic_error))

    def test_with_code(self):
        from acme.messages import Error, is_acme_error
        self.assertTrue(is_acme_error(Error.with_code('badCSR')))
        self.assertRaises(ValueError, Error.with_code, 'not an ACME error code')
Пример #15
0
    def test_json_without_optionals(self):
        del self.jmsg['message']
        del self.jmsg['moreInfo']

        from acme.messages import Error
        msg = Error.from_json(self.jmsg)

        self.assertTrue(msg.message is None)
        self.assertTrue(msg.more_info is None)
        self.assertEqual(self.jmsg, msg.to_partial_json())
Пример #16
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""
    def setUp(self):
        from acme.messages import Error
        self.error = Error(detail='foo', typ='malformed', title='title')
        self.jobj = {'detail': 'foo', 'title': 'some title'}

    def test_typ_prefix(self):
        self.assertEqual('malformed', self.error.typ)
        self.assertEqual('urn:acme:error:malformed',
                         self.error.to_partial_json()['type'])
        self.assertEqual(
            'malformed',
            self.error.from_json(self.error.to_partial_json()).typ)

    def test_typ_decoder_missing_prefix(self):
        from acme.messages import Error
        self.jobj['type'] = 'malformed'
        self.assertRaises(jose.DeserializationError, Error.from_json,
                          self.jobj)
        self.jobj['type'] = 'not valid bare type'
        self.assertRaises(jose.DeserializationError, Error.from_json,
                          self.jobj)

    def test_typ_decoder_not_recognized(self):
        from acme.messages import Error
        self.jobj['type'] = 'urn:acme:error:baz'
        self.assertRaises(jose.DeserializationError, Error.from_json,
                          self.jobj)

    def test_description(self):
        self.assertEqual('The request message was malformed',
                         self.error.description)

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_str(self):
        self.assertEqual(
            'malformed :: The request message was malformed :: foo',
            str(self.error))
        self.assertEqual('foo', str(self.error.update(typ=None)))
    def test_json_without_optionals(self):
        del self.jmsg['message']
        del self.jmsg['moreInfo']

        from acme.messages import Error
        msg = Error.from_json(self.jmsg)

        self.assertTrue(msg.message is None)
        self.assertTrue(msg.more_info is None)
        self.assertEqual(self.jmsg, msg.to_partial_json())
Пример #18
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""
    def setUp(self):
        from acme.messages import Error, ERROR_PREFIX
        self.error = Error(detail='foo',
                           typ=ERROR_PREFIX + 'malformed',
                           title='title')
        self.jobj = {
            'detail': 'foo',
            'title': 'some title',
            'type': ERROR_PREFIX + 'malformed',
        }
        self.error_custom = Error(typ='custom', detail='bar')
        self.jobj_custom = {'type': 'custom', 'detail': 'bar'}

    def test_default_typ(self):
        from acme.messages import Error
        self.assertEqual(Error().typ, 'about:blank')

    def test_from_json_empty(self):
        from acme.messages import Error
        self.assertEqual(Error(), Error.from_json('{}'))

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_description(self):
        self.assertEqual('The request message was malformed',
                         self.error.description)
        self.assertTrue(self.error_custom.description is None)

    def test_str(self):
        self.assertEqual(
            'urn:ietf:params:acme:error:malformed :: The request message was '
            'malformed :: foo :: title', str(self.error))
        self.assertEqual('custom :: bar', str(self.error_custom))

    def test_code(self):
        from acme.messages import Error
        self.assertEqual('malformed', self.error.code)
        self.assertEqual(None, self.error_custom.code)
        self.assertEqual(None, Error().code)

    def test_is_acme_error(self):
        from acme.messages import is_acme_error
        self.assertTrue(is_acme_error(self.error))
        self.assertTrue(is_acme_error(str(self.error)))
        self.assertFalse(is_acme_error(self.error_custom))

    def test_with_code(self):
        from acme.messages import Error, is_acme_error
        self.assertTrue(is_acme_error(Error.with_code('badCSR')))
        self.assertRaises(ValueError, Error.with_code,
                          'not an ACME error code')
Пример #19
0
 def setUp(self):
     from acme.messages import Error
     self.error = Error(
         detail='foo', typ='urn:acme:error:malformed', title='title')
     self.jobj = {
         'detail': 'foo',
         'title': 'some title',
         'type': 'urn:acme:error:malformed',
     }
     self.error_custom = Error(typ='custom', detail='bar')
     self.jobj_cusom = {'type': 'custom', 'detail': 'bar'}
Пример #20
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""

    def setUp(self):
        from acme.messages import Error, ERROR_PREFIX
        self.error = Error(
            detail='foo', typ=ERROR_PREFIX + 'malformed', title='title')
        self.jobj = {
            'detail': 'foo',
            'title': 'some title',
            'type': ERROR_PREFIX + 'malformed',
        }
        self.error_custom = Error(typ='custom', detail='bar')
        self.jobj_custom = {'type': 'custom', 'detail': 'bar'}

    def test_default_typ(self):
        from acme.messages import Error
        self.assertEqual(Error().typ, 'about:blank')

    def test_from_json_empty(self):
        from acme.messages import Error
        self.assertEqual(Error(), Error.from_json('{}'))

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_description(self):
        self.assertEqual(
            'The request message was malformed', self.error.description)
        self.assertTrue(self.error_custom.description is None)

    def test_str(self):
        self.assertEqual(
            'urn:ietf:params:acme:error:malformed :: The request message was '
            'malformed :: foo :: title', str(self.error))
        self.assertEqual('custom :: bar', str(self.error_custom))

    def test_code(self):
        from acme.messages import Error
        self.assertEqual('malformed', self.error.code)
        self.assertEqual(None, self.error_custom.code)
        self.assertEqual(None, Error().code)

    def test_is_acme_error(self):
        from acme.messages import is_acme_error
        self.assertTrue(is_acme_error(self.error))
        self.assertTrue(is_acme_error(str(self.error)))
        self.assertFalse(is_acme_error(self.error_custom))

    def test_with_code(self):
        from acme.messages import Error, is_acme_error
        self.assertTrue(is_acme_error(Error.with_code('badCSR')))
        self.assertRaises(ValueError, Error.with_code, 'not an ACME error code')
Пример #21
0
 def setUp(self):
     from acme.messages import Error, ERROR_PREFIX
     self.error = Error(
         detail='foo', typ=ERROR_PREFIX + 'malformed', title='title')
     self.jobj = {
         'detail': 'foo',
         'title': 'some title',
         'type': ERROR_PREFIX + 'malformed',
     }
     self.error_custom = Error(typ='custom', detail='bar')
     self.jobj_custom = {'type': 'custom', 'detail': 'bar'}
    def setUp(self):
        from acme.messages import Error
        self.msg = Error(
            error='badCSR', message='RSA keys must be at least 2048 bits long',
            more_info='https://ca.example.com/documentation/csr-requirements')

        self.jmsg = {
            'type': 'error',
            'error': 'badCSR',
            'message':'RSA keys must be at least 2048 bits long',
            'moreInfo': 'https://ca.example.com/documentation/csr-requirements',
        }
Пример #23
0
class ErrorTest(unittest.TestCase):
    """Tests for acme.messages.Error."""

    def setUp(self):
        from acme.messages import Error
        self.error = Error(detail='foo', typ='malformed', title='title')
        self.jobj = {'detail': 'foo', 'title': 'some title'}

    def test_typ_prefix(self):
        self.assertEqual('malformed', self.error.typ)
        self.assertEqual(
            'urn:acme:error:malformed', self.error.to_partial_json()['type'])
        self.assertEqual(
            'malformed', self.error.from_json(self.error.to_partial_json()).typ)

    def test_typ_decoder_missing_prefix(self):
        from acme.messages import Error
        self.jobj['type'] = 'malformed'
        self.assertRaises(jose.DeserializationError, Error.from_json, self.jobj)
        self.jobj['type'] = 'not valid bare type'
        self.assertRaises(jose.DeserializationError, Error.from_json, self.jobj)

    def test_typ_decoder_not_recognized(self):
        from acme.messages import Error
        self.jobj['type'] = 'urn:acme:error:baz'
        self.assertRaises(jose.DeserializationError, Error.from_json, self.jobj)

    def test_description(self):
        self.assertEqual(
            'The request message was malformed', self.error.description)

    def test_from_json_hashable(self):
        from acme.messages import Error
        hash(Error.from_json(self.error.to_json()))

    def test_str(self):
        self.assertEqual(
            'malformed :: The request message was malformed :: foo',
            str(self.error))
        self.assertEqual('foo', str(self.error.update(typ=None)))
Пример #24
0
 def test_with_code(self):
     from acme.messages import Error, is_acme_error
     self.assertTrue(is_acme_error(Error.with_code('badCSR')))
     self.assertRaises(ValueError, Error.with_code, 'not an ACME error code')
 def test_from_json(self):
     from acme.messages import Error
     self.assertEqual(Error.from_json(self.jmsg), self.msg)
Пример #26
0
 def test_code(self):
     from acme.messages import Error
     self.assertEqual('malformed', self.error.code)
     self.assertEqual(None, self.error_custom.code)
     self.assertEqual(None, Error().code)
Пример #27
0
 def test_from_json_empty(self):
     from acme.messages import Error
     self.assertEqual(Error(), Error.from_json('{}'))
Пример #28
0
 def test_default_typ(self):
     from acme.messages import Error
     self.assertEqual(Error().typ, 'about:blank')
Пример #29
0
 def test_unicode_error(self):
     from acme.messages import Error, ERROR_PREFIX, is_acme_error
     arabic_error = Error(
             detail=u'\u0639\u062f\u0627\u0644\u0629', typ=ERROR_PREFIX + 'malformed',
         title='title')
     self.assertTrue(is_acme_error(arabic_error))
Пример #30
0
 def test_from_json(self):
     from acme.messages import Error
     self.assertEqual(Error.from_json(self.jmsg), self.msg)
Пример #31
0
 def setUp(self):
     from acme.messages import Error
     self.error = Error(detail='foo', typ='malformed', title='title')
     self.jobj = {'detail': 'foo', 'title': 'some title'}
Пример #32
0
 def test_from_json_empty(self):
     from acme.messages import Error
     self.assertEqual(Error(), Error.from_json('{}'))
Пример #33
0
 def test_from_json_hashable(self):
     from acme.messages import Error
     hash(Error.from_json(self.error.to_json()))
Пример #34
0
 def test_with_code(self):
     from acme.messages import Error, is_acme_error
     self.assertTrue(is_acme_error(Error.with_code('badCSR')))
     self.assertRaises(ValueError, Error.with_code, 'not an ACME error code')