Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Device Token List API (count) support #24

Merged
merged 2 commits into from Jan 31, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions lib/urbanairship.rb
Expand Up @@ -87,6 +87,10 @@ def untag_device(params)
do_request(:delete, "/api/device_tokens/#{params[:device_token]}/tags/#{params[:tag]}", :authenticate_with => :master_secret)
end

def device_tokens_count
do_request(:get, "/api/device_tokens/count", :authenticate_with => :master_secret)
end

private

def do_request(http_method, path, options = {})
Expand Down
39 changes: 39 additions & 0 deletions spec/urbanairship_spec.rb
Expand Up @@ -71,6 +71,10 @@
FakeWeb.register_uri(:post, "https://my_app_key:my_master_secret@go.urbanairship.com/api/push/segments", :status => ["200", "OK"])
FakeWeb.register_uri(:post, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/push/segments", :status => ["400", "Bad Request"])
FakeWeb.register_uri(:post, /bad_key\:my_master_secret\@go\.urbanairship\.com/, :status => ["401", "Unauthorized"])

#device_tokens_count
FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/device_tokens\/count/, :status => ["200", "OK"], :body => "{\"device_tokens_count\":50, \"active_device_tokens_count\":55}")
FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/device_tokens\/count/, :status => ["500", "Internal Server Error"])
end

describe "configuration" do
Expand Down Expand Up @@ -724,6 +728,41 @@
end
end

describe "::device_tokens_count" do

before(:each) do
subject.application_key = "my_app_key"
subject.master_secret = "my_master_secret"
end

it "raises an error if call is made without an app key and master secret configured" do
subject.application_key = nil
subject.master_secret = nil

lambda {
subject.device_tokens_count
}.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
end

it "uses app key and secret to sign the request" do
subject.device_tokens_count
FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
end

it "returns a hash as response from the Device Token List API" do
response = subject.device_tokens_count
response["device_tokens_count"].should == 50
response["active_device_tokens_count"].should == 55
end

it "success? is false when the call doesn't return 200" do
subject.application_key = "my_app_key2"
subject.master_secret = "my_master_secret2"
subject.device_tokens_count.success?.should == false
end

end

describe "logging" do

before(:each) do
Expand Down