Skip to content
This repository has been archived by the owner on Mar 7, 2018. It is now read-only.

Commit

Permalink
update multiple widgets in one request
Browse files Browse the repository at this point in the history
  • Loading branch information
jychen7 committed Dec 8, 2014
1 parent 6c6d71c commit b9b4fcf
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
16 changes: 16 additions & 0 deletions lib/dashing/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,22 @@ def protected!
end
end

post '/widgets' do
request.body.rewind
body = JSON.parse(request.body.read)
auth_token = body.delete("auth_token")
if !settings.auth_token || settings.auth_token == auth_token
body["widgets"].each do |widget|
widget_id = widget.delete("id")
send_event(widget_id, widget)
end
204 # response without entity body
else
status 401
"Invalid API key\n"
end
end

post '/widgets/:id' do
request.body.rewind
body = JSON.parse(request.body.read)
Expand Down
22 changes: 22 additions & 0 deletions test/app_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,22 @@ def test_post_widgets_without_auth_token
assert data['updatedAt']
end

def test_post_multiple_widgets_without_auth_token
post '/widgets', JSON.generate({widgets: [{id: 'some_widget', value: 9}, {id: 'another_widget', value: 8}]})
assert_equal 204, last_response.status

assert_equal 2, @connection.length
data = parse_data @connection[0]
assert_equal (9), data['value']
assert_equal 'some_widget', data['id']
assert data['updatedAt']

data = parse_data @connection[1]
assert_equal (8), data['value']
assert_equal 'another_widget', data['id']
assert data['updatedAt']
end

def test_post_widgets_with_invalid_auth_token
app.settings.auth_token = 'sekrit'
post '/widgets/some_widget', JSON.generate({value: 9})
Expand All @@ -68,6 +84,12 @@ def test_post_widgets_with_valid_auth_token
assert_equal 204, last_response.status
end

def test_post_multiple_widgets_with_valid_auth_token
app.settings.auth_token = 'sekrit'
post '/widgets', JSON.generate({auth_token: 'sekrit', widgets: [{id: 'some_widget', value: 9}, {id: 'another_widget', value: 8}]})
assert_equal 204, last_response.status
end

def test_get_events
post '/widgets/some_widget', JSON.generate({value: 8})
assert_equal 204, last_response.status
Expand Down

0 comments on commit b9b4fcf

Please sign in to comment.