| 74 | |
| 75 | |
| 76 | class TestGetUnverifiedHeader: |
| 77 | def test_valid_header_and_auth_tag(self): |
| 78 | expected_header = {"alg": "RSA1_5", "enc": "A128CBC-HS256"} |
| 79 | jwe_str = ( |
| 80 | "eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0." |
| 81 | "UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7" |
| 82 | "Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgN" |
| 83 | "Z__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRir" |
| 84 | "b6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8" |
| 85 | "OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0m" |
| 86 | "cKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A" |
| 87 | "." |
| 88 | "AxY8DCtDaGlsbGljb3RoZQ." |
| 89 | "KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY." |
| 90 | "9hH0vgRfYgPnAHOd8stkvw" |
| 91 | ) |
| 92 | actual_header = jwe.get_unverified_header(jwe_str) |
| 93 | assert expected_header == actual_header |
| 94 | |
| 95 | def test_invalid_jwe_string_raises_jwe_parse_error(self): |
| 96 | with pytest.raises(JWEParseError): |
| 97 | jwe.get_unverified_header("invalid jwe string") |
| 98 | |
| 99 | def test_non_json_header_section_raises_jwe_parse_error(self): |
| 100 | jwe_str = ( |
| 101 | "not json." |
| 102 | "UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7" |
| 103 | "Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgN" |
| 104 | "Z__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRir" |
| 105 | "b6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8" |
| 106 | "OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0m" |
| 107 | "cKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A" |
| 108 | "." |
| 109 | "AxY8DCtDaGlsbGljb3RoZQ." |
| 110 | "KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY." |
| 111 | "9hH0vgRfYgPnAHOd8stkvw" |
| 112 | ) |
| 113 | |
| 114 | with pytest.raises(JWEParseError): |
| 115 | jwe.get_unverified_header(jwe_str) |
| 116 | |
| 117 | def test_wrong_auth_tag_is_ignored(self): |
| 118 | expected_header = {"alg": "RSA1_5", "enc": "A128CBC-HS256"} |
| 119 | jwe_str = ( |
| 120 | "eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0." |
| 121 | "UGhIOguC7IuEvf_NPVaXsGMoLOmwvc1GyqlIKOK1nN94nHPoltGRhWhw7" |
| 122 | "Zx0-kFm1NJn8LE9XShH59_i8J0PH5ZZyNfGy2xGdULU7sHNF6Gp2vPLgN" |
| 123 | "Z__deLKxGHZ7PcHALUzoOegEI-8E66jX2E4zyJKx-YxzZIItRzC5hlRir" |
| 124 | "b6Y5Cl_p-ko3YvkkysZIFNPccxRU7qve1WYPxqbb2Yw8kZqa2rMWI5ng8" |
| 125 | "OtvzlV7elprCbuPhcCdZ6XDP0_F8rkXds2vE4X-ncOIM8hAYHHi29NX0m" |
| 126 | "cKiRaD0-D-ljQTP-cFPgwCp6X-nZZd9OHBv-B3oWh2TbqmScqXMR4gp_A" |
| 127 | "." |
| 128 | "AxY8DCtDaGlsbGljb3RoZQ." |
| 129 | "KDlTtXchhZTGufMYmOYGS4HffxPSUrfmqCHXaI9wOGY." |
| 130 | "invalid" |
| 131 | ) |
| 132 | actual_header = jwe.get_unverified_header(jwe_str) |
| 133 | assert expected_header == actual_header |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…