@@ -58,6 +58,20 @@ defmodule Edgehog.CapabilitiesTest do
5858 "io.edgehog.devicemanager.SystemStatus" => % InterfaceVersion { major: 0 , minor: 1 } ,
5959 "io.edgehog.devicemanager.config.Telemetry" => % InterfaceVersion { major: 0 , minor: 1 } ,
6060 "io.edgehog.devicemanager.WiFiScanResults" => % InterfaceVersion { major: 0 , minor: 1 } ,
61+ "io.edgehog.devicemanager.fileTransfer.posix.ServerToDevice" => % InterfaceVersion {
62+ major: 0 ,
63+ minor: 1
64+ } ,
65+ "io.edgehog.devicemanager.fileTransfer.DeviceToServer" => % InterfaceVersion {
66+ major: 0 ,
67+ minor: 1
68+ } ,
69+ "io.edgehog.devicemanager.fileTransfer.Progress" => % InterfaceVersion { major: 0 , minor: 1 } ,
70+ "io.edgehog.devicemanager.fileTransfer.Response" => % InterfaceVersion { major: 0 , minor: 1 } ,
71+ "io.edgehog.devicemanager.storage.File" => % InterfaceVersion {
72+ major: 0 ,
73+ minor: 1
74+ } ,
6175 "io.edgehog.devicemanager.apps.AvailableContainers" => % InterfaceVersion {
6276 major: 0 ,
6377 minor: 1
@@ -100,6 +114,9 @@ defmodule Edgehog.CapabilitiesTest do
100114 :cellular_connection ,
101115 :commands ,
102116 :container_management ,
117+ :file_transfer_stream ,
118+ :file_transfer_storage ,
119+ :file_transfer_read ,
103120 :geolocation ,
104121 :hardware_info ,
105122 :led_behaviors ,
@@ -208,5 +225,100 @@ defmodule Edgehog.CapabilitiesTest do
208225
209226 assert Enum . sort ( expected_capabilities ) == Enum . sort ( device_capabilities )
210227 end
228+
229+ test "returns file_transfer_stream capability when all required interfaces are present" do
230+ device_introspection = % {
231+ "io.edgehog.devicemanager.fileTransfer.posix.ServerToDevice" => % InterfaceVersion {
232+ major: 0 ,
233+ minor: 1
234+ } ,
235+ "io.edgehog.devicemanager.fileTransfer.Progress" => % InterfaceVersion {
236+ major: 0 ,
237+ minor: 1
238+ } ,
239+ "io.edgehog.devicemanager.fileTransfer.Response" => % InterfaceVersion {
240+ major: 0 ,
241+ minor: 1
242+ }
243+ }
244+
245+ expected_capabilities = [
246+ :file_transfer_stream ,
247+ :geolocation
248+ ]
249+
250+ device_capabilities = Capabilities . from_introspection ( device_introspection )
251+
252+ assert Enum . sort ( expected_capabilities ) == Enum . sort ( device_capabilities )
253+ end
254+
255+ test "returns file_transfer_storage capability when all required interfaces are present" do
256+ device_introspection = % {
257+ "io.edgehog.devicemanager.fileTransfer.posix.ServerToDevice" => % InterfaceVersion {
258+ major: 0 ,
259+ minor: 1
260+ } ,
261+ "io.edgehog.devicemanager.fileTransfer.Progress" => % InterfaceVersion {
262+ major: 0 ,
263+ minor: 1
264+ } ,
265+ "io.edgehog.devicemanager.fileTransfer.Response" => % InterfaceVersion {
266+ major: 0 ,
267+ minor: 1
268+ } ,
269+ "io.edgehog.devicemanager.storage.File" => % InterfaceVersion {
270+ major: 0 ,
271+ minor: 1
272+ }
273+ }
274+
275+ expected_capabilities = [
276+ :file_transfer_storage ,
277+ :file_transfer_stream ,
278+ :geolocation
279+ ]
280+
281+ device_capabilities = Capabilities . from_introspection ( device_introspection )
282+
283+ assert Enum . sort ( expected_capabilities ) == Enum . sort ( device_capabilities )
284+ end
285+
286+ test "returns file_transfer_read capability when all required interfaces are present" do
287+ device_introspection = % {
288+ "io.edgehog.devicemanager.fileTransfer.DeviceToServer" => % InterfaceVersion {
289+ major: 0 ,
290+ minor: 1
291+ } ,
292+ "io.edgehog.devicemanager.fileTransfer.Progress" => % InterfaceVersion {
293+ major: 0 ,
294+ minor: 1
295+ } ,
296+ "io.edgehog.devicemanager.fileTransfer.Response" => % InterfaceVersion {
297+ major: 0 ,
298+ minor: 1
299+ }
300+ }
301+
302+ expected_capabilities = [
303+ :file_transfer_read ,
304+ :geolocation
305+ ]
306+
307+ device_capabilities = Capabilities . from_introspection ( device_introspection )
308+
309+ assert Enum . sort ( expected_capabilities ) == Enum . sort ( device_capabilities )
310+ end
311+
312+ test "does not return file transfer capabilities when interfaces are missing" do
313+ device_introspection = % {
314+ "io.edgehog.devicemanager.SystemInfo" => % InterfaceVersion { major: 0 , minor: 1 }
315+ }
316+
317+ device_capabilities = Capabilities . from_introspection ( device_introspection )
318+
319+ refute :file_transfer_stream in device_capabilities
320+ refute :file_transfer_storage in device_capabilities
321+ refute :file_transfer_read in device_capabilities
322+ end
211323 end
212324end
0 commit comments