mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
Route-server URL starting with ssh:// #462
This commit is contained in:
@@ -1174,6 +1174,30 @@ class TestJSON(unittest.TestCase):
|
||||
test_success=False,
|
||||
)
|
||||
|
||||
##########################################################################
|
||||
|
||||
def test_org_admin_002_POST_net_looking_glass_url(self):
|
||||
for scheme in ["http","https","ssh","telnet"]:
|
||||
r_data = self.assert_create(
|
||||
self.db_org_admin,
|
||||
"net",
|
||||
self.make_data_net(asn=9000900, looking_glass="{}://foo.bar".format(scheme)),
|
||||
test_failures={"invalid": {"looking_glass": "foo://www.bar.com"}}
|
||||
)
|
||||
Network.objects.get(id=r_data["id"]).delete(hard=True)
|
||||
|
||||
##########################################################################
|
||||
|
||||
def test_org_admin_002_POST_net_route_server_url(self):
|
||||
for scheme in ["http","https","ssh","telnet"]:
|
||||
r_data = self.assert_create(
|
||||
self.db_org_admin,
|
||||
"net",
|
||||
self.make_data_net(asn=9000900, route_server="{}://foo.bar".format(scheme)),
|
||||
test_failures={"invalid": {"route_server": "foo://www.bar.com"}}
|
||||
)
|
||||
Network.objects.get(id=r_data["id"]).delete(hard=True)
|
||||
|
||||
##########################################################################
|
||||
def test_org_admin_002_POST_net_deleted(self):
|
||||
data = self.make_data_net(asn=SHARED["net_rw_dupe_deleted"].asn)
|
||||
|
||||
18
peeringdb_server/migrations/0031_auto_20200404_0910.py
Normal file
18
peeringdb_server/migrations/0031_auto_20200404_0910.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 2.2.9 on 2020-04-04 09:10
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('peeringdb_server', '0030_affiliation_request_status_add_canceled'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='network',
|
||||
name='info_never_via_route_servers',
|
||||
field=models.BooleanField(default=False, help_text='Indicates if this network will announce its routes via route servers or not'),
|
||||
),
|
||||
]
|
||||
24
peeringdb_server/migrations/0032_net_lg_rs_url.py
Normal file
24
peeringdb_server/migrations/0032_net_lg_rs_url.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 2.2.9 on 2020-04-04 09:11
|
||||
|
||||
from django.db import migrations
|
||||
import django_peeringdb.models.abstract
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('peeringdb_server', '0031_auto_20200404_0910'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='network',
|
||||
name='looking_glass',
|
||||
field=django_peeringdb.models.abstract.LG_URLField(blank=True, max_length=255),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='network',
|
||||
name='route_server',
|
||||
field=django_peeringdb.models.abstract.LG_URLField(blank=True, max_length=255),
|
||||
),
|
||||
]
|
||||
@@ -3,7 +3,7 @@ import re
|
||||
import reversion
|
||||
|
||||
from django_inet.rest import IPAddressField, IPPrefixField
|
||||
from django_inet.models import URLValidator
|
||||
from django.core.validators import URLValidator
|
||||
from django.db.models.query import QuerySet
|
||||
from django.db.models import Prefetch, Q, Sum, IntegerField, Case, When
|
||||
from django.db import models, transaction, IntegrityError
|
||||
@@ -320,8 +320,9 @@ class FieldMethodValidator(object):
|
||||
|
||||
class ExtendedURLField(serializers.URLField):
|
||||
def __init__(self, **kwargs):
|
||||
schemes = kwargs.pop("schemes", None)
|
||||
super(ExtendedURLField, self).__init__(**kwargs)
|
||||
validator = URLValidator(message=self.error_messages["invalid"])
|
||||
validator = URLValidator(message=self.error_messages["invalid"], schemes=schemes)
|
||||
self.validators = []
|
||||
self.validators.append(validator)
|
||||
|
||||
@@ -1533,7 +1534,16 @@ class NetworkSerializer(ModelSerializer):
|
||||
)
|
||||
org = serializers.SerializerMethodField()
|
||||
|
||||
route_server = ExtendedURLField(required=False, allow_blank=True)
|
||||
route_server = serializers.CharField(
|
||||
required=False, allow_blank=True,
|
||||
validators=[URLValidator(schemes=["http", "https", "telnet", "ssh"])]
|
||||
)
|
||||
|
||||
looking_glass = serializers.CharField(
|
||||
required=False, allow_blank=True,
|
||||
validators=[URLValidator(schemes=["http", "https", "telnet", "ssh"])]
|
||||
)
|
||||
|
||||
|
||||
info_prefixes4 = SaneIntegerField(
|
||||
allow_null=False, required=False, validators=[validate_info_prefixes4]
|
||||
|
||||
Reference in New Issue
Block a user