From 3a7eaf8e9594eaa7568e5824dd6437eed74fda53 Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Wed, 13 Mar 2024 10:47:23 +0100
Subject: [PATCH] Re-introduce old faker provider for ip networks

Since the default one does not support limiting the subnet size
---
 test/conftest.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/test/conftest.py b/test/conftest.py
index ed7459f9..54343abf 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -1,4 +1,5 @@
 import contextlib
+import ipaddress
 import logging
 import os
 from pathlib import Path
@@ -41,6 +42,23 @@ class UseJuniperSide(strEnum):
 
 
 class FakerProvider(BaseProvider):
+    def ipv4_network(self, *, min_subnet=1, max_subnet=32) -> ipaddress.IPv4Network:
+        subnet = str(self.generator.random_int(min=min_subnet, max=max_subnet))
+        ipv4 = self.generator.ipv4()
+        interface = ipaddress.IPv4Interface(ipv4 + "/" + subnet)
+        # Extra step for converting ``10.53.92.39/24`` to ``10.53.92.0/24``
+        network = interface.network.network_address
+
+        return ipaddress.IPv4Network(str(network) + "/" + subnet)
+
+    def ipv6_network(self, *, min_subnet=1, max_subnet=128) -> ipaddress.IPv6Network:
+        subnet = str(self.generator.random_int(min=min_subnet, max=max_subnet))
+        ipv6 = self.generator.ipv6()
+        interface = ipaddress.IPv6Interface(ipv6 + "/" + subnet)
+        network = interface.network.network_address
+
+        return ipaddress.IPv6Network(str(network) + "/" + subnet)
+
     def tt_number(self) -> str:
         random_date = self.generator.date(pattern="%Y%m%d")
         random_int = self.generator.random_int(min=10000000, max=99999999)
-- 
GitLab