summaryrefslogtreecommitdiff
path: root/RuneTests/RuneTests.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-11 11:48:40 -0500
committerChristian Cleberg <[email protected]>2026-04-11 11:48:40 -0500
commitfcf864a15b70e4ecb5bd789b1db3116221c34394 (patch)
treef15315324b9f95286b6bf7392dd0ccaee210c2de /RuneTests/RuneTests.swift
parentcf587aa0573ac4f34e1effe70108a9eca82093ac (diff)
downloadrune-fcf864a15b70e4ecb5bd789b1db3116221c34394.tar.gz
rune-fcf864a15b70e4ecb5bd789b1db3116221c34394.tar.bz2
rune-fcf864a15b70e4ecb5bd789b1db3116221c34394.zip
add FUNDING.yml
Diffstat (limited to 'RuneTests/RuneTests.swift')
-rw-r--r--RuneTests/RuneTests.swift82
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 }))
+ }
}