From 8d2fc74d04330d5c3cd1afd6de38307292ea53dc Mon Sep 17 00:00:00 2001 From: Thilo Schwarz Date: Tue, 10 Mar 2026 09:58:58 +0100 Subject: [PATCH] Add JUnit tests for model classes: `RecordEntityTest`, `ZoneEntityTest`, `BatchEntryTest`, `RecordTypeTest`, and update `PagingRequestTest`. --- .../thischwa/cf/model/BatchEntryTest.java | 47 +++++++++++++ .../thischwa/cf/model/PagingRequestTest.java | 26 ++++++- .../thischwa/cf/model/RecordEntityTest.java | 70 +++++++++++++++++++ .../thischwa/cf/model/RecordTypeTest.java | 40 +++++++++++ .../thischwa/cf/model/ZoneEntityTest.java | 41 +++++++++++ 5 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 src/test/java/codes/thischwa/cf/model/BatchEntryTest.java create mode 100644 src/test/java/codes/thischwa/cf/model/RecordEntityTest.java create mode 100644 src/test/java/codes/thischwa/cf/model/RecordTypeTest.java create mode 100644 src/test/java/codes/thischwa/cf/model/ZoneEntityTest.java diff --git a/src/test/java/codes/thischwa/cf/model/BatchEntryTest.java b/src/test/java/codes/thischwa/cf/model/BatchEntryTest.java new file mode 100644 index 0000000..e46bb32 --- /dev/null +++ b/src/test/java/codes/thischwa/cf/model/BatchEntryTest.java @@ -0,0 +1,47 @@ +package codes.thischwa.cf.model; + +import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +public class BatchEntryTest { + + @Test + void testBatchEntry() { + BatchEntry entry = new BatchEntry(); + assertEquals("", entry.getId()); + + List patches = new ArrayList<>(); + List posts = new ArrayList<>(); + List puts = new ArrayList<>(); + List deletes = new ArrayList<>(); + + entry.setPatches(patches); + entry.setPosts(posts); + entry.setPuts(puts); + entry.setDeletes(deletes); + + assertSame(patches, entry.getPatches()); + assertSame(posts, entry.getPosts()); + assertSame(puts, entry.getPuts()); + assertSame(deletes, entry.getDeletes()); + } + + @Test + void testLombokMethods() { + BatchEntry entry1 = new BatchEntry(); + BatchEntry entry2 = new BatchEntry(); + assertEquals(entry1, entry2); + assertEquals(entry1.hashCode(), entry2.hashCode()); + + List patches = List.of(new RecordEntity()); + entry1.setPatches(patches); + assertNotEquals(entry1, entry2); + + entry2.setPatches(patches); + assertEquals(entry1, entry2); + + assertTrue(entry1.toString().contains("patches=")); + } +} diff --git a/src/test/java/codes/thischwa/cf/model/PagingRequestTest.java b/src/test/java/codes/thischwa/cf/model/PagingRequestTest.java index 8c6512f..0e88c79 100644 --- a/src/test/java/codes/thischwa/cf/model/PagingRequestTest.java +++ b/src/test/java/codes/thischwa/cf/model/PagingRequestTest.java @@ -7,15 +7,37 @@ import static org.junit.jupiter.api.Assertions.*; public class PagingRequestTest { @Test - public void testBuildPath() { + void testBuildPath() { String result = PagingRequest.defaultPaging().addQueryString("/zones"); assertEquals("/zones?page=1&perPage=5000000", result); } @Test - public void testBuildPathAdditional() { + void testBuildPathAdditional() { String result = new PagingRequest( 10, 100).addQueryString("/zones?foo=bar"); assertEquals("/zones?foo=bar&page=10&perPage=100", result); } + @Test + void testGetPagingParams() { + PagingRequest request = PagingRequest.of(2, 50); + java.util.Map params = request.getPagingParams(); + assertEquals("2", params.get("page")); + assertEquals("50", params.get("perPage")); + } + + @Test + void testLombokMethods() { + PagingRequest req1 = PagingRequest.of(1, 10); + PagingRequest req2 = PagingRequest.of(1, 10); + assertEquals(req1, req2); + assertEquals(req1.hashCode(), req2.hashCode()); + assertTrue(req1.toString().contains("page=1")); + + req1.setPage(5); + assertEquals(5, req1.getPage()); + req1.setPerPage(20); + assertEquals(20, req1.getPerPage()); + } + } diff --git a/src/test/java/codes/thischwa/cf/model/RecordEntityTest.java b/src/test/java/codes/thischwa/cf/model/RecordEntityTest.java new file mode 100644 index 0000000..4509b7d --- /dev/null +++ b/src/test/java/codes/thischwa/cf/model/RecordEntityTest.java @@ -0,0 +1,70 @@ +package codes.thischwa.cf.model; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +public class RecordEntityTest { + + @Test + void testBuildWithAttributes() { + RecordEntity rec = RecordEntity.build("example.com", RecordType.A, 120, "1.2.3.4"); + assertEquals("example.com", rec.getName()); + assertEquals("A", rec.getType()); + assertEquals(120, rec.getTtl()); + assertEquals("1.2.3.4", rec.getContent()); + } + + @Test + void testBuildWithIdAndContent() { + RecordEntity rec = RecordEntity.build("id-123", "1.2.3.4"); + assertEquals("id-123", rec.getId()); + assertEquals("1.2.3.4", rec.getContent()); + } + + @Test + void testBuildWithIdAndAttributes() { + RecordEntity rec = RecordEntity.build("id-123", "example.com", "A", 120, "1.2.3.4"); + assertEquals("id-123", rec.getId()); + assertEquals("example.com", rec.getName()); + assertEquals("A", rec.getType()); + assertEquals(120, rec.getTtl()); + assertEquals("1.2.3.4", rec.getContent()); + } + + @Test + void testBuildWithInvalidType() { + assertThrows(IllegalArgumentException.class, () -> + RecordEntity.build("id-123", "example.com", "INVALID", 120, "1.2.3.4") + ); + } + + @Test + void testGetSld() { + RecordEntity rec = new RecordEntity(); + assertNull(rec.getSld()); + + rec.setName("sub.example.com"); + assertEquals("sub", rec.getSld()); + + rec.setName("example.com"); + assertEquals("example", rec.getSld()); + + rec.setName("host"); + assertEquals("host", rec.getSld()); + + rec.setName(".dotstart"); + assertEquals(".dotstart", rec.getSld()); + } + + @Test + void testGetSldWithZoneName() { + RecordEntity rec = new RecordEntity(); + rec.setName("sub.example.com"); + rec.setZoneName("example.com"); + assertEquals("sub", rec.getSld()); + + rec.setName("my.sub.example.com"); + rec.setZoneName("example.com"); + assertEquals("my.sub", rec.getSld()); + } +} diff --git a/src/test/java/codes/thischwa/cf/model/RecordTypeTest.java b/src/test/java/codes/thischwa/cf/model/RecordTypeTest.java new file mode 100644 index 0000000..9292aae --- /dev/null +++ b/src/test/java/codes/thischwa/cf/model/RecordTypeTest.java @@ -0,0 +1,40 @@ +package codes.thischwa.cf.model; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +public class RecordTypeTest { + + @Test + void testGetType() { + assertEquals("A", RecordType.A.getType()); + assertEquals("AAAA", RecordType.AAAA.getType()); + assertEquals("CNAME", RecordType.CNAME.getType()); + assertEquals("TXT", RecordType.TXT.getType()); + assertEquals("SRV", RecordType.SRV.getType()); + assertEquals("LOC", RecordType.LOC.getType()); + assertEquals("MX", RecordType.MX.getType()); + assertEquals("NS", RecordType.NS.getType()); + assertEquals("CAA", RecordType.CAA.getType()); + assertEquals("CERT", RecordType.CERT.getType()); + assertEquals("DNSKEY", RecordType.DNSKEY.getType()); + assertEquals("DS", RecordType.DS.getType()); + assertEquals("NAPTR", RecordType.NAPTR.getType()); + assertEquals("SMIMEA", RecordType.SMIMEA.getType()); + assertEquals("SSHFP", RecordType.SSHFP.getType()); + assertEquals("TLSA", RecordType.TLSA.getType()); + assertEquals("URI", RecordType.URI.getType()); + } + + @Test + void testToString() { + assertEquals("A", RecordType.A.toString()); + assertEquals("CNAME", RecordType.CNAME.toString()); + } + + @Test + void testValueOf() { + assertEquals(RecordType.A, RecordType.valueOf("A")); + assertEquals(RecordType.CNAME, RecordType.valueOf("CNAME")); + } +} diff --git a/src/test/java/codes/thischwa/cf/model/ZoneEntityTest.java b/src/test/java/codes/thischwa/cf/model/ZoneEntityTest.java new file mode 100644 index 0000000..08d1abc --- /dev/null +++ b/src/test/java/codes/thischwa/cf/model/ZoneEntityTest.java @@ -0,0 +1,41 @@ +package codes.thischwa.cf.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +import java.time.LocalDateTime; +import java.util.Set; +import org.junit.jupiter.api.Test; + +public class ZoneEntityTest { + + @Test + void testZoneEntity() { + ZoneEntity zone = new ZoneEntity(); + zone.setId("zone-id"); + zone.setName("example.com"); + zone.setDevelopmentMode(7200); + Set ns = Set.of("ns1.cloudflare.com", "ns2.cloudflare.com"); + zone.setNameServers(ns); + zone.setOriginalNameServers(ns); + LocalDateTime now = LocalDateTime.now(); + zone.setCreatedOn(now); + zone.setModifiedOn(now); + zone.setActivatedOn(now); + zone.setStatus("active"); + zone.setPaused(false); + zone.setType("full"); + + assertEquals("zone-id", zone.getId()); + assertEquals("example.com", zone.getName()); + assertEquals(7200, zone.getDevelopmentMode()); + assertEquals(ns, zone.getNameServers()); + assertEquals(ns, zone.getOriginalNameServers()); + assertEquals(now, zone.getCreatedOn()); + assertEquals(now, zone.getModifiedOn()); + assertEquals(now, zone.getActivatedOn()); + assertEquals("active", zone.getStatus()); + assertFalse(zone.getPaused()); + assertEquals("full", zone.getType()); + } +}