Skip to content

Commit a9b7c4b

Browse files
committed
initial work on zone and tests
1 parent 3d2b5f4 commit a9b7c4b

File tree

9 files changed

+293
-4
lines changed

9 files changed

+293
-4
lines changed

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ PATH
77
GEM
88
remote: https://rubygems.org/
99
specs:
10-
dotenv (2.7.6)
10+
dotenv (3.1.2)
1111
faraday (2.9.0)
1212
faraday-net_http (>= 2.0, < 3.2)
1313
faraday-net_http (3.1.0)
1414
net-http
15-
minitest (5.15.0)
15+
minitest (5.23.1)
1616
net-http (0.4.1)
1717
uri
1818
rake (12.3.3)

lib/hetzner_dns/models/zone.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,22 @@ def list
1010

1111
def create(name:, ttl: nil)
1212
response = Client.post_request("zones", body: { name: name, ttl: ttl })
13-
Zone.new(response.body)
13+
Zone.new(response.body["zone"])
14+
end
15+
16+
def retrieve(id:)
17+
response = Client.get_request("zones/#{id}")
18+
Zone.new(response.body["zone"])
19+
end
20+
21+
def update(id:, name:, ttl: nil)
22+
response = Client.put_request("zones/#{id}", body: { name: name, ttl: ttl })
23+
Zone.new(response.body["zone"])
24+
end
25+
26+
def delete(id:)
27+
response = Client.delete_request("zones/#{id}")
28+
response.success?
1429
end
1530

1631
end
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
require "test_helper"
2+
3+
class ZoneTest < Minitest::Test
4+
5+
def test_zone_list
6+
zones = HetznerDNS::Zone.list
7+
assert_equal HetznerDNS::Collection, zones.class
8+
assert_equal HetznerDNS::Zone, zones.data.first.class
9+
end
10+
11+
def test_zone_create
12+
zone = HetznerDNS::Zone.create(name: "deanpcmad.dev")
13+
14+
assert_equal HetznerDNS::Zone, zone.class
15+
assert_equal "deanpcmad.dev", zone.name
16+
end
17+
18+
def test_zone_retrieve
19+
zone = HetznerDNS::Zone.retrieve(id: "yE67d3N5DNrX4pMfcDCi6A")
20+
assert_equal HetznerDNS::Zone, zone.class
21+
assert_equal "yE67d3N5DNrX4pMfcDCi6A", zone.id
22+
assert_equal "deanpcmad.dev", zone.name
23+
end
24+
25+
def test_zone_update
26+
zone = HetznerDNS::Zone.update(id: "yE67d3N5DNrX4pMfcDCi6A", name: "deanpcmad.dev", ttl: 69)
27+
28+
assert_equal HetznerDNS::Zone, zone.class
29+
assert_equal 69, zone.ttl
30+
end
31+
32+
def test_zone_delete
33+
zone = HetznerDNS::Zone.delete(id: "yE67d3N5DNrX4pMfcDCi6A")
34+
35+
assert zone
36+
end
37+
38+
end

test/test_helper.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
config.hook_into :faraday
1313

1414
config.filter_sensitive_data("<AUTHORIZATION>") { ENV["HETZNER_DNS_TOKEN"] }
15-
config.filter_sensitive_data("<IP_ADDRESS>") { ENV["IP_ADDRESS"] }
1615
end
1716

1817
HetznerDNS.configure do |config|

test/vcr_cassettes/test_zone_create.yml

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/vcr_cassettes/test_zone_delete.yml

Lines changed: 47 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/vcr_cassettes/test_zone_list.yml

Lines changed: 49 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/vcr_cassettes/test_zone_retrieve.yml

Lines changed: 49 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/vcr_cassettes/test_zone_update.yml

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)