File tree Expand file tree Collapse file tree 3 files changed +97
-0
lines changed Expand file tree Collapse file tree 3 files changed +97
-0
lines changed Original file line number Diff line number Diff line change 1+ // Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
3+ package events
4+
5+ // IoTOneClickEvent represents a click event published by clicking button type
6+ // device.
7+ type IoTOneClickEvent struct {
8+ DeviceEvent IoTOneClickDeviceEvent `json:"deviceEvent"`
9+ DeviceInfo IoTOneClickDeviceInfo `json:"deviceInfo"`
10+ PlacementInfo IoTOneClickPlacementInfo `json:"placementInfo"`
11+ }
12+
13+ type IoTOneClickDeviceEvent struct {
14+ ButtonClicked IoTOneClickButtonClicked `json:"buttonClicked"`
15+ }
16+
17+ type IoTOneClickButtonClicked struct {
18+ ClickType string `json:"clickType"`
19+ ReportedTime string `json:"reportedTime"`
20+ }
21+
22+ type IoTOneClickDeviceInfo struct {
23+ Attributes map [string ]string `json:"attributes"`
24+ Type string `json:"type"`
25+ DeviceID string `json:"deviceId"`
26+ RemainingLife float64 `json:"remainingLife"`
27+ }
28+
29+ type IoTOneClickPlacementInfo struct {
30+ ProjectName string `json:"projectName"`
31+ PlacementName string `json:"placementName"`
32+ Attributes map [string ]string `json:"attributes"`
33+ Devices map [string ]string `json:"devices"`
34+ }
Original file line number Diff line number Diff line change 1+ // Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+ package events
3+
4+ import (
5+ "encoding/json"
6+ "testing"
7+
8+ "github.com/aws/aws-lambda-go/events/test"
9+ "github.com/stretchr/testify/assert"
10+ )
11+
12+ func TestIoTOneClickEventMalformedJson (t * testing.T ) {
13+
14+ // 1. read JSON from file
15+ inputJson := test .ReadJSONFromFile (t , "./testdata/iot-1-click-event.json" )
16+
17+ // 2. de-serialize into Go object
18+ var inputEvent IoTOneClickEvent
19+ if err := json .Unmarshal (inputJson , & inputEvent ); err != nil {
20+ t .Errorf ("could not unmarshal event. details: %v" , err )
21+ }
22+
23+ // 3. serialize to JSON
24+ outputJson , err := json .Marshal (inputEvent )
25+ if err != nil {
26+ t .Errorf ("could not marshal event. details: %v" , err )
27+ }
28+ // 4. check result
29+ assert .JSONEq (t , string (inputJson ), string (outputJson ))
30+ }
31+
32+ func TestIoTOneClickEventMarshaling (t * testing.T ) {
33+ test .TestMalformedJson (t , IoTOneClickEvent {})
34+ }
Original file line number Diff line number Diff line change 1+ {
2+ "deviceEvent" : {
3+ "buttonClicked" : {
4+ "clickType" : " SINGLE" ,
5+ "reportedTime" : " 2018-05-04T23:26:33.747Z"
6+ }
7+ },
8+ "deviceInfo" : {
9+ "attributes" : {
10+ "key3" : " value3" ,
11+ "key1" : " value1" ,
12+ "key4" : " value4"
13+ },
14+ "type" : " button" ,
15+ "deviceId" : " G030PMXXXXXXXXXX" ,
16+ "remainingLife" : 5.00
17+ },
18+ "placementInfo" : {
19+ "projectName" : " test" ,
20+ "placementName" : " myPlacement" ,
21+ "attributes" : {
22+ "location" : " Seattle" ,
23+ "equipment" : " printer"
24+ },
25+ "devices" : {
26+ "myButton" : " G030PMXXXXXXXXXX"
27+ }
28+ }
29+ }
You can’t perform that action at this time.
0 commit comments