diff options
Diffstat (limited to 'RuneTests/RuneTests.swift')
| -rw-r--r-- | RuneTests/RuneTests.swift | 82 |
1 files changed, 80 insertions, 2 deletions
diff --git a/RuneTests/RuneTests.swift b/RuneTests/RuneTests.swift index 16abf59..fa8c2ef 100644 --- a/RuneTests/RuneTests.swift +++ b/RuneTests/RuneTests.swift @@ -8,10 +8,88 @@ import Testing @testable import Rune +@MainActor struct RuneTests { - @Test func example() async throws { - // Write your test here and use APIs like `#expect(...)` to check expected conditions. + @Test func domainUpdateRequestIncludesOnlyChangedFields() async throws { + let request = DomainUpdateRequest( + autorenew: true, + mailforwarding: nil, + dnssec: nil, + lock: false, + nameservers: nil + ) + + #expect(request.hasChanges) + #expect(request.params["autorenew"] as? Bool == true) + #expect(request.params["lock"] as? Bool == false) + #expect(request.params["dnssec"] == nil) + #expect(request.params["mailforwarding"] == nil) + #expect(request.params["nameservers"] == nil) + } + + @Test func changingLockDoesNotAlterDNSSEC() async throws { + let request = DomainUpdateRequest( + autorenew: nil, + mailforwarding: nil, + dnssec: nil, + lock: true, + nameservers: nil + ) + + #expect(request.hasChanges) + #expect(request.params.count == 1) + #expect(request.params["lock"] as? Bool == true) + #expect(request.params["dnssec"] == nil) + } + + @Test func dnssecOnlyChangeSendsOnlyDNSSEC() async throws { + let request = DomainUpdateRequest( + autorenew: nil, + mailforwarding: nil, + dnssec: false, + lock: nil, + nameservers: nil + ) + + #expect(request.hasChanges) + #expect(request.params.count == 1) + #expect(request.params["dnssec"] as? Bool == false) + #expect(request.params["lock"] == nil) + #expect(request.params["autorenew"] == nil) + #expect(request.params["mailforwarding"] == nil) } + @Test func ttlPresetUsesPresetSeconds() async throws { + var draft = DNSRecordDraft() + draft.type = .a + draft.name = "www" + draft.ttlSeconds = TTLPreset.fifteenMinutes.rawValue + + let params = draft.params(domain: "example.com") + + #expect(params["ttl"] as? Int == 900) + } + + @Test func ttlOptionsIncludeExistingCustomValue() async throws { + let record = DNSRecord( + id: "1", + domain: "example.com", + type: "A", + name: "www", + content: "1.2.3.4", + ttl: 42, + prio: nil, + weight: nil, + port: nil, + target: nil, + sshAlgorithm: nil, + sshType: nil + ) + + let draft = DNSRecordDraft(record: record) + + #expect(draft.ttlSeconds == 42) + #expect(draft.ttlOptions.contains(where: { $0.seconds == 42 && $0.isCustom })) + } } |
