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(