user_location_updates_controller_spec.rb 1.9KB

    require 'spec_helper' describe UserLocationUpdatesController do before do @agent = Agent.build_for_type("Agents::UserLocationAgent", users(:bob), :name => "something", :options => { :secret => "my_secret" }) @agent.save! end it "should create events without requiring login" do post :create, :user_id => users(:bob).to_param, :secret => "my_secret", :longitude => 123, :latitude => 45, :something => "else" @agent.events.last.payload.should == { :longitude => "123", :latitude => "45", :something => "else" } @agent.events.last.lat.should == 45 @agent.events.last.lng.should == 123 end it "should only consider Agents::UserLocationAgents for the given user" do @jane_agent = Agent.build_for_type("Agents::UserLocationAgent", users(:jane), :name => "something", :options => { :secret => "my_secret" }) @jane_agent.save! post :create, :user_id => users(:bob).to_param, :secret => "my_secret", :longitude => 123, :latitude => 45, :something => "else" @agent.events.last.payload.should == { :longitude => "123", :latitude => "45", :something => "else" } @jane_agent.events.should be_empty end it "should raise a 404 error when given an invalid user id" do post :create, :user_id => "123", :secret => "not_my_secret", :longitude => 123, :latitude => 45, :something => "else" response.should be_missing end it "should only look at agents with the given secret" do @agent2 = Agent.build_for_type("Agents::UserLocationAgent", users(:bob), :name => "something", :options => { :secret => "my_secret2" }) @agent2.save! lambda { post :create, :user_id => users(:bob).to_param, :secret => "my_secret2", :longitude => 123, :latitude => 45, :something => "else" @agent2.events.last.payload.should == { :longitude => "123", :latitude => "45", :something => "else" } }.should_not change { @agent.events.count } end end