Example #1
0
    def test_identifier(self):
        """
    Basic check for 'id' lines.
    """

        desc = Microdescriptor.create(
            {'id': 'rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4'})
        self.assertEqual({'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4'},
                         desc.identifiers)
        self.assertEqual('rsa1024', desc.identifier_type)
        self.assertEqual('Cd47okjCHD83YGzThGBDptXs9Z4', desc.identifier)

        # check when there's multiple key types

        desc_text = b'\n'.join((
            Microdescriptor.content(),
            b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4',
            b'id ed25519 50f6ddbecdc848dcc6b818b14d1',
        ))

        desc = Microdescriptor(desc_text, validate=True)
        self.assertEqual(
            {
                'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4',
                'ed25519': '50f6ddbecdc848dcc6b818b14d1'
            }, desc.identifiers)
        self.assertEqual('ed25519', desc.identifier_type)
        self.assertEqual('50f6ddbecdc848dcc6b818b14d1', desc.identifier)

        # check when there's conflicting keys

        desc_text = b'\n'.join((
            Microdescriptor.content(),
            b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4',
            b'id rsa1024 50f6ddbecdc848dcc6b818b14d1',
        ))

        desc = Microdescriptor(desc_text)
        self.assertEqual({}, desc.identifiers)

        exc_msg = "There can only be one 'id' line per a key type, but 'rsa1024' appeared multiple times"
        self.assertRaisesWith(ValueError,
                              exc_msg,
                              Microdescriptor,
                              desc_text,
                              validate=True)
Example #2
0
    def test_proceeding_line(self):
        """
    Includes a line prior to the 'onion-key' entry.
    """

        desc_text = b'family Amunet1\n' + Microdescriptor.content()
        self.assertRaises(ValueError, Microdescriptor, desc_text, True)

        desc = Microdescriptor(desc_text, validate=False)
        self.assertEqual(['Amunet1'], desc.family)
Example #3
0
  def test_proceeding_line(self):
    """
    Includes a line prior to the 'onion-key' entry.
    """

    desc_text = b'family Amunet1\n' + Microdescriptor.content()
    self.assertRaises(ValueError, Microdescriptor, desc_text, True)

    desc = Microdescriptor(desc_text, validate = False)
    self.assertEqual(['Amunet1'], desc.family)
Example #4
0
  def test_identifier(self):
    """
    Basic check for 'id' lines.
    """

    desc = Microdescriptor.create({'id': 'rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4'})
    self.assertEqual({'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4'}, desc.identifiers)
    self.assertEqual('rsa1024', desc.identifier_type)
    self.assertEqual('Cd47okjCHD83YGzThGBDptXs9Z4', desc.identifier)

    # check when there's multiple key types

    desc_text = b'\n'.join((
      Microdescriptor.content(),
      b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4',
      b'id ed25519 50f6ddbecdc848dcc6b818b14d1',
    ))

    desc = Microdescriptor(desc_text, validate = True)
    self.assertEqual({'rsa1024': 'Cd47okjCHD83YGzThGBDptXs9Z4', 'ed25519': '50f6ddbecdc848dcc6b818b14d1'}, desc.identifiers)
    self.assertEqual('ed25519', desc.identifier_type)
    self.assertEqual('50f6ddbecdc848dcc6b818b14d1', desc.identifier)

    # check when there's conflicting keys

    desc_text = b'\n'.join((
      Microdescriptor.content(),
      b'id rsa1024 Cd47okjCHD83YGzThGBDptXs9Z4',
      b'id rsa1024 50f6ddbecdc848dcc6b818b14d1',
    ))

    desc = Microdescriptor(desc_text)
    self.assertEqual({}, desc.identifiers)

    exc_msg = "There can only be one 'id' line per a key type, but 'rsa1024' appeared multiple times"
    self.assertRaisesRegexp(ValueError, exc_msg, Microdescriptor, desc_text, validate = True)
Example #5
0
    def test_a_line(self):
        """
    Sanity test with both an IPv4 and IPv6 address.
    """

        desc_text = Microdescriptor.content()
        desc_text += b'\na 10.45.227.253:9001'
        desc_text += b'\na [fd9f:2e19:3bcf::02:9970]:9001'

        expected = [
            ('10.45.227.253', 9001, False),
            ('fd9f:2e19:3bcf::02:9970', 9001, True),
        ]

        desc = Microdescriptor(desc_text)
        self.assertEqual(expected, desc.or_addresses)
Example #6
0
  def test_a_line(self):
    """
    Sanity test with both an IPv4 and IPv6 address.
    """

    desc_text = Microdescriptor.content()
    desc_text += b'\na 10.45.227.253:9001'
    desc_text += b'\na [fd9f:2e19:3bcf::02:9970]:9001'

    expected = [
      ('10.45.227.253', 9001, False),
      ('fd9f:2e19:3bcf::02:9970', 9001, True),
    ]

    desc = Microdescriptor(desc_text)
    self.assertEqual(expected, desc.or_addresses)
Example #7
0
    def test_family(self):
        """
    Check the family line.
    """

        desc = Microdescriptor.create({'family': 'Amunet1 Amunet2 Amunet3'})
        self.assertEqual(['Amunet1', 'Amunet2', 'Amunet3'], desc.family)

        # try multiple family lines

        desc_text = Microdescriptor.content()
        desc_text += b'\nfamily Amunet1'
        desc_text += b'\nfamily Amunet2'

        self.assertRaises(ValueError, Microdescriptor, desc_text, True)

        # family entries will overwrite each other
        desc = Microdescriptor(desc_text, validate=False)
        self.assertEqual(1, len(desc.family))
Example #8
0
  def test_family(self):
    """
    Check the family line.
    """

    desc = Microdescriptor.create({'family': 'Amunet1 Amunet2 Amunet3'})
    self.assertEqual(['Amunet1', 'Amunet2', 'Amunet3'], desc.family)

    # try multiple family lines

    desc_text = Microdescriptor.content()
    desc_text += b'\nfamily Amunet1'
    desc_text += b'\nfamily Amunet2'

    self.assertRaises(ValueError, Microdescriptor, desc_text, True)

    # family entries will overwrite each other
    desc = Microdescriptor(desc_text, validate = False)
    self.assertEqual(1, len(desc.family))