Skip to main content
Glama

URL Reputation and Validity Checker

by prismon
test_models.cpython-313-pytest-8.3.5.pyc61 kB
� ��7h�/���SrSSKrSSKJs Jr SSKrSSKJr SSK J r J r J r J r Jr "SS5r"SS5r"S S 5r"S S 5r"S S5rg)zUnit tests for models.py�N)�datetime)�ConfidenceLevel�ValidationLevel�URLValidationResult� DomainHistory�LinkExtractionResultc�$�\rSrSrSrSrSrSrg)�TestConfidenceLevel�z$Test suite for ConfidenceLevel enum.c�V�[RnSo!U:Ho3(d�[R"SU4SX45S[R "5;d[R "[5(a[R"[5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=p2[RnS o!U:Ho3(d�[R"SU4S X45S[R "5;d[R "[5(a[R"[5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=p2[RnS o!U:Ho3(d�[R"SU4S X45S[R "5;d[R "[5(a[R"[5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=p2g) z,Test that all confidence levels are defined.�high��==)z,%(py2)s {%(py2)s = %(py0)s.HIGH } == %(py5)sr��py0�py2�py5�assert %(py7)s�py7N�medium)z.%(py2)s {%(py2)s = %(py0)s.MEDIUM } == %(py5)s�low)z+%(py2)s {%(py2)s = %(py0)s.LOW } == %(py5)s) r�HIGH� @pytest_ar�_call_reprcompare� @py_builtins�locals�_should_repr_global_name� _saferepr�AssertionError�_format_explanation�MEDIUM�LOW��self� @py_assert1� @py_assert4� @py_assert3� @py_format6� @py_format8s �H/home/josh/Projects/reputation-and-validity-checker/tests/test_models.py�test_confidence_levels_exist�0TestConfidenceLevel.test_confidence_levels_exists[���#�#�-�v�-�v�-�-�-�-�-�#�-�-�-�-�-�-��-�-�-�-��-�-�-�#�-�-�-�v�-�-�-�-�-�-�-��%�%�1��1��1�1�1�1�1�%�1�1�1�1�1�1��1�1�1�1��1�1�1�%�1�1�1��1�1�1�1�1�1�1��"�"�+�e�+�e�+�+�+�+�+�"�+�+�+�+�+�+��+�+�+�+��+�+�+�"�+�+�+�e�+�+�+�+�+�+�+�c�"�[RoRnSo2U:HoD(d�[R"SU4SX#45S[ R "5;d[R"[5(a[R"[5OS[R"U5[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=n=pC[RoRnS o2U:HoD(d�[R"SU4S X#45S[ R "5;d[R"[5(a[R"[5OS[R"U5[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=n=pC[RoRnS o2U:HoD(d�[R"SU4S X#45S[ R "5;d[R"[5(a[R"[5OS[R"U5[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=n=pCg) z$Test confidence level string values.r r)zG%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.HIGH }.value } == %(py7)sr�rr�py4r�assert %(py9)s�py9Nr)zI%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.MEDIUM }.value } == %(py7)sr)zF%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.LOW }.value } == %(py7)s) rr�valuerrrrrrrr r!r"�r$r%r'� @py_assert6� @py_assert5r)� @py_format10s r*�test_confidence_level_values�0TestConfidenceLevel.test_confidence_level_valuess����#�#�3�)�)�3�V�3�V�3�3�3�3�3�)�3�3�3�3�3�3��3�3�3�3��3�3�3�#�3�3�3�)�3�3�3�V�3�3�3�3�3�3�3��%�%�7�+�+�7�x�7�x�7�7�7�7�7�+�7�7�7�7�7�7��7�7�7�7��7�7�7�%�7�7�7�+�7�7�7�x�7�7�7�7�7�7�7��"�"�1�(�(�1�E�1�E�1�1�1�1�1�(�1�1�1�1�1�1��1�1�1�1��1�1�1�"�1�1�1�(�1�1�1�E�1�1�1�1�1�1�1r-�N)�__name__� __module__� __qualname__�__firstlineno__�__doc__r+r8�__static_attributes__r:r-r*r r s��.�,� 2r-r c�$�\rSrSrSrSrSrSrg)�TestValidationLevel�z$Test suite for ValidationLevel enum.c�V�[RnSo!U:Ho3(d�[R"SU4SX45S[R "5;d[R "[5(a[R"[5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=p2[RnS o!U:Ho3(d�[R"SU4S X45S[R "5;d[R "[5(a[R"[5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=p2[RnS o!U:Ho3(d�[R"SU4S X45S[R "5;d[R "[5(a[R"[5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=p2g) z,Test that all validation levels are defined.�basicr)z-%(py2)s {%(py2)s = %(py0)s.BASIC } == %(py5)srrrrN�standard)z0%(py2)s {%(py2)s = %(py0)s.STANDARD } == %(py5)s� comprehensive)z5%(py2)s {%(py2)s = %(py0)s.COMPREHENSIVE } == %(py5)s) r�BASICrrrrrrrr �STANDARD� COMPREHENSIVEr#s r*�test_validation_levels_exist�0TestValidationLevel.test_validation_levels_exist"s[���$�$�/��/��/�/�/�/�/�$�/�/�/�/�/�/��/�/�/�/��/�/�/�$�/�/�/��/�/�/�/�/�/�/��'�'�5�:�5�:�5�5�5�5�5�'�5�5�5�5�5�5��5�5�5�5��5�5�5�'�5�5�5�:�5�5�5�5�5�5�5��,�,�?��?��?�?�?�?�?�,�?�?�?�?�?�?��?�?�?�?��?�?�?�,�?�?�?��?�?�?�?�?�?�?r-c�"�[RoRnSo2U:HoD(d�[R"SU4SX#45S[ R "5;d[R"[5(a[R"[5OS[R"U5[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=n=pC[RoRnS o2U:HoD(d�[R"SU4S X#45S[ R "5;d[R"[5(a[R"[5OS[R"U5[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=n=pC[RoRnS o2U:HoD(d�[R"SU4S X#45S[ R "5;d[R"[5(a[R"[5OS[R"U5[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=n=pCg) z$Test validation level string values.rEr)zH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.BASIC }.value } == %(py7)srr/r1r2NrF)zK%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.STANDARD }.value } == %(py7)srG)zP%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.COMPREHENSIVE }.value } == %(py7)s) rrHr3rrrrrrrr rIrJr4s r*�test_validation_level_values�0TestValidationLevel.test_validation_level_values(s����$�$�5�*�*�5�g�5�g�5�5�5�5�5�*�5�5�5�5�5�5��5�5�5�5��5�5�5�$�5�5�5�*�5�5�5�g�5�5�5�5�5�5�5��'�'�;�-�-�;��;��;�;�;�;�;�-�;�;�;�;�;�;��;�;�;�;��;�;�;�'�;�;�;�-�;�;�;��;�;�;�;�;�;�;��,�,�E�2�2�E�o�E�o�E�E�E�E�E�2�E�E�E�E�E�E��E�E�E�E��E�E�E�,�E�E�E�2�E�E�E�o�E�E�E�E�E�E�Er-r:N)r;r<r=r>r?rKrNr@r:r-r*rBrBs��.�@� Fr-rBc�0�\rSrSrSrSrSrSrSrSr g) �TestURLValidationResult�/z)Test suite for URLValidationResult model.c ���[SSSSSS[RS9nURnSo2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCURnSo2ULoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCURnSo2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCURnSo2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCURnSo2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCUR nSo2ULoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCUR"n[RorU:HoD(Gd [R "SU4SX'45S [ R"5;d[R"U5(a[R"U5OS [R"U5S[ R"5;d[R"[5(a[R"[5OS[R"U5S.-nSSU0-n [[R"U 55eS =n=pGUR$nSo2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCUR&nSo2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCUR(n/o2U:HoD(d�[R "SU4SX#45S [ R"5;d[R"U5(a[R"U5OS [R"U5[R"U5S .-nS S U0-n[[R"U55eS =n=pCg )z*Test creating a basic URLValidationResult.�https://example.comT����?��)�url�is_valid� status_code� response_time�content_length� ssl_valid�confidence_levelr)z+%(py2)s {%(py2)s = %(py0)s.url } == %(py5)s�resultrrrN��is)z0%(py2)s {%(py2)s = %(py0)s.is_valid } is %(py5)s)z3%(py2)s {%(py2)s = %(py0)s.status_code } == %(py5)s)z5%(py2)s {%(py2)s = %(py0)s.response_time } == %(py5)s)z6%(py2)s {%(py2)s = %(py0)s.content_length } == %(py5)s)z1%(py2)s {%(py2)s = %(py0)s.ssl_valid } is %(py5)s)zR%(py2)s {%(py2)s = %(py0)s.confidence_level } == %(py6)s {%(py6)s = %(py4)s.HIGH }r)rrr0�py6zassert %(py8)s�py8r�z9%(py2)s {%(py2)s = %(py0)s.wayback_snapshots } == %(py5)sg�z8%(py2)s {%(py2)s = %(py0)s.reputation_score } == %(py5)s�z0%(py2)s {%(py2)s = %(py0)s.warnings } == %(py5)s)rrrrXrrrrrrrr rYrZr[r\r]r^�wayback_snapshots�reputation_score�warnings) r$r_r%r&r'r(r)r6� @py_format7� @py_format9s r*�#test_create_basic_validation_result�;TestURLValidationResult.test_create_basic_validation_result2s���$�%������,�1�1� ���z�z�2�2�2�2�2�2�2�2�2�z�2�2�2�2�2�2�v�2�2�2�2�v�2�2�2�z�2�2�2�2�2�2�2�2�2�2�2����&�$�&�$�&�&�&�&�&��&�&�&�&�&�&�v�&�&�&�&�v�&�&�&��&�&�&�$�&�&�&�&�&�&�&��!�!�(�S�(�S�(�(�(�(�(�!�(�(�(�(�(�(�v�(�(�(�(�v�(�(�(�!�(�(�(�S�(�(�(�(�(�(�(��#�#�*�s�*�s�*�*�*�*�*�#�*�*�*�*�*�*�v�*�*�*�*�v�*�*�*�#�*�*�*�s�*�*�*�*�*�*�*��$�$�,��,��,�,�,�,�,�$�,�,�,�,�,�,�v�,�,�,�,�v�,�,�,�$�,�,�,��,�,�,�,�,�,�,����'�4�'�4�'�'�'�'�'��'�'�'�'�'�'�v�'�'�'�'�v�'�'�'��'�'�'�4�'�'�'�'�'�'�'��&�&�>�/�*>�*>�>�*>�>�>�>�>�>�&�>�>�>�>�>�>�v�>�>�>�>�v�>�>�>�&�>�>�>�>�>�>�/�>�>�>�>�/�>�>�>�*>�>�>�>�>�>�>�>��'�'�,�1�,�1�,�,�,�,�,�'�,�,�,�,�,�,�v�,�,�,�,�v�,�,�,�'�,�,�,�1�,�,�,�,�,�,�,��&�&�-�#�-�#�-�-�-�-�-�&�-�-�-�-�-�-�v�-�-�-�-�v�-�-�-�&�-�-�-�#�-�-�-�-�-�-�-����$�"�$�"�$�$�$�$�$��$�$�$�$�$�$�v�$�$�$�$�v�$�$�$��$�$�$�"�$�$�$�$�$�$�$r-c�� �[SSS5n[SSSSSSSUS S [RS /S S 0S9 nURnSoCU:HoU(d�[ R "SU4SX445S[R"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-nSSU0-n[[ R"U55eS=n=pTURo3U:HoU(d�[ R "SU4SX145S[R"5;d[ R"U5(a[ R"U5OS[ R"U5S[R"5;d[ R"U5(a[ R"U5OSS.-nSSU0-n [[ R"U 55eS=p5URnS oCU:HoU(d�[ R "SU4SX445S[R"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-nSSU0-n[[ R"U55eS=n=pTURnS oCU:HoU(d�[ R "SU4SX445S[R"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-nSSU0-n[[ R"U55eS=n=pTUR nS /oCU:HoU(d�[ R "SU4SX445S[R"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-nSSU0-n[[ R"U55eS=n=pTUR"nS S 0oCU:HoU(d�[ R "SU4SX445S[R"5;d[ R"U5(a[ R"U5OS[ R"U5[ R"U5S.-nSSU0-n[[ R"U55eS=n=pTg)z4Test creating a URLValidationResult with all fields.���rTTrUrVi90iB��@U@� Test warning�extra�data) rXrYrZr[r\r]�domain_age_days�first_seen_datergrhr^ri�metadatar)z7%(py2)s {%(py2)s = %(py0)s.domain_age_days } == %(py5)sr_rrrN)z7%(py2)s {%(py2)s = %(py0)s.first_seen_date } == %(py4)s� first_seen�rrr0�assert %(py6)srbrdrerf)z0%(py2)s {%(py2)s = %(py0)s.metadata } == %(py5)s)rrrrrvrrrrrrrr rwrgrhrirx) r$ryr_r%r&r'r(r)� @py_format5rjs r*�"test_create_full_validation_result�:TestURLValidationResult.test_create_full_validation_resultIs���d�A�q�)� �$�%���� �� �&�"�!�,�1�1�$�%��v�&� �� �%�%�-��-��-�-�-�-�-�%�-�-�-�-�-�-�v�-�-�-�-�v�-�-�-�%�-�-�-��-�-�-�-�-�-�-��%�%�3��3�3�3�3�3�%�3�3�3�3�3�3�v�3�3�3�3�v�3�3�3�%�3�3�3�3�3�3��3�3�3�3��3�3�3�3�3�3�3��'�'�/�4�/�4�/�/�/�/�/�'�/�/�/�/�/�/�v�/�/�/�/�v�/�/�/�'�/�/�/�4�/�/�/�/�/�/�/��&�&�.�$�.�$�.�.�.�.�.�&�.�.�.�.�.�.�v�.�.�.�.�v�.�.�.�&�.�.�.�$�.�.�.�.�.�.�.����2�>�"2�2�"2�2�2�2�2�2��2�2�2�2�2�2�v�2�2�2�2�v�2�2�2��2�2�2�"2�2�2�2�2�2�2�2����3�7�F�"3�3�"3�3�3�3�3�3��3�3�3�3�3�3�v�3�3�3�3�v�3�3�3��3�3�3�"3�3�3�3�3�3�3�3r-c �L�[SSS5n[SSSSSSUS[RS /S 9 nUR 5n[ U[ 5oD(Gd+S S [R"5;d[R"[ 5(a[R"[ 5OS S [R"5;d[R"U5(a[R"U5OS S[R"5;d[R"[ 5(a[R"[ 5OS[R"U5S.-n[[R"U55eSnUSnSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSnSoFULow(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSnSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSnSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSnSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSnSoFULow(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSoaRo�"5o�U :How(d�[R"SU4SXj45[R"U5S [R"5;d[R"U5(a[R"U5OS [R"U 5[R"U 5S!.-n S"S#U 0-n [[R"U 55eS=n=n=p�US$nSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUS%nS&oFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUS'nS /oFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptg)(z2Test converting URLValidationResult to dictionary.rorprTTrUrVrWg�V@rs) rXrYrZr[r\r]rwrhr^ri�5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }� isinstanceru�dict�r�py1rr0NrXr�z%(py1)s == %(py4)s�r�r0r{rbrYr`�z%(py1)s is %(py4)srZr[r\r]rw�zH%(py1)s == %(py7)s {%(py7)s = %(py5)s {%(py5)s = %(py3)s.isoformat }() }ry�r��py3rrr1r2rhr^r ri)rrrr�to_dictr�r�rrrrrrr r� isoformat) r$ryr_rur'r|� @py_assert0� @py_assert2rjr&r5r)r7s r*�test_validation_result_to_dict�6TestURLValidationResult.test_validation_result_to_dictcsI���d�A�q�)� �$�%������&�!�,�1�1�$�%�  ���~�~����$��%�%�%�%�%�%�%�%�%�z�%�%�%�%�z�%�%�%�%�%�%�$�%�%�%�%�$�%�%�%�%�%�%��%�%�%�%��%�%�%�%�%�%�%�%�%�%��E�{�3�3�3�3�3�3�3�3�3�{�3�3�3�{�3�3�3�3�3�3�3�3�3�3�3��J��'�4�'�4�'�'�'�'�'��'�'�'��'�'�'�4�'�'�'�'�'�'�'��M�"�)�c�)�c�)�)�)�)�)�"�)�)�)�"�)�)�)�c�)�)�)�)�)�)�)��O�$�+��+��+�+�+�+�+�$�+�+�+�$�+�+�+��+�+�+�+�+�+�+��$�%�-��-��-�-�-�-�-�%�-�-�-�%�-�-�-��-�-�-�-�-�-�-��K� �(�D�(�D�(�(�(�(�(� �(�(�(� �(�(�(�D�(�(�(�(�(�(�(��%�&�@�*>�*>�@�*>�*@�@�*@�@�@�@�@�@�&�@�@�@�&�@�@�@�@�@�@�*�@�@�@�@�*�@�@�@�*>�@�@�@�*@�@�@�@�@�@�@�@��&�'�/�4�/�4�/�/�/�/�/�'�/�/�/�'�/�/�/�4�/�/�/�/�/�/�/��&�'�1�6�1�6�1�1�1�1�1�'�1�1�1�'�1�1�1�6�1�1�1�1�1�1�1��J��3�N�#3�3�#3�3�3�3�3�3��3�3�3��3�3�3�#3�3�3�3�3�3�3�3r-c �J�[SSSSSSSS9nUR5nUSnSoCULoU(do[R"S U4S X445[R"U5[R"U5S .-nS S U0-n[ [R "U55eS=n=pTg)z*Test to_dict when first_seen_date is None.rTTrUrVrWN)rXrYrZr[r\r]rwrwr`r�r�r{rb)rr�rrrrr )r$r_rur�r'r�r|rjs r*�,test_validation_result_to_dict_no_first_seen�DTestURLValidationResult.test_validation_result_to_dict_no_first_seen�s���$�%������ � ���~�~����%�&�.�$�.�$�.�.�.�.�.�&�.�.�.�&�.�.�.�$�.�.�.�.�.�.�.r-r:N) r;r<r=r>r?rlr}r�r�r@r:r-r*rQrQ/s��3�%�.4�44�< /r-rQc�*�\rSrSrSrSrSrSrSrg)�TestDomainHistory�z#Test suite for DomainHistory model.c�z �[SS9nURnSo2U:HoD(d�[R"SU4SX#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCURnS o2ULoD(d�[R"S U4S X#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCURnS o2ULoD(d�[R"S U4S X#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCURnS o2ULoD(d�[R"S U4S X#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCURnS o2ULoD(d�[R"S U4SX#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCURnSo2U:HoD(d�[R"SU4SX#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCURnS o2ULoD(d�[R"S U4SX#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCUR nS o2ULoD(d�[R"S U4SX#45S[R "5;d[R "U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS =n=pCg )z$Test creating a basic DomainHistory.� example.com)�domainr)z.%(py2)s {%(py2)s = %(py0)s.domain } == %(py5)s�historyrrrNr`)z5%(py2)s {%(py2)s = %(py0)s.creation_date } is %(py5)s)z7%(py2)s {%(py2)s = %(py0)s.expiration_date } is %(py5)s)z1%(py2)s {%(py2)s = %(py0)s.registrar } is %(py5)s)z>%(py2)s {%(py2)s = %(py0)s.wayback_first_snapshot } is %(py5)sr�z?%(py2)s {%(py2)s = %(py0)s.wayback_total_snapshots } == %(py5)s)z6%(py2)s {%(py2)s = %(py0)s.ssl_first_seen } is %(py5)s)z0%(py2)s {%(py2)s = %(py0)s.age_days } is %(py5)s)rr�rrrrrrrr � creation_date�expiration_date� registrar�wayback_first_snapshot�wayback_total_snapshots�ssl_first_seen�age_days)r$r�r%r&r'r(r)s r*� test_create_basic_domain_history�2TestDomainHistory.test_create_basic_domain_history�s���� � ���~�~�.��.��.�.�.�.�.�~�.�.�.�.�.�.�w�.�.�.�.�w�.�.�.�~�.�.�.��.�.�.�.�.�.�.��$�$�,��,��,�,�,�,�,�$�,�,�,�,�,�,�w�,�,�,�,�w�,�,�,�$�,�,�,��,�,�,�,�,�,�,��&�&�.�$�.�$�.�.�.�.�.�&�.�.�.�.�.�.�w�.�.�.�.�w�.�.�.�&�.�.�.�$�.�.�.�.�.�.�.�� � �(�D�(�D�(�(�(�(�(� �(�(�(�(�(�(�w�(�(�(�(�w�(�(�(� �(�(�(�D�(�(�(�(�(�(�(��-�-�5��5��5�5�5�5�5�-�5�5�5�5�5�5�w�5�5�5�5�w�5�5�5�-�5�5�5��5�5�5�5�5�5�5��.�.�3�!�3�!�3�3�3�3�3�.�3�3�3�3�3�3�w�3�3�3�3�w�3�3�3�.�3�3�3�!�3�3�3�3�3�3�3��%�%�-��-��-�-�-�-�-�%�-�-�-�-�-�-�w�-�-�-�-�w�-�-�-�%�-�-�-��-�-�-�-�-�-�-����'�4�'�4�'�'�'�'�'��'�'�'�'�'�'�w�'�'�'�'�w�'�'�'��'�'�'�4�'�'�'�'�'�'�'r-c �� �[SSS5n[SSS5n[SSS5n[SSS5n[SUUSUSUS S 9nURofU:How(d�[R"S U4S Xa45S [ R "5;d[R"U5(a[R"U5OS [R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nSSU0-n [[R"U 55eS=pgURofU:How(d�[R"S U4SXb45S [ R "5;d[R"U5(a[R"U5OS [R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nSSU0-n [[R"U 55eS=pgURnSo�U :How(d�[R"S U4SXj45S [ R "5;d[R"U5(a[R"U5OS [R"U5[R"U 5S.-n SSU 0-n [[R"U 55eS=n=pzURofU:How(d�[R"S U4SXc45S [ R "5;d[R"U5(a[R"U5OS [R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nSSU0-n [[R"U 55eS=pgURnSo�U :How(d�[R"S U4SXj45S [ R "5;d[R"U5(a[R"U5OS [R"U5[R"U 5S.-n SSU 0-n [[R"U 55eS=n=pzURofU:How(d�[R"S U4SXd45S [ R "5;d[R"U5(a[R"U5OS [R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nSSU0-n [[R"U 55eS=pgUR nS o�U :How(d�[R"S U4SXj45S [ R "5;d[R"U5(a[R"U5OS [R"U5[R"U 5S.-n SSU 0-n [[R"U 55eS=n=pzg)z.Test creating a DomainHistory with all fields.��rpi��i�r��Example Registrar Inc.rq�@)r�r�r�r�r�r�r�r�r)z5%(py2)s {%(py2)s = %(py0)s.creation_date } == %(py4)sr��creationrzr{rbN)z7%(py2)s {%(py2)s = %(py0)s.expiration_date } == %(py4)s� expiration)z1%(py2)s {%(py2)s = %(py0)s.registrar } == %(py5)srrr)z>%(py2)s {%(py2)s = %(py0)s.wayback_first_snapshot } == %(py4)s� wayback_firstr�)z6%(py2)s {%(py2)s = %(py0)s.ssl_first_seen } == %(py4)s� ssl_first)z0%(py2)s {%(py2)s = %(py0)s.age_days } == %(py5)s)rrr�rrrrrrrr r�r�r�r�r�r�) r$r�r�r�r�r�r%r'r|rjr&r(r)s r*�test_create_full_domain_history�1TestDomainHistory.test_create_full_domain_history�s����D�!�Q�'���d�A�q�)� � ��q�!�,� ��T�1�a�(� �� �"�&�.�#0�$(�$��  ���$�$�0��0�0�0�0�0�$�0�0�0�0�0�0�w�0�0�0�0�w�0�0�0�$�0�0�0�0�0�0��0�0�0�0��0�0�0�0�0�0�0��&�&�4�*�4�4�4�4�4�&�4�4�4�4�4�4�w�4�4�4�4�w�4�4�4�&�4�4�4�4�4�4�*�4�4�4�4�*�4�4�4�4�4�4�4�� � �<�$<�<�$<�<�<�<�<�<� �<�<�<�<�<�<�w�<�<�<�<�w�<�<�<� �<�<�<�$<�<�<�<�<�<�<�<��-�-�>��>�>�>�>�>�-�>�>�>�>�>�>�w�>�>�>�>�w�>�>�>�-�>�>�>�>�>�>��>�>�>�>��>�>�>�>�>�>�>��.�.�6�$�6�$�6�6�6�6�6�.�6�6�6�6�6�6�w�6�6�6�6�w�6�6�6�.�6�6�6�$�6�6�6�6�6�6�6��%�%�2��2�2�2�2�2�%�2�2�2�2�2�2�w�2�2�2�2�w�2�2�2�%�2�2�2�2�2�2��2�2�2�2��2�2�2�2�2�2�2����'�4�'�4�'�'�'�'�'��'�'�'�'�'�'�w�'�'�'�'�w�'�'�'��'�'�'�4�'�'�'�'�'�'�'r-c � �[SSS5n[SSS5n[SUSUSSS9nUR5n[U[5oU(Gd+S S [ R "5;d[R"[5(a[R"[5OS S [ R "5;d[R"U5(a[R"U5OS S [ R "5;d[R"[5(a[R"[5OS [R"U5S .-n[[R"U55eSnUSnSoWU:Ho�(do[R"SU4SXu45[R"U5[R"U5S.-nSSU0-n [[R"U 55eS=n=p�USoqRo�"5o�U :Ho�(d�[R"SU4SX{45[R"U5S[ R "5;d[R"U5(a[R"U5OS[R"U 5[R"U 5S.-n SSU 0-n [[R"U 55eS=n=n=p�USnSoWULo�(do[R"SU4SXu45[R"U5[R"U5S.-nSSU0-n [[R"U 55eS=n=p�USnSoWU:Ho�(do[R"SU4SXu45[R"U5[R"U5S.-nSSU0-n [[R"U 55eS=n=p�USorRo�"5o�U :Ho�(d�[R"SU4SX{45[R"U5S [ R "5;d[R"U5(a[R"U5OS [R"U 5[R"U 5S.-n SSU 0-n [[R"U 55eS=n=n=p�US!nSoWU:Ho�(do[R"SU4SXu45[R"U5[R"U5S.-nSSU0-n [[R"U 55eS=n=p�US"nSoWULo�(do[R"SU4SXu45[R"U5[R"U5S.-nSSU0-n [[R"U 55eS=n=p�US#nSoWU:Ho�(do[R"SU4SXu45[R"U5[R"U5S.-nSSU0-n [[R"U 55eS=n=p�g)$z,Test converting DomainHistory to dictionary.r�rpr�r�r�rqr�)r�r�r�r�r�r�r�r�rur�r�Nr�rr�r�r{rbr�r�r�r�r1r2r�r`r�r�r�r�r�r�r�)rrr�r�r�rrrrrrr rr�)r$r�r�r�rur'r|r�r�rjr&r5r)r7s r*�test_domain_history_to_dict�-TestDomainHistory.test_domain_history_to_dict�s����D�!�Q�'�� ��q�!�,� �� �"�.�#0�$(��  ����� ���$��%�%�%�%�%�%�%�%�%�z�%�%�%�%�z�%�%�%�%�%�%�$�%�%�%�%�$�%�%�%�%�%�%��%�%�%�%��%�%�%�%�%�%�%�%�%�%��H�~�.��.��.�.�.�.�.�~�.�.�.�~�.�.�.��.�.�.�.�.�.�.��O�$�<�(:�(:�<�(:�(<�<�(<�<�<�<�<�<�$�<�<�<�$�<�<�<�<�<�<��<�<�<�<��<�<�<�(:�<�<�<�(<�<�<�<�<�<�<�<��%�&�.�$�.�$�.�.�.�.�.�&�.�.�.�&�.�.�.�$�.�.�.�.�.�.�.��K� �<�$<�<�$<�<�<�<�<�<� �<�<�<� �<�<�<�$<�<�<�<�<�<�<�<��,�-�J�1H�1H�J�1H�1J�J�1J�J�J�J�J�J�-�J�J�J�-�J�J�J�J�J�J��J�J�J�J��J�J�J�1H�J�J�J�1J�J�J�J�J�J�J�J��-�.�6�$�6�$�6�6�6�6�6�.�6�6�6�.�6�6�6�$�6�6�6�6�6�6�6��$�%�-��-��-�-�-�-�-�%�-�-�-�%�-�-�-��-�-�-�-�-�-�-��J��'�4�'�4�'�'�'�'�'��'�'�'��'�'�'�4�'�'�'�'�'�'�'r-r:N) r;r<r=r>r?r�r�r�r@r:r-r*r�r��s��-� (�(�4(r-r�c�<�\rSrSrSrSrSrSrSrSr Sr S r g ) �TestLinkExtractionResult��z*Test suite for LinkExtractionResult model.c �~�[SSSSSSSS9n[SS/U/S/S S S SS 9nURnSS/oCU:HoU(d�[R"S U4S X445S[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=pTURn[U5nS o�U :Ho�(Gd"[R"S U 4SXI45S[ R "5;d[R"[5(a[R"[5OSS[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5[R"U 5S.-n SSU 0-n [[R"U 55eS=n=n=p�URSo�U:Ho�(d�[R"S U4SX�45[R"U 5S[ R "5;d[R"U5(a[R"U5OSS.-nSSU0-n[[R"U55eS=p�URnS/oCU:HoU(d�[R"S U4SX445S[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=pTURnS oCU:HoU(d�[R"S U4SX445S[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=pTURnS oCU:HoU(d�[R"S U4S X445S[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=pTUR nS oCU:HoU(d�[R"S U4S!X445S[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=pTUR"nSoCU:HoU(d�[R"S U4S"X445S[ R "5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=pTg)#z+Test creating a basic LinkExtractionResult.rTTrUrVrWrr�rXrYrZr[r\r]rhzhttps://invalid.comr�rp��extracted_links� valid_links� invalid_links� total_links� valid_count� invalid_count�average_reputation_scorer)z7%(py2)s {%(py2)s = %(py0)s.extracted_links } == %(py5)sr_rrrN)zQ%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.valid_links }) } == %(py8)s�len)rr�r�rrczassert %(py10)s�py10r)z%(py1)s == %(py3)s� valid_link�r�r��assert %(py5)sr)z5%(py2)s {%(py2)s = %(py0)s.invalid_links } == %(py5)s)z3%(py2)s {%(py2)s = %(py0)s.total_links } == %(py5)s)z3%(py2)s {%(py2)s = %(py0)s.valid_count } == %(py5)s)z5%(py2)s {%(py2)s = %(py0)s.invalid_count } == %(py5)s)z@%(py2)s {%(py2)s = %(py0)s.average_reputation_score } == %(py5)s)rrr�rrrrrrrr r�r�r�r�r�r�r�)r$r�r_r%r&r'r(r)r�� @py_assert7r5rk� @py_format11r�� @py_format4s r*�(test_create_basic_link_extraction_result�ATestLinkExtractionResult.test_create_basic_link_extraction_result�s$��(�%������!� � �&�2�4I�J�#� �0�1����%)� ���%�%�W�*?�AV�)W�W�)W�W�W�W�W�W�%�W�W�W�W�W�W�v�W�W�W�W�v�W�W�W�%�W�W�W�)W�W�W�W�W�W�W�W��%�%�+�s�%�&�+�!�+�!�+�+�+�+�+�&�+�+�+�+�+�+�s�+�+�+�+�s�+�+�+�+�+�+�6�+�+�+�+�6�+�+�+�%�+�+�+�&�+�+�+�!�+�+�+�+�+�+�+��!�!�!�$�2� �2�2�2�2�2�$�2�2�2�$�2�2�2�2�2�2� �2�2�2�2� �2�2�2�2�2�2�2��#�#�>�(=�'>�>�'>�>�>�>�>�>�#�>�>�>�>�>�>�v�>�>�>�>�v�>�>�>�#�>�>�>�'>�>�>�>�>�>�>�>��!�!�&�Q�&�Q�&�&�&�&�&�!�&�&�&�&�&�&�v�&�&�&�&�v�&�&�&�!�&�&�&�Q�&�&�&�&�&�&�&��!�!�&�Q�&�Q�&�&�&�&�&�!�&�&�&�&�&�&�v�&�&�&�&�v�&�&�&�!�&�&�&�Q�&�&�&�&�&�&�&��#�#�(�q�(�q�(�(�(�(�(�#�(�(�(�(�(�(�v�(�(�(�(�v�(�(�(�#�(�(�(�q�(�(�(�(�(�(�(��.�.�6�$�6�$�6�6�6�6�6�.�6�6�6�6�6�6�v�6�6�6�6�v�6�6�6�.�6�6�6�$�6�6�6�6�6�6�6r-c ���[SSSSSSSS9n[S/U//SSS SS 9nUR5n[U[5oD(Gd+S S [ R "5;d[R"[5(a[R"[5OS S [ R "5;d[R"U5(a[R"U5OS S[ R "5;d[R"[5(a[R"[5OS[R"U5S.-n[[R"U55eSnUSnS/oFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUSn [U 5nSo�U :Ho�(d�[R"SU 4SXJ45S[ R "5;d[R"[5(a[R"[5OS[R"U 5[R"U5[R"U 5S.-n SSU 0-n [[R"U 55eS=n =n=p�USS n [U [5o�(d�SS [ R "5;d[R"[5(a[R"[5OS [R"U 5S[ R "5;d[R"[5(a[R"[5OS[R"U5S.-n[[R"U55eS=p�USS SnSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUS n/oFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptS!ofU;ow(d�[R"S"U4S#Xc45[R"U5S [ R "5;d[R"U5(a[R"U5OS S$.-nS%S&U0-n[[R"U55eS=pgUS!S'nSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUS!S(nSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUS!S)nS oFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptUS!S*nSoFU:How(do[R"SU4SXd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptS+ocS!oFU;ow(do[R"S"U4S,Xd45[R"U5[R"U5S.-nSSU0-n[[R"U55eS=n=ptg)-z3Test converting LinkExtractionResult to dictionary.rTTrUrVrWrrr�rprr�r�r�rur�r�Nr�rr�r�r{rbr�)z0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py7)sr�r/r1r2z5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) })rrr�rrXr��summary��in�z%(py1)s in %(py3)sr�r�rr�r�r�r��recommendation)z%(py1)s in %(py4)s)rrr�r�r�rrrrrrr rr�)r$r�r_rur'r|r�r�rjr%r5r6r)r7r&r(r�s r*�#test_link_extraction_result_to_dict�<TestLinkExtractionResult.test_link_extraction_result_to_dict�s���(�%������!� � �&�2�3�#� �����%)� ���~�~����$��%�%�%�%�%�%�%�%�%�z�%�%�%�%�z�%�%�%�%�%�%�$�%�%�%�%�$�%�%�%�%�%�%��%�%�%�%��%�%�%�%�%�%�%�%�%�%��%�&�A�+@�*A�A�*A�A�A�A�A�A�&�A�A�A�&�A�A�A�*A�A�A�A�A�A�A�A�� �&�,�s�&�'�,�1�,�1�,�,�,�,�,�'�,�,�,�,�,�,�s�,�,�,�,�s�,�,�,�&�,�,�,�'�,�,�,�1�,�,�,�,�,�,�,��}�-�a�0�7�z�0�$�7�7�7�7�7�7�7�7�7�z�7�7�7�7�z�7�7�7�0�7�7�7�7�7�7�$�7�7�7�7�$�7�7�7�7�7�7�7�7�7�7��M�"�1�%�e�,�E�0E�E�0E�E�E�E�E�E�,�E�E�E�,�E�E�E�0E�E�E�E�E�E�E�E��O�$�*��*��*�*�*�*�*�$�*�*�*�$�*�*�*��*�*�*�*�*�*�*�� �D� � � � � �y� � � �y� � � � � � �D� � � � �D� � � � � � � ��I��}�-�2��2��2�2�2�2�2�-�2�2�2�-�2�2�2��2�2�2�2�2�2�2��I��}�-�2��2��2�2�2�2�2�-�2�2�2�-�2�2�2��2�2�2�2�2�2�2��I���/�4�1�4�1�4�4�4�4�4�/�4�4�4�/�4�4�4�1�4�4�4�4�4�4�4��I��9�:�B�d�B�d�B�B�B�B�B�:�B�B�B�:�B�B�B�d�B�B�B�B�B�B�B��2� �?�2�?�2�2�2�2�2��2�2�2��2�2�2�?�2�2�2�2�2�2�2r-c ��[///SSSSS9nUR5nSo3U;oD(d�[R"SU4SX245[R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nS S U0-n[[R"U55eS =p4g ) z.Test recommendation for high reputation score.rrrr�zhighly reputabler�r�r�r�r�rN� r�_get_recommendationrrrrrrrr �r$r_r�r�r�r�r(s r*�'test_get_recommendation_high_reputation�@TestLinkExtractionResult.test_get_recommendation_high_reputations���%�������%)� �� �3�3�5��!�3�^�3�3�3�3�3�!�3�3�3�!�3�3�3�3�3�3�^�3�3�3�3�^�3�3�3�3�3�3�3r-c ��[///SSSSS9nUR5nSo3U;oD(d�[R"SU4SX245[R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nS S U0-n[[R"U55eS =p4g ) z2Test recommendation for moderate reputation score.rg@P@r�zmoderate reputationr�r�r�r�r�rNr�r�s r*�+test_get_recommendation_moderate_reputation�DTestLinkExtractionResult.test_get_recommendation_moderate_reputation.s���%�������%)� �� �3�3�5��$�6��6�6�6�6�6�$�6�6�6�$�6�6�6�6�6�6��6�6�6�6��6�6�6�6�6�6�6r-c ��[///SSSSS9nUR5nSo3U;oD(d�[R"SU4SX245[R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nS S U0-n[[R"U55eS =p4g ) z-Test recommendation for low reputation score.rg�F@r�zlow reputationr�r�r�r�r�rNr�r�s r*�&test_get_recommendation_low_reputation�?TestLinkExtractionResult.test_get_recommendation_low_reputation=s���%�������%)� �� �3�3�5���1�>�1�1�1�1�1��1�1�1��1�1�1�1�1�1�>�1�1�1�1�>�1�1�1�1�1�1�1r-c ��[///SSSSS9nUR5nSo3U;oD(d�[R"SU4SX245[R"U5S[ R "5;d[R"U5(a[R"U5OSS.-nS S U0-n[[R"U55eS =p4g ) z4Test recommendation for suspicious reputation score.rg>@r�� suspiciousr�r�r�r�r�rNr�r�s r*�"test_get_recommendation_suspicious�;TestLinkExtractionResult.test_get_recommendation_suspiciousLs���%�������%)� �� �3�3�5���-�~�-�-�-�-�-�|�-�-�-�|�-�-�-�-�-�-�~�-�-�-�-�~�-�-�-�-�-�-�-r-r:N) r;r<r=r>r?r�r�r�r�r�r�r@r:r-r*r�r��s$��4�7�>#3�J 4� 7� 2� .r-r�)r?�builtinsr�_pytest.assertion.rewrite� assertion�rewriter�pytestr�url_reputation_checker.modelsrrrrrr rBrQr�r�r:r-r*�<module>r�sX����� ���� 2� 2� F� F� _/�_/�DD(�D(�NA.�A.r-

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prismon/reputation-checker-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server