2
0
mirror of https://github.com/VinylDNS/vinyldns synced 2025-08-31 06:15:49 +00:00

reject recordset names with spaces (#908)

This commit is contained in:
Britney Wright
2019-11-27 09:48:44 -05:00
committed by GitHub
parent c0e5ea7139
commit 31b86f9733
3 changed files with 72 additions and 2 deletions

View File

@@ -1165,7 +1165,7 @@ def test_reverse_create_recordset_reverse_record_types(shared_zone_test_context,
client.wait_until_recordset_change_status(result, 'Complete')
def test_create_invalid_recordset_name(shared_zone_test_context):
def test_create_invalid_length_recordset_name(shared_zone_test_context):
"""
Test creating a record set where the name is too long
"""
@@ -1185,6 +1185,26 @@ def test_create_invalid_recordset_name(shared_zone_test_context):
client.create_recordset(new_rs, status=400)
def test_create_recordset_name_with_spaces(shared_zone_test_context):
"""
Test creating a record set with any spaces fails
"""
client = shared_zone_test_context.ok_vinyldns_client
new_rs = {
'zoneId': shared_zone_test_context.system_test_zone['id'],
'name': 'a a',
'type': 'A',
'ttl': 100,
'records': [
{
'address': '10.1.1.1'
}
]
}
client.create_recordset(new_rs, status=400)
def test_user_cannot_create_record_in_unowned_zone(shared_zone_test_context):
"""
Test user can create a record that it a shared zone that it is a member of

View File

@@ -382,6 +382,52 @@ def test_update_recordset_long_name(shared_zone_test_context):
client.wait_until_recordset_change_status(result, 'Complete')
def test_update_recordset_with_spaces(shared_zone_test_context):
"""
Test updating a record set where the name contains spaces
"""
client = shared_zone_test_context.ok_vinyldns_client
result_rs = None
try:
new_rs = {
'id': 'abc',
'zoneId': shared_zone_test_context.system_test_zone['id'],
'name': 'a',
'type': 'A',
'ttl': 100,
'records': [
{
'address': '10.1.1.1'
}
]
}
result = client.create_recordset(new_rs, status=202)
result_rs = result['recordSet']
verify_recordset(result_rs, new_rs)
result_rs = client.wait_until_recordset_change_status(result, 'Complete')['recordSet']
update_rs = {
'id': 'abc',
'zoneId': shared_zone_test_context.system_test_zone['id'],
'name': 'a a',
'type': 'A',
'ttl': 100,
'records': [
{
'address': '10.1.1.1'
}
]
}
client.update_recordset(update_rs, status=400)
finally:
if result_rs:
result = client.delete_recordset(result_rs['zoneId'], result_rs['id'], status=(202, 404))
if result:
client.wait_until_recordset_change_status(result, 'Complete')
def test_user_can_update_record_in_zone_it_owns(shared_zone_test_context):
"""
Test user can update a record that it owns

View File

@@ -124,6 +124,7 @@ trait DnsJsonProtocol extends JsonValidation {
def checkDomainNameLen(s: String): Boolean = s.length <= 255
def nameContainsDots(s: String): Boolean = s.contains(".")
def nameDoesNotContainSpaces(s: String): Boolean = !s.contains(" ")
val ipv4Re =
"""^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$""".r
@@ -162,7 +163,10 @@ trait DnsJsonProtocol extends JsonValidation {
(js \ "zoneId").required[String]("Missing RecordSet.zoneId"),
(js \ "name")
.required[String]("Missing RecordSet.name")
.check("Record name must not exceed 255 characters" -> checkDomainNameLen),
.check(
"Record name must not exceed 255 characters" -> checkDomainNameLen,
"Record name cannot contain spaces" -> nameDoesNotContainSpaces
),
recordType,
(js \ "ttl")
.required[Long]("Missing RecordSet.ttl")