user_location_updates_controller_spec.rb 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. require 'spec_helper'
  2. describe UserLocationUpdatesController do
  3. before do
  4. @agent = Agent.build_for_type("Agents::UserLocationAgent", users(:bob), :name => "something", :options => { :secret => "my_secret" })
  5. @agent.save!
  6. end
  7. it "should create events without requiring login" do
  8. post :create, :user_id => users(:bob).to_param, :secret => "my_secret", :longitude => 123, :latitude => 45, :something => "else"
  9. @agent.events.last.payload.should == { 'longitude' => "123", 'latitude' => "45", 'something' => "else" }
  10. @agent.events.last.lat.should == 45
  11. @agent.events.last.lng.should == 123
  12. end
  13. it "should only consider Agents::UserLocationAgents for the given user" do
  14. @jane_agent = Agent.build_for_type("Agents::UserLocationAgent", users(:jane), :name => "something", :options => { :secret => "my_secret" })
  15. @jane_agent.save!
  16. post :create, :user_id => users(:bob).to_param, :secret => "my_secret", :longitude => 123, :latitude => 45, :something => "else"
  17. @agent.events.last.payload.should == { 'longitude' => "123", 'latitude' => "45", 'something' => "else" }
  18. @jane_agent.events.should be_empty
  19. end
  20. it "should raise a 404 error when given an invalid user id" do
  21. post :create, :user_id => "123", :secret => "not_my_secret", :longitude => 123, :latitude => 45, :something => "else"
  22. response.should be_missing
  23. end
  24. it "should only look at agents with the given secret" do
  25. @agent2 = Agent.build_for_type("Agents::UserLocationAgent", users(:bob), :name => "something", :options => { :secret => "my_secret2" })
  26. @agent2.save!
  27. lambda {
  28. post :create, :user_id => users(:bob).to_param, :secret => "my_secret2", :longitude => 123, :latitude => 45, :something => "else"
  29. @agent2.events.last.payload.should == { 'longitude' => "123", 'latitude' => "45", 'something' => "else" }
  30. }.should_not change { @agent.events.count }
  31. end
  32. end