1369 lines
39 KiB
C#
1369 lines
39 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using AMWD.Net.Api.Cloudflare;
|
|
using AMWD.Net.Api.Cloudflare.Zones;
|
|
using AMWD.Net.Api.Cloudflare.Zones.Internals.Requests;
|
|
using Moq;
|
|
|
|
namespace Cloudflare.Zones.Tests.DnsRecords
|
|
{
|
|
[TestClass]
|
|
public class CreateDnsRecordTest
|
|
{
|
|
private const string ZoneId = "023e105f4ecef8ad9ca31a8372d0c353";
|
|
|
|
private Mock<ICloudflareClient> _clientMock;
|
|
|
|
private List<(string RequestPath, InternalDnsRecordRequest Request, IQueryParameterFilter QueryFilter)> _callbacks;
|
|
private CloudflareResponse<DnsRecord> _response;
|
|
private CreateDnsRecordRequest _request;
|
|
|
|
[TestInitialize]
|
|
public void Initialize()
|
|
{
|
|
_callbacks = [];
|
|
|
|
_response = new CloudflareResponse<DnsRecord>
|
|
{
|
|
Success = true,
|
|
Messages = [
|
|
new ResponseInfo
|
|
{
|
|
Code = 1000,
|
|
Message = "Message 1",
|
|
}
|
|
],
|
|
Errors = [
|
|
new ResponseInfo
|
|
{
|
|
Code = 1000,
|
|
Message = "Error 1",
|
|
}
|
|
],
|
|
Result = new DnsRecord
|
|
{
|
|
Id = "023e105f4ecef8ad9ca31a8372d0c353",
|
|
ZoneId = ZoneId,
|
|
ZoneName = "example.com",
|
|
Name = "example.com",
|
|
Type = DnsRecordType.Caa,
|
|
Content = "0 issuewild \"letsencrypt.org\"",
|
|
Proxiable = false,
|
|
Proxied = false,
|
|
Ttl = 1,
|
|
Data = new DnsRecord.CaaData(0, "issuewild", "letsencrypt.org"),
|
|
Settings = new(),
|
|
Meta = new DnsRecordMeta
|
|
{
|
|
AutoAdded = false,
|
|
ManagedByApps = false,
|
|
ManagedByArgoTunnel = false
|
|
},
|
|
Comment = "Certificate authority verification record",
|
|
Tags = [],
|
|
CreatedOn = DateTime.Parse("2014-01-01T05:20:00.12345Z"),
|
|
ModifiedOn = DateTime.Parse("2014-01-01T05:20:00.12345Z"),
|
|
CommentModifiedOn = DateTime.Parse("2024-01-01T05:20:00.12345Z"),
|
|
TagsModifiedOn = DateTime.Parse("2025-01-01T05:20:00.12345Z"),
|
|
}
|
|
};
|
|
|
|
_request = new CreateDnsRecordRequest(ZoneId, "example.com", DnsRecordType.Loc)
|
|
{
|
|
Comment = "Server location record",
|
|
Data = new DnsRecord.LocData(
|
|
latitudeDegrees: 48,
|
|
latitudeMinutes: 8,
|
|
latitudeSeconds: 8.12682,
|
|
latitudeDirection: DnsRecord.LatitudeDirection.North,
|
|
|
|
longitudeDegrees: 11,
|
|
longitudeMinutes: 34,
|
|
longitudeSeconds: 30.9576,
|
|
longitudeDirection: DnsRecord.LongitudeDirection.East,
|
|
|
|
altitude: 100,
|
|
size: 80,
|
|
precisionHorizontal: 500,
|
|
precisionVertical: 400
|
|
),
|
|
Proxied = false,
|
|
Settings = new(),
|
|
Tags = ["important"],
|
|
Ttl = 1,
|
|
};
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ShouldCreateDnsRecord()
|
|
{
|
|
// Arrange
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.AreEqual($"zones/{ZoneId}/dns_records", callback.RequestPath);
|
|
Assert.IsNull(callback.QueryFilter);
|
|
|
|
Assert.IsNotNull(callback.Request);
|
|
Assert.AreEqual(_request.Name, callback.Request.Name);
|
|
Assert.AreEqual(_request.Type, callback.Request.Type);
|
|
Assert.IsNull(callback.Request.Content);
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsNull(callback.Request.Settings);
|
|
Assert.IsNull(callback.Request.Priority);
|
|
Assert.AreEqual(_request.Proxied, callback.Request.Proxied);
|
|
Assert.AreEqual(_request.Comment, callback.Request.Comment);
|
|
Assert.AreEqual(_request.Ttl, callback.Request.Ttl);
|
|
CollectionAssert.AreEqual(_request.Tags.ToArray(), callback.Request.Tags.ToArray());
|
|
|
|
Assert.IsInstanceOfType<DnsRecord.LocData>(callback.Request.Data);
|
|
var locData = callback.Request.Data as DnsRecord.LocData;
|
|
Assert.AreEqual(48, locData.LatitudeDegrees);
|
|
Assert.AreEqual(8, locData.LatitudeMinutes);
|
|
Assert.AreEqual(8.126, locData.LatitudeSeconds);
|
|
Assert.AreEqual(DnsRecord.LatitudeDirection.North, locData.LatitudeDirection);
|
|
Assert.AreEqual(11, locData.LongitudeDegrees);
|
|
Assert.AreEqual(34, locData.LongitudeMinutes);
|
|
Assert.AreEqual(30.957, locData.LongitudeSeconds);
|
|
Assert.AreEqual(DnsRecord.LongitudeDirection.East, locData.LongitudeDirection);
|
|
Assert.AreEqual(100, locData.Altitude);
|
|
Assert.AreEqual(80, locData.Size);
|
|
Assert.AreEqual(500, locData.PrecisionHorizontal);
|
|
Assert.AreEqual(400, locData.PrecisionVertical);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForName(string str)
|
|
{
|
|
// Arrange
|
|
_request.Name = str;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForType()
|
|
{
|
|
// Arrange
|
|
_request.Type = 0;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForContent(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.A;
|
|
_request.Content = str;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetContentForType()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.A;
|
|
_request.Content = "127.0.1.53";
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.AreEqual(_request.Content, callback.Request.Content);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ShouldNotSetSettingsWhenObjectIsNull()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Cname;
|
|
_request.Content = "www.example.com.";
|
|
_request.Settings = null;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNull(callback.Request.Settings);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ShouldNotSetSettingsWhenObjectIsNotCorrectType()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Cname;
|
|
_request.Content = "www.example.com.";
|
|
_request.Settings = new object();
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNull(callback.Request.Settings);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetSettings()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Cname;
|
|
_request.Content = "www.example.com.";
|
|
_request.Settings = new DnsRecord.CnameSettings(true);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Settings);
|
|
|
|
Assert.IsInstanceOfType<DnsRecord.CnameSettings>(callback.Request.Settings);
|
|
Assert.AreEqual(true, ((DnsRecord.CnameSettings)callback.Request.Settings).FlattenCname);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForData()
|
|
{
|
|
// Arrange
|
|
_request.Data = null;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(DnsRecordType.Mx)]
|
|
[DataRow(DnsRecordType.Srv)]
|
|
[DataRow(DnsRecordType.Uri)]
|
|
public async Task ShouldSetPriority(DnsRecordType type)
|
|
{
|
|
// Arrange
|
|
_request.Type = type;
|
|
_request.Priority = (ushort)type;
|
|
|
|
switch (type)
|
|
{
|
|
case DnsRecordType.Mx: _request.Content = "www.example.com."; break;
|
|
case DnsRecordType.Srv: _request.Data = new DnsRecord.SrvData(10, 0, ".", 10); break;
|
|
case DnsRecordType.Uri: _request.Data = new DnsRecord.UriData(".", 10); break;
|
|
}
|
|
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.AreEqual(_request.Priority, callback.Request.Priority);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(DnsRecordType.Mx)]
|
|
[DataRow(DnsRecordType.Srv)]
|
|
[DataRow(DnsRecordType.Uri)]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForPriority(DnsRecordType type)
|
|
{
|
|
// Arrange
|
|
_request.Type = type;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(1)]
|
|
[DataRow(3600)]
|
|
public async Task ShouldSetTtl(int ttl)
|
|
{
|
|
// Arrange
|
|
_request.Ttl = ttl;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.AreEqual(ttl, callback.Request.Ttl);
|
|
|
|
_clientMock.Verify(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>($"zones/{ZoneId}/dns_records", It.IsAny<InternalDnsRecordRequest>(), null, It.IsAny<CancellationToken>()), Times.Once);
|
|
_clientMock.VerifyNoOtherCalls();
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(0)]
|
|
[DataRow(20)]
|
|
[DataRow(86401)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForTtl(int ttl)
|
|
{
|
|
// Arrange
|
|
_request.Ttl = ttl;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(DnsRecordType.Caa)]
|
|
[DataRow(DnsRecordType.Cert)]
|
|
[DataRow(DnsRecordType.DnsKey)]
|
|
[DataRow(DnsRecordType.Ds)]
|
|
[DataRow(DnsRecordType.Https)]
|
|
[DataRow(DnsRecordType.Loc)]
|
|
[DataRow(DnsRecordType.NaPtr)]
|
|
[DataRow(DnsRecordType.SMimeA)]
|
|
[DataRow(DnsRecordType.Srv)]
|
|
[DataRow(DnsRecordType.SshFp)]
|
|
[DataRow(DnsRecordType.SvcB)]
|
|
[DataRow(DnsRecordType.TlsA)]
|
|
[DataRow(DnsRecordType.Uri)]
|
|
[ExpectedException(typeof(ArgumentException))]
|
|
public async Task ShouldThrowArgumentExceptionForInvalidTypeOfData(DnsRecordType type)
|
|
{
|
|
// Arrange
|
|
_request.Type = type;
|
|
_request.Priority = 10;
|
|
_request.Data = new object();
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentException
|
|
}
|
|
|
|
#region CAA
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetCaaData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Caa;
|
|
_request.Data = new DnsRecord.CaaData(1, "issue", "letsencrypt.org");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.CaaData));
|
|
|
|
var data = (DnsRecord.CaaData)callback.Request.Data;
|
|
Assert.AreEqual(1, data.Flags);
|
|
Assert.AreEqual("issue", data.Tag);
|
|
Assert.AreEqual("letsencrypt.org", data.Value);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForCaaDataTag(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Caa;
|
|
_request.Data = new DnsRecord.CaaData(1, str, "letsencrypt.org");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForCaaDataValue(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Caa;
|
|
_request.Data = new DnsRecord.CaaData(1, "issue", str);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion CAA
|
|
|
|
#region CERT
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetCertData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Cert;
|
|
_request.Data = new DnsRecord.CertData(1, "test", 2, 3);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.CertData));
|
|
|
|
var data = (DnsRecord.CertData)callback.Request.Data;
|
|
Assert.AreEqual(1, data.Algorithm);
|
|
Assert.AreEqual("test", data.Certificate);
|
|
Assert.AreEqual(2, data.KeyTag);
|
|
Assert.AreEqual(3, data.Type);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForCertDataValue(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Cert;
|
|
_request.Data = new DnsRecord.CertData(1, str, 2, 3);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion CERT
|
|
|
|
#region DNSKEY
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetDnsKeyData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.DnsKey;
|
|
_request.Data = new DnsRecord.DnsKeyData(1, 2, 3, "test");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.DnsKeyData));
|
|
|
|
var data = (DnsRecord.DnsKeyData)callback.Request.Data;
|
|
Assert.AreEqual(1, data.Algorithm);
|
|
Assert.AreEqual(2, data.Flags);
|
|
Assert.AreEqual(3, data.Protocol);
|
|
Assert.AreEqual("test", data.PublicKey);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForDnsKeyDataPublicKey(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.DnsKey;
|
|
_request.Data = new DnsRecord.DnsKeyData(1, 2, 3, str);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion DNSKEY
|
|
|
|
#region DS
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetDsData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Ds;
|
|
_request.Data = new DnsRecord.DsData(algorithm: 1, digest: "test", digestType: 3, keyTag: 4);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.DsData));
|
|
|
|
var data = (DnsRecord.DsData)callback.Request.Data;
|
|
Assert.AreEqual(1, data.Algorithm);
|
|
Assert.AreEqual("test", data.Digest);
|
|
Assert.AreEqual(3, data.DigestType);
|
|
Assert.AreEqual(4, data.KeyTag);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForDsDataDigest(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Ds;
|
|
_request.Data = new DnsRecord.DsData(algorithm: 1, digest: str, digestType: 3, keyTag: 4);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion DS
|
|
|
|
#region HTTPS
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetHttpsData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Https;
|
|
_request.Data = new DnsRecord.HttpsData(priority: 10, target: ".", value: "foo.bar");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.HttpsData));
|
|
|
|
var data = (DnsRecord.HttpsData)callback.Request.Data;
|
|
Assert.AreEqual(10, data.Priority);
|
|
Assert.AreEqual(".", data.Target);
|
|
Assert.AreEqual("foo.bar", data.Value);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForHttpsDataTarget(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Https;
|
|
_request.Data = new DnsRecord.HttpsData(priority: 10, target: str, value: "foo.bar");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForHttpsDataValue(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Https;
|
|
_request.Data = new DnsRecord.HttpsData(priority: 10, target: ".", value: str);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion HTTPS
|
|
|
|
#region LOC
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(91)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLatitudeDegree(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LatitudeDegrees = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(60)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLatitudeMinutes(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LatitudeMinutes = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1.0)]
|
|
[DataRow(59.9991)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLatitudeSeconds(double val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LatitudeSeconds = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLatitudeDirection()
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LatitudeDirection = 0;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(181)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLongitudeDegree(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LongitudeDegrees = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(60)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLongitudeMinutes(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LongitudeMinutes = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1.0)]
|
|
[DataRow(59.9991)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLongitudeSeconds(double val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LongitudeSeconds = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataLongitudeDirection()
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).LongitudeDirection = 0;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-100_000.1)]
|
|
[DataRow(42_849_672.951)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataAltitde(double val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).Altitude = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(90_000_001)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataSize(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).Size = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(90_000_001)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataPrecisionHorizontal(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).PrecisionHorizontal = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(-1)]
|
|
[DataRow(90_000_001)]
|
|
[ExpectedException(typeof(ArgumentOutOfRangeException))]
|
|
public async Task ShouldThrowArgumentOutOfRangeExceptionForLocDataPrecisionVertical(int val)
|
|
{
|
|
// Arrange
|
|
((DnsRecord.LocData)_request.Data).PrecisionVertical = val;
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentOutOfRangeException
|
|
}
|
|
|
|
#endregion LOC
|
|
|
|
#region NAPTR
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetNaPtrData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.NaPtr;
|
|
_request.Data = new DnsRecord.NaPtrData(flags: "ab", order: 1, preference: 2, regex: "cd", replacement: "ef", service: "gh");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.NaPtrData));
|
|
|
|
var data = (DnsRecord.NaPtrData)callback.Request.Data;
|
|
Assert.AreEqual("ab", data.Flags);
|
|
Assert.AreEqual(1, data.Order);
|
|
Assert.AreEqual(2, data.Preference);
|
|
Assert.AreEqual("cd", data.Regex);
|
|
Assert.AreEqual("ef", data.Replacement);
|
|
Assert.AreEqual("gh", data.Service);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForNaPtrDataFlags(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.NaPtr;
|
|
_request.Data = new DnsRecord.NaPtrData(flags: str, order: 1, preference: 2, regex: "cd", replacement: "ef", service: "gh");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForNaPtrDataRegex(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.NaPtr;
|
|
_request.Data = new DnsRecord.NaPtrData(flags: "ab", order: 1, preference: 2, regex: str, replacement: "ef", service: "gh");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForNaPtrDataReplacement(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.NaPtr;
|
|
_request.Data = new DnsRecord.NaPtrData(flags: "ab", order: 1, preference: 2, regex: "cd", replacement: str, service: "gh");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForNaPtrDataService(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.NaPtr;
|
|
_request.Data = new DnsRecord.NaPtrData(flags: "ab", order: 1, preference: 2, regex: "cd", replacement: "ef", service: str);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion NAPTR
|
|
|
|
#region SMIMEA
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetSMimeAData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SMimeA;
|
|
_request.Data = new DnsRecord.SMimeAData(certificate: "cert", matchingType: 1, selector: 2, usage: 3);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.SMimeAData));
|
|
|
|
var data = (DnsRecord.SMimeAData)callback.Request.Data;
|
|
Assert.AreEqual("cert", data.Certificate);
|
|
Assert.AreEqual(1, data.MatchingType);
|
|
Assert.AreEqual(2, data.Selector);
|
|
Assert.AreEqual(3, data.Usage);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForSMimeACertificate(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SMimeA;
|
|
_request.Data = new DnsRecord.SMimeAData(certificate: str, matchingType: 1, selector: 2, usage: 3);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion SMIMEA
|
|
|
|
#region SRV
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetSrvData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Srv;
|
|
_request.Priority = 10;
|
|
_request.Data = new DnsRecord.SrvData(port: 123, priority: 345, target: ".", weight: 456);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.SrvData));
|
|
|
|
var data = (DnsRecord.SrvData)callback.Request.Data;
|
|
Assert.AreEqual(123, data.Port);
|
|
Assert.AreEqual(345, data.Priority);
|
|
Assert.AreEqual(".", data.Target);
|
|
Assert.AreEqual(456, data.Weight);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForSrvTarget(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Srv;
|
|
_request.Priority = 10;
|
|
_request.Data = new DnsRecord.SrvData(port: 123, priority: 345, target: str, weight: 456);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion SRV
|
|
|
|
#region SSHFP
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetSshFpData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SshFp;
|
|
_request.Data = new DnsRecord.SshFpData(algorithm: 1, fingerprint: "fingerprint", type: 2);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.SshFpData));
|
|
|
|
var data = (DnsRecord.SshFpData)callback.Request.Data;
|
|
Assert.AreEqual(1, data.Algorithm);
|
|
Assert.AreEqual("fingerprint", data.Fingerprint);
|
|
Assert.AreEqual(2, data.Type);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForSshFpFingerprint(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SshFp;
|
|
_request.Data = new DnsRecord.SshFpData(algorithm: 1, fingerprint: str, type: 2);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion SSHFP
|
|
|
|
#region SVCB
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetSvcBData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SvcB;
|
|
_request.Data = new DnsRecord.SvcBData(priority: 10, target: ".", value: "example.com");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.SvcBData));
|
|
|
|
var data = (DnsRecord.SvcBData)callback.Request.Data;
|
|
Assert.AreEqual(10, data.Priority);
|
|
Assert.AreEqual(".", data.Target);
|
|
Assert.AreEqual("example.com", data.Value);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForSvcBTarget(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SvcB;
|
|
_request.Data = new DnsRecord.SvcBData(priority: 10, target: str, value: "example.com");
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForSvcBValue(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.SvcB;
|
|
_request.Data = new DnsRecord.SvcBData(priority: 10, target: ".", value: str);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion SVCB
|
|
|
|
#region TLSA
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetTlsAData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.TlsA;
|
|
_request.Data = new DnsRecord.TlsAData(certificate: "cert", matchingType: 1, selector: 2, usage: 3);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.TlsAData));
|
|
|
|
var data = (DnsRecord.TlsAData)callback.Request.Data;
|
|
Assert.AreEqual("cert", data.Certificate);
|
|
Assert.AreEqual(1, data.MatchingType);
|
|
Assert.AreEqual(2, data.Selector);
|
|
Assert.AreEqual(3, data.Usage);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForTlsACertificate(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.TlsA;
|
|
_request.Data = new DnsRecord.TlsAData(certificate: str, matchingType: 1, selector: 2, usage: 3);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion TLSA
|
|
|
|
#region URI
|
|
|
|
[TestMethod]
|
|
public async Task ShouldSetUriData()
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Uri;
|
|
_request.Priority = 10;
|
|
_request.Data = new DnsRecord.UriData(target: "aim", weight: 10);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert
|
|
Assert.IsNotNull(response);
|
|
Assert.IsTrue(response.Success);
|
|
Assert.AreEqual(_response.Result, response.Result);
|
|
|
|
Assert.AreEqual(1, _callbacks.Count);
|
|
|
|
var callback = _callbacks.First();
|
|
Assert.IsNotNull(callback.Request.Data);
|
|
Assert.IsInstanceOfType(callback.Request.Data, typeof(DnsRecord.UriData));
|
|
|
|
var data = (DnsRecord.UriData)callback.Request.Data;
|
|
Assert.AreEqual("aim", data.Target);
|
|
Assert.AreEqual(10, data.Weight);
|
|
}
|
|
|
|
[DataTestMethod]
|
|
[DataRow(null)]
|
|
[DataRow("")]
|
|
[DataRow(" ")]
|
|
[ExpectedException(typeof(ArgumentNullException))]
|
|
public async Task ShouldThrowArgumentNullExceptionForUriTarget(string str)
|
|
{
|
|
// Arrange
|
|
_request.Type = DnsRecordType.Uri;
|
|
_request.Priority = 10;
|
|
_request.Data = new DnsRecord.UriData(target: str, weight: 10);
|
|
var client = GetClient();
|
|
|
|
// Act
|
|
var response = await client.CreateDnsRecord(_request);
|
|
|
|
// Assert - ArgumentNullException
|
|
}
|
|
|
|
#endregion URI
|
|
|
|
private ICloudflareClient GetClient()
|
|
{
|
|
_clientMock = new Mock<ICloudflareClient>();
|
|
_clientMock
|
|
.Setup(m => m.PostAsync<DnsRecord, InternalDnsRecordRequest>(It.IsAny<string>(), It.IsAny<InternalDnsRecordRequest>(), It.IsAny<IQueryParameterFilter>(), It.IsAny<CancellationToken>()))
|
|
.Callback<string, InternalDnsRecordRequest, IQueryParameterFilter, CancellationToken>((requestPath, request, queryFilter, _) => _callbacks.Add((requestPath, request, queryFilter)))
|
|
.ReturnsAsync(() => _response);
|
|
|
|
return _clientMock.Object;
|
|
}
|
|
}
|
|
}
|