Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
BWPSmith73 committed Jun 20, 2021
2 parents 1c35d15 + 3329129 commit bc8a460
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 1 deletion.
34 changes: 34 additions & 0 deletions events/iot_1_click.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.

package events

// IoTOneClickEvent represents a click event published by clicking button type
// device.
type IoTOneClickEvent struct {
DeviceEvent IoTOneClickDeviceEvent `json:"deviceEvent"`
DeviceInfo IoTOneClickDeviceInfo `json:"deviceInfo"`
PlacementInfo IoTOneClickPlacementInfo `json:"placementInfo"`
}

type IoTOneClickDeviceEvent struct {
ButtonClicked IoTOneClickButtonClicked `json:"buttonClicked"`
}

type IoTOneClickButtonClicked struct {
ClickType string `json:"clickType"`
ReportedTime string `json:"reportedTime"`
}

type IoTOneClickDeviceInfo struct {
Attributes map[string]string `json:"attributes"`
Type string `json:"type"`
DeviceID string `json:"deviceId"`
RemainingLife float64 `json:"remainingLife"`
}

type IoTOneClickPlacementInfo struct {
ProjectName string `json:"projectName"`
PlacementName string `json:"placementName"`
Attributes map[string]string `json:"attributes"`
Devices map[string]string `json:"devices"`
}
34 changes: 34 additions & 0 deletions events/iot_1_click_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
package events

import (
"encoding/json"
"testing"

"github.com/aws/aws-lambda-go/events/test"
"github.com/stretchr/testify/assert"
)

func TestIoTOneClickEventMalformedJson(t *testing.T) {

// 1. read JSON from file
inputJson := test.ReadJSONFromFile(t, "./testdata/iot-1-click-event.json")

// 2. de-serialize into Go object
var inputEvent IoTOneClickEvent
if err := json.Unmarshal(inputJson, &inputEvent); err != nil {
t.Errorf("could not unmarshal event. details: %v", err)
}

// 3. serialize to JSON
outputJson, err := json.Marshal(inputEvent)
if err != nil {
t.Errorf("could not marshal event. details: %v", err)
}
// 4. check result
assert.JSONEq(t, string(inputJson), string(outputJson))
}

func TestIoTOneClickEventMarshaling(t *testing.T) {
test.TestMalformedJson(t, IoTOneClickEvent{})
}
29 changes: 29 additions & 0 deletions events/testdata/iot-1-click-event.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"deviceEvent": {
"buttonClicked": {
"clickType": "SINGLE",
"reportedTime": "2018-05-04T23:26:33.747Z"
}
},
"deviceInfo": {
"attributes": {
"key3": "value3",
"key1": "value1",
"key4": "value4"
},
"type": "button",
"deviceId": "G030PMXXXXXXXXXX",
"remainingLife": 5.00
},
"placementInfo": {
"projectName": "test",
"placementName": "myPlacement",
"attributes": {
"location": "Seattle",
"equipment": "printer"
},
"devices": {
"myButton": "G030PMXXXXXXXXXX"
}
}
}
2 changes: 1 addition & 1 deletion lambda/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func validateReturns(handler reflect.Type) error {
}

// NewHandler creates a base lambda handler from the given handler function. The
// returned Handler performs JSON deserialization and deserialization, and
// returned Handler performs JSON serialization and deserialization, and
// delegates to the input handler function. The handler function parameter must
// satisfy the rules documented by Start. If handlerFunc is not a valid
// handler, the returned Handler simply reports the validation error.
Expand Down

0 comments on commit bc8a460

Please sign in to comment.