From c2e774d3f5a4499b8beb5a12ab46a0099b16b1e7 Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Tue, 15 Mar 2022 00:19:57 -0400 Subject: New upstream version 1.21.0. --- test/test_cookies.py | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++-- test/test_text.py | 12 ++++++++ 2 files changed, 95 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/test_cookies.py b/test/test_cookies.py index d103d02..0657456 100644 --- a/test/test_cookies.py +++ b/test/test_cookies.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright 2017-2020 Mike Fährmann +# Copyright 2017-2022 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as @@ -12,6 +12,7 @@ import sys import unittest from unittest import mock +import time import logging import tempfile from os.path import join @@ -88,7 +89,7 @@ class TestCookiedict(unittest.TestCase): self.assertEqual(sorted(cookies.values()), sorted(self.cdict.values())) def test_domain(self): - for category in ["exhentai", "idolcomplex", "nijie", "seiga"]: + for category in ["exhentai", "idolcomplex", "nijie"]: extr = _get_extractor(category) cookies = extr.session.cookies for key in self.cdict: @@ -107,7 +108,6 @@ class TestCookieLogin(unittest.TestCase): "exhentai" : ("ipb_member_id", "ipb_pass_hash"), "idolcomplex": ("login", "pass_hash"), "nijie" : ("nemail", "nlogin"), - "seiga" : ("user_session",), } for category, cookienames in extr_cookies.items(): cookies = {name: "value" for name in cookienames} @@ -118,6 +118,86 @@ class TestCookieLogin(unittest.TestCase): mock_login.assert_not_called() +class TestCookieUtils(unittest.TestCase): + + def test_check_cookies(self): + extr = extractor.find("test:") + self.assertFalse(extr._cookiejar, "empty") + self.assertFalse(extr.cookiedomain, "empty") + + # always returns False when checking for empty cookie list + self.assertFalse(extr._check_cookies(())) + + self.assertFalse(extr._check_cookies(("a",))) + self.assertFalse(extr._check_cookies(("a", "b"))) + self.assertFalse(extr._check_cookies(("a", "b", "c"))) + + extr._cookiejar.set("a", "1") + self.assertTrue(extr._check_cookies(("a",))) + self.assertFalse(extr._check_cookies(("a", "b"))) + self.assertFalse(extr._check_cookies(("a", "b", "c"))) + + extr._cookiejar.set("b", "2") + self.assertTrue(extr._check_cookies(("a",))) + self.assertTrue(extr._check_cookies(("a", "b"))) + self.assertFalse(extr._check_cookies(("a", "b", "c"))) + + def test_check_cookies_domain(self): + extr = extractor.find("test:") + self.assertFalse(extr._cookiejar, "empty") + extr.cookiedomain = ".example.org" + + self.assertFalse(extr._check_cookies(("a",))) + self.assertFalse(extr._check_cookies(("a", "b"))) + + extr._cookiejar.set("a", "1") + self.assertFalse(extr._check_cookies(("a",))) + + extr._cookiejar.set("a", "1", domain=extr.cookiedomain) + self.assertTrue(extr._check_cookies(("a",))) + + extr._cookiejar.set("a", "1", domain="www" + extr.cookiedomain) + self.assertEqual(len(extr._cookiejar), 3) + self.assertTrue(extr._check_cookies(("a",))) + + extr._cookiejar.set("b", "2", domain=extr.cookiedomain) + extr._cookiejar.set("c", "3", domain=extr.cookiedomain) + self.assertTrue(extr._check_cookies(("a", "b", "c"))) + + def test_check_cookies_expires(self): + extr = extractor.find("test:") + self.assertFalse(extr._cookiejar, "empty") + self.assertFalse(extr.cookiedomain, "empty") + + now = int(time.time()) + log = logging.getLogger("test") + + extr._cookiejar.set("a", "1", expires=now-100) + with mock.patch.object(log, "warning") as mw: + self.assertFalse(extr._check_cookies(("a",))) + self.assertEqual(mw.call_count, 1) + self.assertEqual(mw.call_args[0], ("Cookie '%s' has expired", "a")) + + extr._cookiejar.set("a", "1", expires=now+100) + with mock.patch.object(log, "warning") as mw: + self.assertFalse(extr._check_cookies(("a",))) + self.assertEqual(mw.call_count, 1) + self.assertEqual(mw.call_args[0], ( + "Cookie '%s' will expire in less than %s hour%s", "a", 1, "")) + + extr._cookiejar.set("a", "1", expires=now+100+7200) + with mock.patch.object(log, "warning") as mw: + self.assertFalse(extr._check_cookies(("a",))) + self.assertEqual(mw.call_count, 1) + self.assertEqual(mw.call_args[0], ( + "Cookie '%s' will expire in less than %s hour%s", "a", 3, "s")) + + extr._cookiejar.set("a", "1", expires=now+100+24*3600) + with mock.patch.object(log, "warning") as mw: + self.assertTrue(extr._check_cookies(("a",))) + self.assertEqual(mw.call_count, 0) + + def _get_extractor(category): for extr in extractor.extractors(): if extr.category == category and hasattr(extr, "_login_impl"): diff --git a/test/test_text.py b/test/test_text.py index 3ab9e73..ffed726 100644 --- a/test/test_text.py +++ b/test/test_text.py @@ -102,6 +102,18 @@ class TestText(unittest.TestCase): for value in INVALID_ALT: self.assertEqual(f(value), value) + def test_root_from_url(self, f=text.root_from_url): + result = "https://example.org" + self.assertEqual(f("https://example.org/") , result) + self.assertEqual(f("https://example.org/path"), result) + self.assertEqual(f("example.org/") , result) + self.assertEqual(f("example.org/path/") , result) + + result = "http://example.org" + self.assertEqual(f("http://example.org/") , result) + self.assertEqual(f("http://example.org/path/"), result) + self.assertEqual(f("example.org/", "http://") , result) + def test_filename_from_url(self, f=text.filename_from_url): result = "filename.ext" -- cgit v1.2.3