hgext/phabricator.py
changeset 43264 a4da1c3b82ab
parent 43263 06a33a501aa2
child 43282 47946f08e463
equal deleted inserted replaced
43263:06a33a501aa2 43264:a4da1c3b82ab
   142     fullflags = flags + _VCR_FLAGS
   142     fullflags = flags + _VCR_FLAGS
   143 
   143 
   144     def hgmatcher(r1, r2):
   144     def hgmatcher(r1, r2):
   145         if r1.uri != r2.uri or r1.method != r2.method:
   145         if r1.uri != r2.uri or r1.method != r2.method:
   146             return False
   146             return False
   147         r1params = r1.body.split(b'&')
   147         r1params = util.urlreq.parseqs(r1.body)
   148         r2params = r2.body.split(b'&')
   148         r2params = util.urlreq.parseqs(r2.body)
   149         return set(r1params) == set(r2params)
   149         for key in r1params:
       
   150             if key not in r2params:
       
   151                 return False
       
   152             value = r1params[key][0]
       
   153             # we want to compare json payloads without worrying about ordering
       
   154             if value.startswith(b'{') and value.endswith(b'}'):
       
   155                 r1json = json.loads(value)
       
   156                 r2json = json.loads(r2params[key][0])
       
   157                 if r1json != r2json:
       
   158                     return False
       
   159             elif r2params[key][0] != value:
       
   160                 return False
       
   161         return True
   150 
   162 
   151     def sanitiserequest(request):
   163     def sanitiserequest(request):
   152         request.body = re.sub(
   164         request.body = re.sub(
   153             br'cli-[a-z0-9]+', br'cli-hahayouwish', request.body
   165             br'cli-[a-z0-9]+', br'cli-hahayouwish', request.body
   154         )
   166         )