diff --git a/gvm/protocols/gmp/_gmp.py b/gvm/protocols/gmp/_gmp.py index 10ce179f..80d11ad0 100644 --- a/gvm/protocols/gmp/_gmp.py +++ b/gvm/protocols/gmp/_gmp.py @@ -91,9 +91,11 @@ def determine_supported_gmp(self) -> SUPPORTED_GMP_VERSIONS: gmp_class = GMPv224 elif major_version == 22 and minor_version == 5: gmp_class = GMPv225 - elif major_version == 22 and minor_version >= 6: + elif major_version == 22 and minor_version == 6: gmp_class = GMPv226 - if minor_version > 6: + elif major_version == 22 and minor_version >= 7: + gmp_class = GMPv227 + if minor_version > 7: warnings.warn( "Remote manager daemon uses a newer GMP version than " f"supported by python-gvm {__version__}. Please update to " diff --git a/tests/protocols/gmp/test_context_manager.py b/tests/protocols/gmp/test_context_manager.py index 07b39a56..af0877ee 100644 --- a/tests/protocols/gmp/test_context_manager.py +++ b/tests/protocols/gmp/test_context_manager.py @@ -11,6 +11,7 @@ from gvm.protocols.gmp._gmp224 import GMPv224 from gvm.protocols.gmp._gmp225 import GMPv225 from gvm.protocols.gmp._gmp226 import GMPv226 +from gvm.protocols.gmp._gmp227 import GMPv227 from tests.protocols import GmpTestCase @@ -123,15 +124,49 @@ def test_select_gmpv226(self): with self.gmp as gmp: self.assertEqual(gmp.get_protocol_version(), (22, 6)) self.assertIsInstance(gmp, GMPv226) + + def test_select_gmpv227(self): self.connection.read.return_value( b'' - b"22.6" + b"22.07" b"" ) with self.gmp as gmp: - self.assertEqual(gmp.get_protocol_version(), (22, 6)) - self.assertIsInstance(gmp, GMPv226) + self.assertEqual(gmp.get_protocol_version(), (22, 7)) + self.assertIsInstance(gmp, GMPv227) + + self.connection.read.return_value( + b'' + b"22.7" + b"" + ) + + with self.gmp as gmp: + self.assertEqual(gmp.get_protocol_version(), (22, 7)) + self.assertIsInstance(gmp, GMPv227) + + def test_next_version_fallback(self): + self.connection.read.return_value( + b'' + b"22.8" + b"" + ) + + with self.gmp as gmp: + self.assertEqual(gmp.get_protocol_version(), (22, 7)) + self.assertIsInstance(gmp, GMPv227) + + def test_newer_version_fallback(self): + self.connection.read.return_value( + b'' + b"22.20" + b"" + ) + + with self.gmp as gmp: + self.assertEqual(gmp.get_protocol_version(), (22, 7)) + self.assertIsInstance(gmp, GMPv227) def test_unknown_protocol(self): self.connection.read.return_value(