Skip to content

Commit 2c85c5b

Browse files
committed
fix: http triggers for device registration and deletion events
astarte-platform#125 astarte-platform#126 astarte-platform#127 added new simple events but their encoders were not defined, which would mean http triggers wouldn't work. add tests for the newly added triggers fix a warning Signed-off-by: Francesco Noacco <francesco.noacco@secomind.com>
1 parent 6a8eb22 commit 2c85c5b

File tree

4 files changed

+100
-1
lines changed

4 files changed

+100
-1
lines changed

config/config.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is responsible for configuring your application
22
# and its dependencies with the aid of the Mix.Config module.
3-
use Mix.Config
3+
import Config
44

55
# This configuration is loaded before any dependency and is restricted
66
# to this project. If another project depends on this project, this

lib/astarte_core/triggers/simple_events/encoder.ex

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,39 @@ defmodule Astarte.Core.Triggers.SimpleEvents.Encoder do
6767
end
6868
end
6969

70+
defimpl Jason.Encoder, for: SimpleEvents.DeviceRegisteredEvent do
71+
alias Astarte.Core.Triggers.SimpleEvents.DeviceRegisteredEvent
72+
73+
def encode(%DeviceRegisteredEvent{}, opts) do
74+
%{
75+
"type" => "device_registered"
76+
}
77+
|> Jason.Encoder.encode(opts)
78+
end
79+
end
80+
81+
defimpl Jason.Encoder, for: SimpleEvents.DeviceDeletionStartedEvent do
82+
alias Astarte.Core.Triggers.SimpleEvents.DeviceDeletionStartedEvent
83+
84+
def encode(%DeviceDeletionStartedEvent{}, opts) do
85+
%{
86+
"type" => "device_deletion_started"
87+
}
88+
|> Jason.Encoder.encode(opts)
89+
end
90+
end
91+
92+
defimpl Jason.Encoder, for: SimpleEvents.DeviceDeletionFinishedEvent do
93+
alias Astarte.Core.Triggers.SimpleEvents.DeviceDeletionFinishedEvent
94+
95+
def encode(%DeviceDeletionFinishedEvent{}, opts) do
96+
%{
97+
"type" => "device_deletion_finished"
98+
}
99+
|> Jason.Encoder.encode(opts)
100+
end
101+
end
102+
70103
defimpl Jason.Encoder, for: SimpleEvents.IncomingDataEvent do
71104
alias Astarte.Core.Triggers.SimpleEvents.IncomingDataEvent
72105

test/astarte_core/triggers/simple_events_encoder_test.exs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,42 @@ defmodule Astarte.Core.SimpleEventsEncoderTest do
5353
assert roundtrip == %{"type" => "device_disconnected"}
5454
end
5555

56+
test "works for DeviceRegisteredEvent" do
57+
alias Astarte.Core.Triggers.SimpleEvents.DeviceRegisteredEvent
58+
59+
event = %DeviceRegisteredEvent{}
60+
61+
roundtrip =
62+
Jason.encode!(event)
63+
|> Jason.decode!()
64+
65+
assert roundtrip == %{"type" => "device_registered"}
66+
end
67+
68+
test "works for DeviceDeletionStartedEvent" do
69+
alias Astarte.Core.Triggers.SimpleEvents.DeviceDeletionStartedEvent
70+
71+
event = %DeviceDeletionStartedEvent{}
72+
73+
roundtrip =
74+
Jason.encode!(event)
75+
|> Jason.decode!()
76+
77+
assert roundtrip == %{"type" => "device_deletion_started"}
78+
end
79+
80+
test "works for DeviceDeletionFinishedEvent" do
81+
alias Astarte.Core.Triggers.SimpleEvents.DeviceDeletionFinishedEvent
82+
83+
event = %DeviceDeletionFinishedEvent{}
84+
85+
roundtrip =
86+
Jason.encode!(event)
87+
|> Jason.decode!()
88+
89+
assert roundtrip == %{"type" => "device_deletion_finished"}
90+
end
91+
5692
test "works for IncomingDataEvent" do
5793
alias Astarte.Core.Triggers.SimpleEvents.IncomingDataEvent
5894

test/astarte_core/triggers/simple_events_test.exs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,36 @@ defmodule Astarte.Core.SimpleEventsTest do
4848
assert DeviceErrorEvent.decode(serialized_event) == event
4949
end
5050

51+
test "still works for DeviceRegisteredEvent" do
52+
alias Astarte.Core.Triggers.SimpleEvents.DeviceRegisteredEvent
53+
54+
serialized_event = <<>>
55+
event = %DeviceRegisteredEvent{}
56+
57+
assert DeviceRegisteredEvent.encode(event) == serialized_event
58+
assert DeviceRegisteredEvent.decode(serialized_event) == event
59+
end
60+
61+
test "still works for DeviceDeletionStartedEvent" do
62+
alias Astarte.Core.Triggers.SimpleEvents.DeviceDeletionStartedEvent
63+
64+
serialized_event = <<>>
65+
event = %DeviceDeletionStartedEvent{}
66+
67+
assert DeviceDeletionStartedEvent.encode(event) == serialized_event
68+
assert DeviceDeletionStartedEvent.decode(serialized_event) == event
69+
end
70+
71+
test "still works for DeviceDeletionFinishedEvent" do
72+
alias Astarte.Core.Triggers.SimpleEvents.DeviceDeletionFinishedEvent
73+
74+
serialized_event = <<>>
75+
event = %DeviceDeletionFinishedEvent{}
76+
77+
assert DeviceDeletionFinishedEvent.encode(event) == serialized_event
78+
assert DeviceDeletionFinishedEvent.decode(serialized_event) == event
79+
end
80+
5181
test "still works for IncomingDataEvent" do
5282
alias Astarte.Core.Triggers.SimpleEvents.IncomingDataEvent
5383

0 commit comments

Comments
 (0)