Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • digit-c4/netbox-plugins
  • abramda/netbox-plugins-for-git-lab-pilot
2 results
Show changes
Commits on Source (3)
......@@ -123,6 +123,10 @@ class MappingSerializer(NetBoxModelSerializer):
"proxy_cache",
"proxy_read_timeout",
"client_max_body_size",
"proxy_send_timeout",
"proxy_max_temp_file_size",
"proxy_buffering",
"proxy_request_buffering",
"extra_protocols",
"sorry_page",
"custom_fields",
......
......@@ -28,6 +28,10 @@ class MappingFilterSet(NetBoxModelFilterSet):
"proxy_cache",
"proxy_read_timeout",
"client_max_body_size",
"proxy_send_timeout",
"proxy_buffering",
"proxy_request_buffering",
"proxy_max_temp_file_size",
"sorry_page",
)
......
......@@ -41,7 +41,11 @@ class MappingForm(NetBoxModelForm):
"keepalive_timeout",
"proxy_cache",
"proxy_read_timeout",
"proxy_send_timeout",
"client_max_body_size",
"proxy_max_temp_file_size",
"proxy_buffering",
"proxy_request_buffering",
"sorry_page",
"Comment",
"tags",
......@@ -51,7 +55,9 @@ class MappingForm(NetBoxModelForm):
"keepalive_requests": "Min value 100 requests, max 5000 requests, default 1000 requests.",
"keepalive_timeout": "In seconds. Min value 1, max 300, default 75.",
"proxy_read_timeout": "In seconds. Min value 1, max 300, default 60.",
"client_max_body_size": "In Mega Bytes. Min 1, max 255, default 1.",
"proxy_send_timeout": "In seconds. Min value 1, max 300, default 60",
"proxy_max_temp_file_size": "In MB. Min value 1, max 2048, default 1024.",
"client_max_body_size": "In MB. Min 1, max 2048, default 1."
}
labels = {
"source": "Source URL",
......@@ -59,13 +65,15 @@ class MappingForm(NetBoxModelForm):
"testingpage": "Testing Page URL",
"keepalive_timeout": "Keepalive timeout (s)",
"proxy_read_timeout": " Proxy read timeout (s)",
"proxy_max_temp_file_size": "Proxy maximum temp file size (MB)",
"client_max_body_size": "Client max body size (MB)",
"sorry_page": "Sorry Page URL",
"protocols": "Protocols",
}
class MappingFilterForm(NetBoxModelFilterSetForm):
class MappingFilterForm(NetBoxModelFilterSetForm): # The proxy_send_timeout setting is missing, as well as the proxy_max_temp_file_size,
# proxy_buffering, proxy_request_buffering and tcp_nodelay
"""Mapping filter form definition class"""
model = Mapping
......@@ -103,8 +111,20 @@ class MappingFilterForm(NetBoxModelFilterSetForm):
required=False, widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES)
)
proxy_read_timeout = forms.IntegerField(min_value=1, max_value=300, required=False)
proxy_send_timeout = forms.IntegerField(
min_value=1, max_value=300, required=False
)
proxy_max_temp_file_size = forms.IntegerField(
min_value=1, max_value=2048, required=False
)
client_max_body_size = forms.IntegerField(
min_value=1, max_value=255, required=False
min_value=1, max_value=2000, required=False
)
proxy_buffering = forms.BooleanField(
required=False, widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES)
)
proxy_request_buffering = forms.BooleanField(
required=False, widget=forms.Select(choices=BOOLEAN_WITH_BLANK_CHOICES)
)
sorry_page = forms.CharField(
max_length=URL_MAX_SIZE, min_length=1, required=False, label="Sorry Page URL"
......@@ -138,11 +158,23 @@ class MappingImportForm(NetBoxModelImportForm):
required=False,
help_text="In seconds. Min value 1, max 300, default 60.",
)
proxy_send_timeout = forms.IntegerField(
min_value=1,
max_value=300,
required=False,
help_text="In seconds. Min value 1, max 300, default 60.",
)
proxy_max_temp_file_size = forms.IntegerField(
min_value=1,
max_value=2048,
required=False,
help_text="In m. Min value 1, max 2048, default 1024.",
)
client_max_body_size = forms.IntegerField(
min_value=1,
max_value=255,
max_value=2000,
required=False,
help_text="In Mega Bytes. Min 1, max 255, default 1.",
help_text="In Mega Bytes. Min 1, max 2000, default 1.",
)
sorry_page = forms.CharField(
max_length=URL_MAX_SIZE,
......@@ -166,7 +198,11 @@ class MappingImportForm(NetBoxModelImportForm):
"keepalive_timeout",
"proxy_cache",
"proxy_read_timeout",
"proxy_send_timeout",
"proxy_max_temp_file_size",
"client_max_body_size",
"proxy_buffering",
"proxy_request_buffering",
"sorry_page",
)
help_texts = {
......@@ -176,6 +212,8 @@ class MappingImportForm(NetBoxModelImportForm):
"webdav": 'Define if the mapping handle Webdav protocol. Default to "false"',
"gzip_proxied": 'Is gzip proxied. Default to "false"',
"proxy_cache": 'Is proxy cache activated. Default to "false"',
"proxy_buffering": 'Is buffering activated. Default to "true"',
"proxy_request_buffering": 'Is request buffering activated. Default to "true"'
}
......
"""Migration File"""
# pylint: disable=C0103
import django.contrib.postgres.fields
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import netbox_rps_plugin.models
class Migration(migrations.Migration):
"""Migration Class"""
dependencies = [
(
"netbox_rps_plugin",
"0011_alter_mapping_extra_protocols_and_more"
),
]
operations = [
migrations.AddField(
model_name="mapping",
name="proxy_send_timeout",
field=models.IntegerField(default=60)
),
migrations.AddField(
model_name="mapping",
name="proxy_max_temp_file_size",
field=models.IntegerField(default=1024)
),
migrations.AddField(
model_name="mapping",
name="proxy_buffering",
field=models.BooleanField(default=True)
),
migrations.AddField(
model_name="mapping",
name="proxy_request_buffering",
field=models.BooleanField(default=True)
),
migrations.AlterField(
model_name="mapping",
name="client_max_body_size",
field=models.IntegerField(
default=1,
validators=[
django.core.validators.MinValueValidator(1),
django.core.validators.MaxValueValidator(2048),
],
),
)
]
......@@ -131,8 +131,17 @@ class Mapping(NetBoxModel):
proxy_read_timeout = models.IntegerField(
default=60, validators=[MinValueValidator(1), MaxValueValidator(300)]
)
proxy_send_timeout = models.IntegerField(
default=60, validators=[MinValueValidator(1), MaxValueValidator(300)]
)
proxy_max_temp_file_size = models.IntegerField(
default=1, validators=[MinValueValidator(1), MaxValueValidator(2048)]
)
proxy_buffering = models.BooleanField(default=True)
proxy_request_buffering = models.BooleanField(default=True)
client_max_body_size = models.IntegerField(
default=1, validators=[MinValueValidator(1), MaxValueValidator(255)]
default=1, validators=[MinValueValidator(1), MaxValueValidator(2048)]
)
sorry_page = models.URLField(
max_length=URL_MAX_SIZE,
......
......@@ -104,6 +104,22 @@
<th scope="row">Client max body size</th>
<td>{{ object.client_max_body_size }}&nbsp;MB</td>
</tr>
<tr>
<th scope="row">Proxy send timeout</th>
<td>{{ object.proxy_send_timeout }}&nbsp;MB</td>
</tr>
<tr>
<th scope="row">Proxy max temp file size</th>
<td>{{ object.proxy_max_temp_file_size }}&nbsp;MB</td>
</tr>
<tr>
<th scope="row">Proxy buffering</th>
<td>{{ object.proxy_buffering }}&nbsp;MB</td>
</tr>
<tr>
<th scope="row">Proxy request buffering</th>
<td>{{ object.proxy_request_buffering }}&nbsp;MB</td>
</tr>
<tr>
<th scope="row">Sorry Page</th>
<td>{{ object.sorry_page }}</td>
......
......@@ -358,7 +358,7 @@ class TestMappingPropertiesValidation(Base):
)
def test_that_client_max_body_size_have_limit(self) -> None:
"""Test that client_max_body_size property is between 1 and 255"""
"""Test that client_max_body_size property is between 1 and 2048"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
......@@ -382,7 +382,7 @@ class TestMappingPropertiesValidation(Base):
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"client_max_body_size": 256,
"client_max_body_size": 2049,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
......@@ -391,7 +391,7 @@ class TestMappingPropertiesValidation(Base):
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content,
b'{"client_max_body_size":["Ensure this value is less than or equal to 255."]}',
b'{"client_max_body_size":["Ensure this value is less than or equal to 2048."]}',
)
response = requests.post(
......@@ -399,18 +399,18 @@ class TestMappingPropertiesValidation(Base):
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"client_max_body_size": 200,
"client_max_body_size": 2000,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["client_max_body_size"], 200)
self.assertEqual(response.json()["client_max_body_size"], 2000)
self.mapping_id = json.loads(response.content)["id"]
def test_that_client_max_body_size_default_value_is_60(self) -> None:
def test_that_client_max_body_size_default_value_is_1(self) -> None:
"""Test that client_max_body_size property default value is 1"""
response = requests.post(
......@@ -447,6 +447,257 @@ class TestMappingPropertiesValidation(Base):
response.content, b'{"proxy_read_timeout":["A valid integer is required."]}'
)
def test_that_proxy_buffering_is_truee_by_default(self) -> None:
"""Test that proxy buffering property is true by default"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_buffering"], True)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_buffering_is_boolean(self) -> None:
"""Test that proxy buffering property is a boolean"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_buffering": False,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_buffering"], False)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_request_buffering_is_truee_by_default(self) -> None:
"""Test that proxy request buffering property is true by default"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_request_buffering"], True)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_request_buffering_is_boolean(self) -> None:
"""Test that proxy request buffering property is a boolean"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_request_buffering": False,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_request_buffering"], False)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_send_timeout_have_limit(self) -> None:
"""Test that proxy_send_timeout property is between 1 and 300"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_send_timeout": 0,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content,
b'{"proxy_send_timeout":["Ensure this value is greater than or equal to 1."]}',
)
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_send_timeout": 301,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content,
b'{"proxy_send_timeout":["Ensure this value is less than or equal to 300."]}',
)
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_send_timeout": 200,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_send_timeout"], 200)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_send_timeout_default_value_is_60(self) -> None:
"""Test that proxy_send_timeout property default value is 60"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_send_timeout"], 60)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_send_timeout_default_type_is_integer(self) -> None:
"""Test that proxy_send_timeout property type is integer"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_send_timeout": "toto",
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content, b'{"proxy_send_timeout":["A valid integer is required."]}'
)
def test_that_proxy_max_temp_file_size_have_limit(self) -> None:
"""Test that proxy_max_temp_file_size property is between 1 and 2048"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_max_temp_file_size": 0,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content,
b'{"proxy_max_temp_file_size":["Ensure this value is greater than or equal to 1."]}',
)
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_max_temp_file_size": 2049,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content,
b'{"proxy_max_temp_file_size":["Ensure this value is less than or equal to 2048."]}',
)
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_max_temp_file_size": 2048,
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_max_temp_file_size"], 200)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_max_temp_file_size_default_value_is_1024(self) -> None:
"""Test that proxy_max_temp_file_size property default value is 1024"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 201)
self.assertEqual(response.json()["proxy_max_temp_file_size"], 1024)
self.mapping_id = json.loads(response.content)["id"]
def test_that_proxy_max_temp_file_size_default_type_is_integer(self) -> None:
"""Test that proxy_max_temp_file_size property type is integer"""
response = requests.post(
url=f"http://{HOST}:{PORT}/api/plugins/rps/mapping/",
json={
"source": "https://truc00.com/api",
"target": "http://10.10.10.10:1800/api",
"proxy_max_temp_file_size": "toto",
},
headers={"Authorization": f"Token {API_KEY}"},
timeout=5,
)
self.assertEqual(response.status_code, 400)
self.assertEqual(
response.content, b'{"proxy_max_temp_file_size":["A valid integer is required."]}'
)
if __name__ == "__main__":
unittest.main()