2017-10-19 22:11:22 +00:00
|
|
|
import mock
|
2017-10-13 17:44:07 +00:00
|
|
|
from warcprox.dedup import CdxServerDedup
|
|
|
|
|
|
|
|
|
2017-10-19 22:11:22 +00:00
|
|
|
def test_cdx_dedup():
|
|
|
|
# Mock CDX Server responses to simulate found, not found and errors.
|
|
|
|
with mock.patch('warcprox.dedup.CdxServerDedup.http_pool.request') as request:
|
2017-10-21 20:24:28 +00:00
|
|
|
url = "http://example.com"
|
2017-10-19 22:11:22 +00:00
|
|
|
# not found case
|
|
|
|
result = mock.Mock()
|
|
|
|
result.status = 200
|
|
|
|
result.data = b'20170101020405 test'
|
|
|
|
request.return_value = result
|
|
|
|
cdx_server = CdxServerDedup(cdx_url="dummy-cdx-server-url")
|
|
|
|
res = cdx_server.lookup(digest_key="B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A",
|
2017-10-21 20:24:28 +00:00
|
|
|
url=url)
|
2017-10-19 22:11:22 +00:00
|
|
|
assert res is None
|
|
|
|
|
2017-10-21 20:45:46 +00:00
|
|
|
# found case
|
2017-10-19 22:11:22 +00:00
|
|
|
result = mock.Mock()
|
|
|
|
result.status = 200
|
2017-10-21 20:45:46 +00:00
|
|
|
result.data = b'20170203040503 B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A'
|
2017-10-19 22:11:22 +00:00
|
|
|
request.return_value = result
|
|
|
|
cdx_server = CdxServerDedup(cdx_url="dummy-cdx-server-url")
|
|
|
|
res = cdx_server.lookup(digest_key="B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A",
|
2017-10-21 20:24:28 +00:00
|
|
|
url=url)
|
2017-10-19 22:57:33 +00:00
|
|
|
assert res["date"] == b"2017-02-03T04:05:03Z"
|
2017-10-19 22:11:22 +00:00
|
|
|
|
|
|
|
# invalid CDX result status code
|
|
|
|
result = mock.Mock()
|
|
|
|
result.status = 400
|
|
|
|
result.data = b'20170101020405 B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A'
|
|
|
|
request.return_value = result
|
|
|
|
cdx_server = CdxServerDedup(cdx_url="dummy-cdx-server-url")
|
|
|
|
res = cdx_server.lookup(digest_key="B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A",
|
2017-10-21 20:24:28 +00:00
|
|
|
url=url)
|
2017-10-19 22:11:22 +00:00
|
|
|
assert res is None
|
|
|
|
# invalid CDX result content
|
|
|
|
result = mock.Mock()
|
|
|
|
result.status = 200
|
|
|
|
result.data = b'InvalidExceptionResult'
|
|
|
|
request.return_value = result
|
|
|
|
cdx_server = CdxServerDedup(cdx_url="dummy-cdx-server-url")
|
|
|
|
res = cdx_server.lookup(digest_key="B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A",
|
2017-10-21 20:24:28 +00:00
|
|
|
url=url)
|
2017-10-19 22:11:22 +00:00
|
|
|
assert res is None
|