Skip to content

Commit

Permalink
Add DomainTransferLockEnable and DomainTransferLockDisable event types (
Browse files Browse the repository at this point in the history
  • Loading branch information
Wilson Lin authored Sep 12, 2023
1 parent 157f867 commit 1ea14a2
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 3 deletions.
23 changes: 20 additions & 3 deletions dnsimple/webhook/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,21 @@ func switchEventData(event *Event) (EventDataContainer, error) {
"domain.auto_renewal_disable",
"domain.auto_renewal_enable",
"domain.create",
"domain.delegation_change",
"domain.delete",
"domain.register",
"domain.renew",
"domain.delegation_change",
"domain.registrant_change",
"domain.registrant_change:started",
"domain.registrant_change:cancelled",
"domain.renew",
"domain.resolution_disable",
"domain.resolution_enable",
"domain.transfer": // TODO
data = &DomainEventData{}
case // domain transfer lock
"domain.transfer_lock_enable",
"domain.transfer_lock_disable":
data = &DomainTransferLockEventData{}
case // email forward
"email_forward.create",
"email_forward.delete",
Expand Down Expand Up @@ -163,7 +167,7 @@ func (d *DNSSECEventData) unmarshalEventData(payload []byte) error {
// DomainEvent
//

// DomainEventData represents the data node for a Contact event.
// DomainEventData represents the data node for a Domain event.
type DomainEventData struct {
Auto bool `json:"auto"`
Domain *dnsimple.Domain `json:"domain"`
Expand All @@ -175,6 +179,19 @@ func (d *DomainEventData) unmarshalEventData(payload []byte) error {
return unmarshalEventData(payload, d)
}

//
// DomainTransferLockEvent
//

// DomainTransferLockEventData represents the data node for a DomainTransferLockEnable or DomainTransferLockDisable event.
type DomainTransferLockEventData struct {
Domain *dnsimple.Domain `json:"domain"`
}

func (d *DomainTransferLockEventData) unmarshalEventData(payload []byte) error {
return unmarshalEventData(payload, d)
}

//
// DomainRegistrantChangeEvent
//
Expand Down
28 changes: 28 additions & 0 deletions dnsimple/webhook/events_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,34 @@ func TestParseDomainEvent_Domain_Transfer(t *testing.T) {
assert.Equal(t, "example.com", data.Domain.Name)
}

func TestParseDomainEvent_Domain_TransferLockEnable(t *testing.T) {
payload := getHTTPRequestBodyFromFixture(t, "/webhooks/domain.transfer_lock_enable/example.http")

event, err := ParseEvent(payload)

assert.NoError(t, err)
assert.Equal(t, "domain.transfer_lock_enable", event.Name)
assert.Regexp(t, regexpUUID, event.RequestID)

data, ok := event.GetData().(*DomainTransferLockEventData)
assert.True(t, ok)
assert.Equal(t, "example.com", data.Domain.Name)
}

func TestParseDomainEvent_Domain_TransferLockDisable(t *testing.T) {
payload := getHTTPRequestBodyFromFixture(t, "/webhooks/domain.transfer_lock_disable/example.http")

event, err := ParseEvent([]byte(payload))

assert.NoError(t, err)
assert.Equal(t, "domain.transfer_lock_disable", event.Name)
assert.Regexp(t, regexpUUID, event.RequestID)

data, ok := event.GetData().(*DomainTransferLockEventData)
assert.True(t, ok)
assert.Equal(t, "example.com", data.Domain.Name)
}

func TestParseEmailForwardEvent_EmailForward_Create(t *testing.T) {
payload := getHTTPRequestBodyFromFixture(t, "/webhooks/email_forward.create/example.http")

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
POST / HTTP/1.1
Host: example.com
Accept-Encoding: gzip
Content-Type: application/json
User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03
Content-Length: 667
Connection: keep-alive

{"data": {"domain": {"id": 1, "name": "example.com", "state": "registered", "account_id": 1010, "auto_renew": false, "created_at": "2023-03-02T02:39:18Z", "expires_at": "2024-03-02T02:39:22Z", "expires_on": "2024-03-02", "updated_at": "2023-08-31T06:46:48Z", "unicode_name": "example.com", "private_whois": false, "registrant_id": 101}}, "name": "domain.transfer_lock_disable", "actor": {"id": "1010", "entity": "account", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1010, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "0f31483c-c303-497b-8a88-2edb48aa111e"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
POST / HTTP/1.1
Host: example.com
Accept-Encoding: gzip
Content-Type: application/json
User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03
Content-Length: 666
Connection: keep-alive

{"data": {"domain": {"id": 1, "name": "example.com", "state": "registered", "account_id": 1010, "auto_renew": false, "created_at": "2023-03-02T02:39:18Z", "expires_at": "2024-03-02T02:39:22Z", "expires_on": "2024-03-02", "updated_at": "2023-08-31T06:46:48Z", "unicode_name": "example.com", "private_whois": false, "registrant_id": 101}}, "name": "domain.transfer_lock_enable", "actor": {"id": "1010", "entity": "account", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1010, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "0f31483c-c303-497b-8a88-2edb48aa111e"}

0 comments on commit 1ea14a2

Please sign in to comment.