diff --git a/lib/rollout_rest_api.rb b/lib/rollout_rest_api.rb index f720c2d..6004bc8 100644 --- a/lib/rollout_rest_api.rb +++ b/lib/rollout_rest_api.rb @@ -1,6 +1,8 @@ require "sinatra" class RolloutRestAPI < Sinatra::Base + class FakeUser < Struct.new(:id); end + class << self attr_accessor :rollout end @@ -19,6 +21,16 @@ class << self "ok" end + put "/:feature/users" do + rollout.activate_user(params[:feature], FakeUser.new(params[:user])) + "ok" + end + + delete "/:feature/users" do + rollout.deactivate_user(params[:feature], FakeUser.new(params[:user])) + "ok" + end + private def rollout self.class.rollout diff --git a/spec/rollout_rest_api_spec.rb b/spec/rollout_rest_api_spec.rb index 7337540..8a3528d 100644 --- a/spec/rollout_rest_api_spec.rb +++ b/spec/rollout_rest_api_spec.rb @@ -4,6 +4,8 @@ require "yajl" describe "RolloutRestApi" do + class FakeUser < Struct.new(:id); end + def app RolloutRestAPI end @@ -36,4 +38,19 @@ def app last_response.should be_ok @rollout.info(:chat)[:groups].should == [:greeters] end + + it "adds a user" do + put "/chat/users", :user => 129315 + last_response.should be_ok + @rollout.info(:chat)[:users].should include(129315) + end + + it "removes a user" do + @rollout.activate_user(:chat, FakeUser.new(1)) + @rollout.activate_user(:chat, FakeUser.new(129315)) + + delete "/chat/users", :user => 129315 + last_response.should be_ok + @rollout.info(:chat)[:users].should == [1] + end end