def test_matcher(): matcher = ETagMatcher(["ETAGS"]) matcher = ETagMatcher(["ETAGS"]) assert matcher.etags == ["ETAGS"] assert "ETAGS" in matcher assert "WEAK" not in matcher assert "BEER" not in matcher assert None not in matcher assert repr(matcher) == "<ETag ETAGS>" assert str(matcher) == '"ETAGS"' matcher2 = ETagMatcher(("ETAG1", "ETAG2")) assert repr(matcher2) == "<ETag ETAG1 or ETAG2>"
def test_matcher(): matcher = ETagMatcher(['ETAGS']) matcher = ETagMatcher(['ETAGS']) eq_(matcher.etags, ['ETAGS']) assert_raises(DeprecationWarning, matcher.weak_match, "etag") assert "ETAGS" in matcher assert "WEAK" not in matcher assert "BEER" not in matcher assert None not in matcher eq_(repr(matcher), '<ETag ETAGS>') eq_(str(matcher), '"ETAGS"') matcher2 = ETagMatcher(("ETAG1", "ETAG2")) eq_(repr(matcher2), '<ETag ETAG1 or ETAG2>')
def test_matcher(): matcher = ETagMatcher(['ETAGS']) matcher = ETagMatcher(['ETAGS']) assert matcher.etags == ['ETAGS'] with pytest.raises(DeprecationWarning): matcher.weak_match("etag") assert "ETAGS" in matcher assert "WEAK" not in matcher assert "BEER" not in matcher assert None not in matcher assert repr(matcher) == '<ETag ETAGS>' assert str(matcher) == '"ETAGS"' matcher2 = ETagMatcher(("ETAG1","ETAG2")) assert repr(matcher2) == '<ETag ETAG1 or ETAG2>'
def _parse_etag(value, default=True): if value is None: value = '' value = value.strip() if not value: if default: return AnyETag else: return NoETag if value == '*': return AnyETag else: return ETagMatcher.parse(value)
def check_etag(request, etag): """ returns a response if the request contains an if-none-match header that matches the given etag. returns None if the request should proceed as normal. """ rtags = request.headers.get('if-none-match', None) if rtags is None: return None # spec requires that only GET and HEAD may be used if request.method not in ['GET', 'HEAD']: return HttpResponse(status=412) # precondition failed matcher = ETagMatcher.parse(rtags) if etag in matcher: return HttpResponse(status=304, headers=[('etag', etag)]) else: return None
def test_matcher(): matcher = ETagMatcher(['ETAGS']) matcher = ETagMatcher(['ETAGS']) assert matcher.etags == ['ETAGS'] with pytest.raises(DeprecationWarning): matcher.weak_match("etag") assert "ETAGS" in matcher assert "WEAK" not in matcher assert "BEER" not in matcher assert None not in matcher assert repr(matcher) == '<ETag ETAGS>' assert str(matcher) == '"ETAGS"' matcher2 = ETagMatcher(("ETAG1", "ETAG2")) assert repr(matcher2) == '<ETag ETAG1 or ETAG2>'
def test_parse_commasep(self): et = ETagMatcher.parse('"ONE", "TWO"') assert et.etags, ["ONE" == "TWO"]
def test_parse_anyetag(self): # these tests smell bad, are they useful? et = ETagMatcher.parse("*") assert et.__dict__ == {} assert et.__repr__() == "<ETag *>"
def test_parse_quoted_two_weak(self): et = ETagMatcher.parse('"ONE", W/"TWO"') self.assertEqual(et.etags, ['ONE']) self.assertEqual(et.weak_etags, ['TWO'])
def test_parse_wo_close_quote(self): # Unsure if this is testing likely input et = ETagMatcher.parse('"ONE') self.assertEqual(et.etags, ['ONE']) self.assertEqual(et.weak_etags, [])
def test_parse_commasep_w_weak(self): et = ETagMatcher.parse('ONE, w/TWO') self.assertEqual(et.etags, ['ONE']) self.assertEqual(et.weak_etags, ['TWO'])
def test_parse_quoted_two(self): et = ETagMatcher.parse('"ONE", "TWO"') self.assertEqual(et.etags, ['ONE', 'TWO'])
def test_parse_one(self): et = ETagMatcher.parse('ONE') self.assertEqual(et.etags, ['ONE']) self.assertEqual(et.weak_etags, [])
def test_parse_invalid(self): for tag in ['one', 'one, two', '"one two']: et = ETagMatcher.parse(tag) self.assertEqual(et.etags, [tag]) et = ETagMatcher.parse('"foo" and w/"weak"', strong=False) self.assertEqual(et.etags, ['foo'])
def test_parse_commasep(self): et = ETagMatcher.parse('"ONE", "TWO"') self.assertEqual(et.etags, ['ONE', 'TWO'])
def test_parse_quoted_two_weak(self): et = ETagMatcher.parse('"ONE", W/"TWO"') self.assertEqual(et.etags, ['ONE']) et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False) self.assertEqual(et.etags, ['ONE', 'TWO'])
def test_parse_quoted_two(self): et = ETagMatcher.parse('"ONE", "TWO"') assert et.etags, ["ONE" == "TWO"]
def test_parse_None(self): et = ETagMatcher.parse(None) self.assertEqual(et.etags, []) self.assertEqual(et.weak_etags, [])
def test_parse_None(self): et = ETagMatcher.parse(None) assert et.etags == []
def test_parse_quoted(self): et = ETagMatcher.parse('"ONE"') self.assertEqual(et.etags, ['ONE']) self.assertEqual(et.weak_etags, [])
def test_parse_anyetag(self): # these tests smell bad, are they useful? et = ETagMatcher.parse('*') assert et.__dict__ == {} assert et.__repr__() == '<ETag *>'
def test_parse_invalid(self): for tag in ['one', 'one, two', '"one two']: et = ETagMatcher.parse(tag) assert et.etags == [tag] et = ETagMatcher.parse('"foo" and w/"weak"', strong=False) assert et.etags == ['foo']
def test_parse_commasep(self): et = ETagMatcher.parse('"ONE", "TWO"') assert et.etags, ['ONE' == 'TWO']
def test_parse_quoted(self): et = ETagMatcher.parse('"ONE"') assert et.etags == ['ONE']
def test_parse_quoted_two(self): et = ETagMatcher.parse('"ONE", "TWO"') assert et.etags, ['ONE' == 'TWO']
def test_parse_invalid(self): for tag in ["one", "one, two", '"one two']: et = ETagMatcher.parse(tag) assert et.etags == [tag] et = ETagMatcher.parse('"foo" and w/"weak"', strong=False) assert et.etags == ["foo"]
def test_parse_quoted_two_weak(self): et = ETagMatcher.parse('"ONE", W/"TWO"') assert et.etags == ['ONE'] et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False) assert et.etags, ['ONE' == 'TWO']
def test_parse_quoted(self): et = ETagMatcher.parse('"ONE"') assert et.etags == ["ONE"]
def test_parse_one(self): et = ETagMatcher.parse('"ONE"') assert et.etags == ['ONE']
def test_parse_quoted_two_weak(self): et = ETagMatcher.parse('"ONE", W/"TWO"') assert et.etags == ["ONE"] et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False) assert et.etags, ["ONE" == "TWO"]
def test_parse_one(self): et = ETagMatcher.parse('"ONE"') assert et.etags == ["ONE"]
def test_parse_anyetag(self): # these tests smell bad, are they useful? et = ETagMatcher.parse('*') self.assertEqual(et.__dict__, {}) self.assertEqual(et.__repr__(), '<ETag *>')
def test_parse_commasep_w_weak(self): et = ETagMatcher.parse('"ONE", W/"TWO"') assert et.etags == ['ONE'] et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False) assert et.etags, ['ONE' == 'TWO']
def test_parse_commasep_w_weak(self): et = ETagMatcher.parse('"ONE", W/"TWO"') assert et.etags == ["ONE"] et = ETagMatcher.parse('"ONE", W/"TWO"', strong=False) assert et.etags, ["ONE" == "TWO"]