Merge lp:~pedronis/ubuntu-push/check-data into lp:ubuntu-push

Proposed by Samuele Pedroni
Status: Merged
Approved by: Samuele Pedroni
Approved revision: 30
Merged at revision: 29
Proposed branch: lp:~pedronis/ubuntu-push/check-data
Merge into: lp:ubuntu-push
Diff against target: 77 lines (+34/-1)
2 files modified
server/api/handlers.go (+16/-0)
server/api/handlers_test.go (+18/-1)
To merge this branch: bzr merge lp:~pedronis/ubuntu-push/check-data
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Review via email: mp+203696@code.launchpad.net

Commit message

check that the data field is not missing

Description of the change

check that the data field is not missing (later bits will be very sad otherwise)

To post a comment you must log in.
Revision history for this message
John Lenton (chipaca) wrote :

Thank you.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'server/api/handlers.go'
2--- server/api/handlers.go 2014-01-16 16:22:19 +0000
3+++ server/api/handlers.go 2014-01-29 10:12:43 +0000
4@@ -91,6 +91,11 @@
5 ioError,
6 "Could not read request body",
7 }
8+ ErrMissingData = &APIError{
9+ http.StatusBadRequest,
10+ invalidRequest,
11+ "Missing data field",
12+ }
13 ErrUnknownChannel = &APIError{
14 http.StatusBadRequest,
15 unknownChannel,
16@@ -172,6 +177,13 @@
17 return body, nil
18 }
19
20+func checkBroadcast(bcast *Broadcast) *APIError {
21+ if len(bcast.Data) == 0 {
22+ return ErrMissingData
23+ }
24+ return nil
25+}
26+
27 // state holds the interfaces to delegate to serving requests
28 type state struct {
29 store store.PendingStore
30@@ -182,6 +194,10 @@
31 type BroadcastHandler state
32
33 func (h *BroadcastHandler) doBroadcast(bcast *Broadcast) *APIError {
34+ apiErr := checkBroadcast(bcast)
35+ if apiErr != nil {
36+ return apiErr
37+ }
38 chanId, err := h.store.GetInternalChannelId(bcast.Channel)
39 if err != nil {
40 switch err {
41
42=== modified file 'server/api/handlers_test.go'
43--- server/api/handlers_test.go 2014-01-14 15:35:20 +0000
44+++ server/api/handlers_test.go 2014-01-29 10:12:43 +0000
45@@ -232,7 +232,7 @@
46 payload := json.RawMessage(`{"foo":"bar"}`)
47
48 request := newPostRequest("/broadcast", &Broadcast{
49- Channel: "unkown",
50+ Channel: "unknown",
51 ExpireAfter: 60,
52 Data: payload,
53 }, testServer)
54@@ -242,6 +242,23 @@
55 checkError(c, response, ErrUnknownChannel)
56 }
57
58+func (s *handlersSuite) TestMissingData(c *C) {
59+ testServer := httptest.NewServer(&BroadcastHandler{})
60+ defer testServer.Close()
61+
62+ packedMessage := []byte(`{"channel": "system"}`)
63+ reader := bytes.NewReader(packedMessage)
64+
65+ request, err := http.NewRequest("POST", testServer.URL, reader)
66+ c.Assert(err, IsNil)
67+ request.ContentLength = int64(len(packedMessage))
68+ request.Header.Set("Content-Type", "application/json")
69+
70+ response, err := s.client.Do(request)
71+ c.Assert(err, IsNil)
72+ checkError(c, response, ErrMissingData)
73+}
74+
75 func (s *handlersSuite) TestCannotBroadcastMalformedData(c *C) {
76 testServer := httptest.NewServer(&BroadcastHandler{})
77 defer testServer.Close()

Subscribers

People subscribed via source and target branches