stackmob 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/Gemfile DELETED
@@ -1,16 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gem "oauth", "~> 0.4.5"
4
- gem "yajl-ruby", "~> 0.8.2", :require => "yajl"
5
-
6
- group :development do
7
- gem "minitest", ">= 0"
8
- gem "yard", "~> 0.6.0"
9
- gem "cucumber", ">= 0"
10
- gem "bundler", "~> 1.0.0"
11
- gem "jeweler", "~> 1.6.4"
12
- gem "rcov", ">= 0"
13
- gem "mocha", ">= 0"
14
- gem "rack-test"
15
- gem "bluecloth"
16
- end
data/Gemfile.lock DELETED
@@ -1,47 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- bluecloth (2.1.0)
5
- builder (3.0.0)
6
- cucumber (1.0.2)
7
- builder (>= 2.1.2)
8
- diff-lcs (>= 1.1.2)
9
- gherkin (~> 2.4.5)
10
- json (>= 1.4.6)
11
- term-ansicolor (>= 1.0.5)
12
- diff-lcs (1.1.2)
13
- gherkin (2.4.5)
14
- json (>= 1.4.6)
15
- git (1.2.5)
16
- jeweler (1.6.4)
17
- bundler (~> 1.0)
18
- git (>= 1.2.5)
19
- rake
20
- json (1.5.3)
21
- minitest (2.3.1)
22
- mocha (0.9.12)
23
- oauth (0.4.5)
24
- rack (1.3.2)
25
- rack-test (0.6.1)
26
- rack (>= 1.0)
27
- rake (0.9.2)
28
- rcov (0.9.9)
29
- term-ansicolor (1.0.6)
30
- yajl-ruby (0.8.2)
31
- yard (0.6.8)
32
-
33
- PLATFORMS
34
- ruby
35
-
36
- DEPENDENCIES
37
- bluecloth
38
- bundler (~> 1.0.0)
39
- cucumber
40
- jeweler (~> 1.6.4)
41
- minitest
42
- mocha
43
- oauth (~> 0.4.5)
44
- rack-test
45
- rcov
46
- yajl-ruby (~> 0.8.2)
47
- yard (~> 0.6.0)
data/Rakefile DELETED
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "stackmob"
18
- gem.homepage = "http://github.com/stackmob/stackmob-ruby"
19
- gem.license = "MIT"
20
- gem.summary = "Support Gem for StackMob Heroku Add-On"
21
- gem.description = "Support Gem for StackMob Heroku Add-On"
22
- gem.email = "jordan@stackmob.com"
23
- gem.authors = ["StackMob"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
28
- require 'rake/testtask'
29
- require 'rcov/rcovtask'
30
- namespace :test do
31
-
32
-
33
- Rake::TestTask.new(:unit) do |test|
34
- test.libs << 'lib' << 'test'
35
- test.pattern = 'test/unit/**/test_*.rb'
36
- test.verbose = true
37
- end
38
-
39
- Rake::TestTask.new(:integration) do |test|
40
- test.libs << 'lib' << 'test'
41
- test.pattern = 'test/integration/**/test_*.rb'
42
- test.verbose = true
43
- end
44
-
45
- Rcov::RcovTask.new do |test|
46
- test.libs << 'test'
47
- test.pattern = 'test/**/test_*.rb'
48
- test.verbose = true
49
- test.rcov_opts << '--exclude "gems/*"'
50
- end
51
-
52
- desc "Run Unit & Integration Tests"
53
- task :all => [:unit, :integration]
54
- end
55
-
56
- task :default => "test:all"
57
-
58
- require 'yard'
59
- YARD::Rake::YardocTask.new
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.0.2
data/stackmob.gemspec DELETED
@@ -1,100 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{stackmob}
8
- s.version = "0.0.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{StackMob}]
12
- s.date = %q{2011-09-12}
13
- s.description = %q{Support Gem for StackMob Heroku Add-On}
14
- s.email = %q{jordan@stackmob.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".document",
21
- "Gemfile",
22
- "Gemfile.lock",
23
- "LICENSE.txt",
24
- "README.md",
25
- "Rakefile",
26
- "VERSION",
27
- "lib/stackmob.rb",
28
- "lib/stackmob/client.rb",
29
- "lib/stackmob/data_store.rb",
30
- "lib/stackmob/deployer.rb",
31
- "lib/stackmob/helpers.rb",
32
- "lib/stackmob/push.rb",
33
- "lib/stackmob/rack/simple_oauth_provider.rb",
34
- "lib/stackmob/rails.rb",
35
- "lib/stackmob/railtie.rb",
36
- "lib/stackmob/sinatra.rb",
37
- "lib/stackmob/tasks.rb",
38
- "stackmob.gemspec",
39
- "test/helper.rb",
40
- "test/integration/test_client.rb",
41
- "test/integration/test_data_store.rb",
42
- "test/integration/test_deployer.rb",
43
- "test/integration/test_push.rb",
44
- "test/integration_helper.rb",
45
- "test/unit/stackmob/rack/test_simple_oauth_provider.rb",
46
- "test/unit/stackmob/test_client.rb",
47
- "test/unit/stackmob/test_data_store.rb",
48
- "test/unit/stackmob/test_deployer.rb",
49
- "test/unit/stackmob/test_push.rb",
50
- "test/unit/test_stackmob.rb"
51
- ]
52
- s.homepage = %q{http://github.com/stackmob/stackmob-ruby}
53
- s.licenses = [%q{MIT}]
54
- s.require_paths = [%q{lib}]
55
- s.rubygems_version = %q{1.8.6}
56
- s.summary = %q{Support Gem for StackMob Heroku Add-On}
57
-
58
- if s.respond_to? :specification_version then
59
- s.specification_version = 3
60
-
61
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
62
- s.add_runtime_dependency(%q<oauth>, ["~> 0.4.5"])
63
- s.add_runtime_dependency(%q<yajl-ruby>, ["~> 0.8.2"])
64
- s.add_development_dependency(%q<minitest>, [">= 0"])
65
- s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
66
- s.add_development_dependency(%q<cucumber>, [">= 0"])
67
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
68
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
69
- s.add_development_dependency(%q<rcov>, [">= 0"])
70
- s.add_development_dependency(%q<mocha>, [">= 0"])
71
- s.add_development_dependency(%q<rack-test>, [">= 0"])
72
- s.add_development_dependency(%q<bluecloth>, [">= 0"])
73
- else
74
- s.add_dependency(%q<oauth>, ["~> 0.4.5"])
75
- s.add_dependency(%q<yajl-ruby>, ["~> 0.8.2"])
76
- s.add_dependency(%q<minitest>, [">= 0"])
77
- s.add_dependency(%q<yard>, ["~> 0.6.0"])
78
- s.add_dependency(%q<cucumber>, [">= 0"])
79
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
80
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
81
- s.add_dependency(%q<rcov>, [">= 0"])
82
- s.add_dependency(%q<mocha>, [">= 0"])
83
- s.add_dependency(%q<rack-test>, [">= 0"])
84
- s.add_dependency(%q<bluecloth>, [">= 0"])
85
- end
86
- else
87
- s.add_dependency(%q<oauth>, ["~> 0.4.5"])
88
- s.add_dependency(%q<yajl-ruby>, ["~> 0.8.2"])
89
- s.add_dependency(%q<minitest>, [">= 0"])
90
- s.add_dependency(%q<yard>, ["~> 0.6.0"])
91
- s.add_dependency(%q<cucumber>, [">= 0"])
92
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
93
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
94
- s.add_dependency(%q<rcov>, [">= 0"])
95
- s.add_dependency(%q<mocha>, [">= 0"])
96
- s.add_dependency(%q<rack-test>, [">= 0"])
97
- s.add_dependency(%q<bluecloth>, [">= 0"])
98
- end
99
- end
100
-
data/test/helper.rb DELETED
@@ -1,22 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'minitest/unit'
11
- require 'mocha'
12
- require 'yajl'
13
-
14
- $LOAD_PATH.unshift(File.dirname(__FILE__))
15
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
16
- require 'stackmob'
17
- require 'stackmob/deployer' # include deployer explicitly for testing purposes since its not required by default
18
-
19
- class MiniTest::Unit::TestCase
20
- end
21
-
22
- MiniTest::Unit.autorun
@@ -1,45 +0,0 @@
1
- require 'integration_helper'
2
-
3
- # this test suite assumes that the Sandbox API
4
- # deployed at ENV['STACKMOB_TEST_URL'] has an object
5
- # model created of type "user", with a single string field
6
- # "name". The application name must be "test"
7
-
8
- class ClientIntegrationTest < StackMobIntegrationTest
9
-
10
- def setup
11
- super
12
- end
13
-
14
- def test_valid_get_path
15
- api_result_hash = valid_client.request(:get, :api, "/listapi")
16
- assert api_result_hash.has_key?("user")
17
- end
18
-
19
- def test_get_path_without_prepending_slash
20
- res = valid_client.request(:get, :api, "listapi")
21
- assert res.has_key?("user")
22
- end
23
-
24
- def test_invalid_get_path_raises_error
25
- assert_raises StackMob::Client::RequestError do
26
- valid_client.request(:get, :api, "/dne")
27
- end
28
- end
29
-
30
- def test_user_object_lifecycle
31
- username = "123"
32
- name = "StackMob Test"
33
-
34
- valid_client.request(:delete, :api, "/user", :username => username) # delete the object in case it exists already
35
-
36
- valid_client.request(:post, :api, "/user", :username => username, :name => name)
37
-
38
- assert_equal name, valid_client.request(:get, :api, "/user", :username => username).first['name']
39
-
40
- valid_client.request(:put, :api, "/user", :username => username, :name => name + "updated")
41
-
42
- assert_equal (name + "updated"), valid_client.request(:get, :api, "/user", :username => username).first['name']
43
- end
44
-
45
- end
@@ -1,31 +0,0 @@
1
- require 'integration_helper'
2
-
3
- class DataStoreIntegrationTest < StackMobIntegrationTest
4
-
5
- def setup
6
- super
7
-
8
- @ds = StackMob::DataStore.new(valid_client)
9
- end
10
-
11
- def test_list_api
12
- assert @ds.api_schema.has_key? "user"
13
- end
14
-
15
- def test_user_object_lifecycle
16
- username = "456"
17
- name = "StackMob Test"
18
- updated_name = "updated name"
19
-
20
- @ds.delete(:user, :username => username)
21
-
22
- @ds.create(:user, :username => username, :name => name)
23
-
24
- assert_equal name, @ds.get(:user, :username => username).first['name']
25
-
26
- @ds.update(:user, username, :name => updated_name)
27
-
28
- assert_equal updated_name, @ds.get_one(:user, :username => username)['name']
29
- end
30
-
31
- end
@@ -1,23 +0,0 @@
1
- require 'integration_helper'
2
-
3
- class DeployerIntegrationTest < StackMobIntegrationTest
4
-
5
- def setup
6
- super
7
-
8
- @deployer = StackMob::Deployer.new(valid_client)
9
- @hostname1 = "test.localhost"
10
- @hostname2 = "test.localhost.2"
11
- end
12
-
13
- def test_register_and_fetch_app
14
- @deployer.register(@hostname1)
15
-
16
- assert_equal @hostname1, @deployer.fetch['hostname']
17
-
18
- @deployer.register(@hostname2)
19
-
20
- assert_equal @hostname2, @deployer.fetch['hostname']
21
- end
22
-
23
- end
@@ -1,24 +0,0 @@
1
- require 'integration_helper'
2
-
3
- class PushIntegrationTest < StackMobIntegrationTest
4
-
5
- def setup
6
- super
7
-
8
- @user_id = "push_user"
9
- @device_token = "1b9cc1e947889c47f83bab981f0b5349a38903578c40cca519b1c22796c5eadf"
10
-
11
- @push = StackMob::Push.new(valid_client)
12
- end
13
-
14
- def test_register_broadcast_push
15
- @push.register(@user_id, @device_token)
16
-
17
- @push.broadcast(:badge => 1, :sound => "audiofile.mpg", :alert => "My Push Message to all")
18
-
19
- @push.send_message(@user_id, :sound => "anotherfile.mpg", :alert => "Ruby Gem Says: hi #{@user_id}", :badge => 2, :recipients_are_users => true)
20
-
21
- @push.send_message(@device_token, :alert => "Ruby Gem: This is a message for token: #{@device_token}")
22
- end
23
-
24
- end
@@ -1,46 +0,0 @@
1
- require 'helper'
2
-
3
- class StackMobIntegrationTest < MiniTest::Unit::TestCase
4
-
5
- attr_reader :sm_url, :sm_key, :sm_secret, :valid_client
6
-
7
- MISSING_URL_ERR_MSG = "!! ABORTED: You must define the STACKMOB_TEST_URL environment variable in order to run this suite"
8
-
9
- def sm_app_vsn
10
- 0
11
- end
12
-
13
- def sm_app_name
14
- "ruby_test"
15
- end
16
-
17
- def setup
18
- set_sm_url!
19
- set_sm_consumer_key
20
- set_sm_consumer_secret
21
-
22
- @valid_client = StackMob::Client.new(sm_url, sm_app_name, sm_app_vsn, sm_key, sm_secret)
23
- end
24
-
25
- private
26
-
27
- def set_sm_url!
28
- if !(@sm_url = ENV['STACKMOB_TEST_URL']) then
29
- puts MISSING_URL_ERR_MSG
30
- exit
31
- end
32
- end
33
-
34
- # SHOULD WE FORCE THESE TO BE ENVIRONMENT VARIABLES AS WELL?
35
- # IT WOULD PREVENT THIS SUITE FROM BEING RUN WITH MOST LIKELY
36
- # BAD CREDENTIALS, BUT WONT PREVENT IT ALTOGETHER
37
- def set_sm_consumer_key
38
- @sm_key = ENV['STACKMOB_TEST_KEY'] || "b0b4b19e-2901-4b3b-b8a7-67338d2b5cb3"
39
- end
40
-
41
- def set_sm_consumer_secret
42
- @sm_secret = ENV['STACKMOB_TEST_SECRET'] || "b3764a11-cdcb-4750-9aad-cee0b6201d0c"
43
- end
44
-
45
-
46
- end
@@ -1,52 +0,0 @@
1
- require 'helper'
2
- require 'rack/test'
3
-
4
- class DummyApp
5
- def call(env)
6
- [200, {}, ""]
7
- end
8
- end
9
-
10
- class SimpleOAuthProviderTest < MiniTest::Unit::TestCase
11
- include Rack::Test::Methods
12
-
13
- def app
14
- StackMob::Rack::SimpleOAuthProvider.new(DummyApp.new)
15
- end
16
-
17
- def http_host
18
- "jordan.panic.int.mob:3000"
19
- end
20
-
21
- def secret
22
- "ebfe8b21-9401-421c-9b98-28bd721cf367"
23
- end
24
-
25
- def valid_oauth_header
26
- "OAuth realm=\"\", oauth_signature=\"5JXBwMgL7yBrsDbxUCrfmidJ1gU%3D\", oauth_nonce=\"1312914650715662000\", oauth_signature_method=\"HMAC-SHA1\", oauth_consumer_key=\"655b062d-8c36-413d-ac0f-8354ca32c5ad\", oauth_timestamp=\"1312914650\""
27
- end
28
-
29
- def invalid_oauth_header
30
- # this header has a slightly altered signature
31
- "OAuth realm=\"\", oauth_signature=\"5XBwMgL7yBrsDbxUCrfmidJ1gU%3D\", oauth_nonce=\"1312914650715662000\", oauth_signature_method=\"HMAC-SHA1\", oauth_consumer_key=\"655b062d-8c36-413d-ac0f-8354ca32c5ad\", oauth_timestamp=\"1312914650\""
32
- end
33
-
34
- def setup
35
- StackMob.stubs(:config).returns('development' => {}, 'production' => {})
36
- StackMob.stubs(:secret).returns("ebfe8b21-9401-421c-9b98-28bd721cf367")
37
- end
38
-
39
- def test_successful_oauth
40
- get "/", {}, {"HTTP_AUTHORIZATION" => valid_oauth_header, "HTTP_HOST" => http_host}
41
-
42
- assert last_response.ok?, "OAuth Failed When it Shouldn't Have"
43
- end
44
-
45
- def test_failed_oauth
46
- get "/", {}, {"HTTP_AUTHORIZATION" => invalid_oauth_header, "HTTP_HOST" => http_host}
47
-
48
- assert !last_response.ok?, "OAuth Suceeded When it Shouldn't Have"
49
- end
50
-
51
- end
52
-