tests/test-url.py
author Martin Geisler <mg@aragost.com>
Wed, 15 Dec 2010 16:35:09 +0100
changeset 13142 e9827c85c50b
parent 12865 4c50552fc9bc
child 13248 00411a4fa1bb
permissions -rw-r--r--
progress: test setting progress.width This also makes the tests readable in a 80-character terminal which is why I made the change to both tests.

import sys

def check(a, b):
    if a != b:
        print (a, b)

def cert(cn):
    return dict(subject=((('commonName', cn),),))

from mercurial.url import _verifycert

# Test non-wildcard certificates
check(_verifycert(cert('example.com'), 'example.com'),
      None)
check(_verifycert(cert('example.com'), 'www.example.com'),
      'certificate is for example.com')
check(_verifycert(cert('www.example.com'), 'example.com'),
      'certificate is for www.example.com')

# Test wildcard certificates
check(_verifycert(cert('*.example.com'), 'www.example.com'),
      None)
check(_verifycert(cert('*.example.com'), 'example.com'),
      'certificate is for *.example.com')
check(_verifycert(cert('*.example.com'), 'w.w.example.com'),
      'certificate is for *.example.com')

# Avoid some pitfalls
check(_verifycert(cert('*.foo'), 'foo'),
      'certificate is for *.foo')
check(_verifycert(cert('*o'), 'foo'),
      'certificate is for *o')

check(_verifycert({'subject': ()},
                  'example.com'),
      'no commonName found in certificate')
check(_verifycert(None, 'example.com'),
      'no certificate received')