rhogallery 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ coverage
2
+ Gemfile.lock
3
+ pkg/*
4
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+ gem 'rake'
5
+ gem 'rest-client'
6
+ gem 'json'
7
+
8
+ group :test do
9
+ gem 'rspec', '~>2.5.0', :require => 'spec'
10
+ gem 'rcov', '~>0.9.8'
11
+ gem 'webmock'
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,42 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rhogallery (0.0.1)
5
+ json (~> 1.5.4)
6
+ rest-client (~> 1.6.6)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ addressable (2.2.6)
12
+ crack (0.1.8)
13
+ diff-lcs (1.1.2)
14
+ json (1.5.4)
15
+ mime-types (1.16)
16
+ rake (0.9.2)
17
+ rcov (0.9.10)
18
+ rest-client (1.6.6)
19
+ mime-types (>= 1.16)
20
+ rspec (2.5.0)
21
+ rspec-core (~> 2.5.0)
22
+ rspec-expectations (~> 2.5.0)
23
+ rspec-mocks (~> 2.5.0)
24
+ rspec-core (2.5.2)
25
+ rspec-expectations (2.5.0)
26
+ diff-lcs (~> 1.1.2)
27
+ rspec-mocks (2.5.0)
28
+ webmock (1.7.4)
29
+ addressable (> 2.2.5, ~> 2.2)
30
+ crack (>= 0.1.7)
31
+
32
+ PLATFORMS
33
+ ruby
34
+
35
+ DEPENDENCIES
36
+ json
37
+ rake
38
+ rcov (~> 0.9.8)
39
+ rest-client
40
+ rhogallery!
41
+ rspec (~> 2.5.0)
42
+ webmock
data/README.markdown ADDED
@@ -0,0 +1,139 @@
1
+ Rhogallery API
2
+ ==================
3
+ ##Instaling
4
+
5
+ This is a ruby interface to connect with the rhohub rhogallery api.
6
+
7
+ $ gem install rhogallery
8
+
9
+ require 'rhogallery-api'
10
+
11
+ ##Rhogallery Credentials
12
+
13
+ First of all you need to set your rhogallery credentials (username and rhogallery token):
14
+
15
+ RhoGalleryApi.credentials = {:username => YOUR_RHOHUB_USERNAME, :token => YOUR_RHOHUB_TOKEN}
16
+
17
+ Also, you can see your credentials any time with:
18
+
19
+ RhoGalleryApi.credentials
20
+ => {:username => YOUR_RHOHUB_USERNAME, :token => YOUR_RHOHUB_TOKEN}
21
+
22
+ ##Rhogallery Resources
23
+
24
+ Then you have two classes that you can work with: `RhoGallery::Consumer` and `RhoGallery::Group`
25
+
26
+ RhoGalleryApi # Rhogallery Api Defaults configurations
27
+
28
+ RhoGallery::Consumer
29
+ RhoGallery::Group
30
+
31
+ create_new(data, options) #create a new consumer/group
32
+ update(data, options) #use this method to update data
33
+ delete(data, options) #to delete a consumer/group
34
+
35
+ * data: consumer or group data, for example: name, cell, login, email. By default takes the data hash takes the attributes
36
+ added when is creating the instance ( RhoGallery::Group.new( {:name => "some group name" }) ).
37
+
38
+ * options: credentials options, you can use a diferent credential in any time.
39
+
40
+ ##Get Consumers and Groups
41
+
42
+ You can get all your consumers and groups like this:
43
+
44
+ RhoGallery::Consumer.find_all
45
+ => [{"name":"John Doe","devices":["ios","android","blackberry"],"deactivated_id":null,
46
+ "created_at":"2011-01-14T17:49:42Z","cell":"+555555",
47
+ "updated_at":"2011-06-21T21:14:12Z",
48
+ "tags":"","deleted":false,"password":"f3df5b5853c26e9b664262a5f590df8d",
49
+ "login":"john","invited":true,
50
+ "email":"john@doe.com","active":true}]
51
+
52
+ RhoGallery::Group.find_all
53
+ => [{"name":"rhomobile","created_at":"2011-01-14T15:37:42Z","updated_at":"2011-01-14T15:37:42Z",
54
+ "id":"4d306dc697fcc274a6000009","active":true},
55
+ {"name":"koombea","created_at":"2011-05-27T22:24:05Z","updated_at":"2011-05-27T22:24:05Z",
56
+ "id":"4de024851189870001000001","active":true}]
57
+
58
+ or if you want to find a consumer/group by id you can do this:
59
+
60
+ RhoGallery::Consumer.find_by_id("some_consumer_id")
61
+ => {"name":"John Doe","devices":["ios","android","blackberry"],"deactivated_id":null,
62
+ "created_at":"2011-01-14T17:49:42Z","cell":"+555555",
63
+ "updated_at":"2011-06-21T21:14:12Z",
64
+ "tags":"","deleted":false,"password":"f3df5b5853c26e9b664262a5f590df8d",
65
+ "login":"john","invited":true,
66
+ "email":"john@doe.com","active":true}
67
+
68
+ RhoGallery::Group.find_by_id("some_group_id")
69
+ => {"name":"rhomobile","created_at":"2011-01-14T15:37:42Z","updated_at":"2011-01-14T15:37:42Z",
70
+ "id":"4d306dc697fcc274a6000009","active":true}
71
+
72
+ ##Create new consumer/group
73
+
74
+ You can create new groups and consumers with your own attributes and then save it as a new consumer/group. (returns true or false).
75
+
76
+ consumer = RhoGallery::Consumer.new({
77
+ :login => "some_login", :name => "some name", :cell => "+55555", :email => "email@email.com"
78
+ })
79
+ => #<RhoGallery::Consumer:0x1018881a8 @attributes={:login => "some_login", :name => "some name", :cell => "+55555", :email => "email@email.com"}>
80
+
81
+ consumer.create_new
82
+ => true
83
+
84
+ group = RhoGallery::Group.new({:name => "new_group_name"})
85
+ => #<RhoGallery::Group:0x1018881b6 @attributes={:name=>"new_group_name"}>
86
+
87
+ group.create_new
88
+ => true
89
+
90
+ or send it the data on the `create_new` method is called
91
+
92
+ consumer = RhoGallery::Consumer.new
93
+ => #<RhoGallery::Consumer:0x1018881a8 @attributes={:cell=>"+55555", :email=>"email@email.com",
94
+ :login=>"some_login",:tags=>"", :password=>"", :name=>"hello", :id=>"4e60ffd4bdd0c8048c000001"}>
95
+
96
+ consumer.create_new({
97
+ :login => "some_login", :name => "some name", :cell => "+55555", :email => "email@email.com"
98
+ })
99
+ => true
100
+
101
+ ##Update Method
102
+
103
+ Also you can update your consumers and groups fields with the `update`
104
+
105
+ consumer = RhoGallery::Consumer.find_by_id("4e60ffd4bdd0c8048c000001")
106
+ => #<RhoGallery::Consumer:0x1018881a8 @attributes={:cell=>"some_cell_phone", :invited=>false, :email=>"email@email.com",
107
+ :login=>"some_login",:tags=>"", :password=>"", :name=>"hello", :id=>"4e60ffd4bdd0c8048c000001"}>
108
+
109
+ consumer.update({:login => "new_login", :cell => "new cell phone"})
110
+ => #<RhoGallery::Consumer:0x1018881a8 @attributes={:cell=>"new cell phone", :invited=>false, :email=>"email@email.com",
111
+ :login=>"new_login",:tags=>"", :password=>"", :name=>"hello", :id=>"4e60ffd4bdd0c8048c000001"}>
112
+
113
+ ##Delete a Consumer or Group
114
+
115
+ and you can delete it too :)
116
+
117
+ consumer = RhoGallery::Consumer.find_by_id("4e60ffd4bdd0c8048c000001")
118
+ => #<RhoGallery::Consumer:0x1018881a8 @attributes={:cell=>"new cell phone", :invited=>false, :email=>"email@email.com",
119
+ :login=>"new_login",:tags=>"", :password=>"", :name=>"hello", :id=>"4e60ffd4bdd0c8048c000001"}>
120
+
121
+ consumer.delete
122
+ => true
123
+
124
+ ##See Errors
125
+
126
+ you can see the errors when the create_new and update methods returns false, with errors method. Example
127
+
128
+ group = RhoGallery::Group.new
129
+ => #<RhoGallery::Group:0x1018881c7 @attributes={:name => ""}>
130
+ group.create_new
131
+ => false
132
+
133
+ group.errors
134
+ => "Name can't be blank"
135
+
136
+ ##Meta
137
+ Created and maintained by [Luis Manotas](https://github.com/lmanotas), [Mario Tatis](https://github.com/mariotatis) and [Lars Burgess](https://github.com/larsburgess).
138
+
139
+ Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
data/Rakefile ADDED
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'bundler'
4
+
5
+ Bundler.setup(:default, :test)
6
+
7
+ require 'bundler/gem_tasks'
8
+ require 'rspec/core/rake_task'
9
+
10
+ desc "Run all specs"
11
+ RSpec::Core::RakeTask.new(:spec) do |t|
12
+ t.rspec_opts = ["-b", "-c", "-fd"]
13
+ t.pattern = 'spec/**/*_spec.rb'
14
+ end
15
+
16
+ desc "Run all specs with rcov"
17
+ RSpec::Core::RakeTask.new(:rcov) do |t|
18
+ t.rcov = true
19
+ t.rspec_opts = ["-b", "-c", "-fd"]
20
+ t.rcov_opts = ['--exclude', 'spec/*,gems/*']
21
+ end
22
+
23
+ task :default => :spec
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'rhogallery-api'
@@ -0,0 +1,78 @@
1
+ class RhoGallery::Base
2
+
3
+ def initialize(data = {})
4
+ @attributes = data
5
+ @errors = String.new
6
+ end
7
+
8
+ def id
9
+ @attributes[:id]
10
+ end
11
+
12
+ def errors
13
+ @errors.strip
14
+ end
15
+
16
+ protected
17
+
18
+ def get_attributes
19
+ @attributes
20
+ end
21
+
22
+ def create_new(data, options, resource)
23
+ begin
24
+ RestClient.post RhoGallery.resource_url(options[:username], resource), data, {:Authorization => options[:token]}
25
+ @errors = String.new
26
+ true
27
+ rescue RestClient::RequestFailed => e
28
+ @errors = e.response.body
29
+ false
30
+ end
31
+ end
32
+
33
+ def update(data, options, resource)
34
+ begin
35
+ RestClient.put RhoGallery.resource_url(options[:username], resource), data, {:Authorization => options[:token]}
36
+ true
37
+ @errors = String.new
38
+ rescue RestClient::RequestFailed => e
39
+ @errors = e.response.body
40
+ false
41
+ end
42
+ end
43
+
44
+ def delete(options, resource)
45
+ RestClient.delete RhoGallery.resource_url(options[:username], resource), {:Authorization => options[:token]}
46
+ true
47
+ end
48
+
49
+ def self.find_all(options, resource)
50
+ res = RestClient::Resource.new(RhoGallery.resource_url(options[:username], "#{resource}"), :headers => {:Authorization => options[:token]})
51
+ JSON.parse res.get
52
+ end
53
+
54
+ def self.find_by_id(id, options, resource)
55
+ res = RestClient::Resource.new(RhoGallery.resource_url(options[:username], "#{resource}/#{id}"), :headers => {:Authorization => options[:token]})
56
+ JSON.parse res.get
57
+ end
58
+
59
+ def method_missing(method_sym, *arguments, &block)
60
+ @attributes = RhoGallery.prepare_hash(@attributes)
61
+ if method_sym.to_s.slice("=")
62
+ att = method_sym.to_s.split("=").first.strip
63
+ if @attributes[att.to_sym]
64
+ @attributes[att.to_sym] = arguments.to_s
65
+ else
66
+ super
67
+ end
68
+ else
69
+ att = @attributes[method_sym]
70
+ if att
71
+ att
72
+ else
73
+ super
74
+ end
75
+ end
76
+ end
77
+
78
+ end
@@ -0,0 +1,30 @@
1
+ class RhoGallery::Consumer < RhoGallery::Base
2
+
3
+ def create_new(data = @attributes, options = RhoGallery.credentials, resource = "consumers")
4
+ super(data, options, resource)
5
+ end
6
+
7
+ def update(data = @attributes, options = RhoGallery.credentials, resource = "consumers/#{self.id}")
8
+ if super(data, options, resource)
9
+ @attributes = RhoGallery::Consumer::find_by_id(self.id, options).get_attributes
10
+ self
11
+ else
12
+ false
13
+ end
14
+ end
15
+
16
+ def delete(options = RhoGallery.credentials, resource = "consumers/#{self.id}")
17
+ super(options, resource)
18
+ end
19
+
20
+ def self.find_by_id(id = "", options = RhoGallery.credentials)
21
+ consumer = RhoGallery::Base.find_by_id(id, options, "consumers")
22
+ RhoGallery::Consumer.new(RhoGallery.prepare_hash(consumer))
23
+ end
24
+
25
+ def self.find_all(options = RhoGallery.credentials)
26
+ consumers = RhoGallery::Base.find_all(options, "consumers")
27
+ consumers.collect!{|consumer| RhoGallery::Consumer.new(RhoGallery.prepare_hash(consumer))} unless consumers.empty?
28
+ end
29
+
30
+ end
@@ -0,0 +1,25 @@
1
+ class RhoGallery::Group < RhoGallery::Base
2
+
3
+ def create_new(data = @attributes, options = RhoGallery.credentials, resource = "groups")
4
+ super(data, options, resource)
5
+ end
6
+
7
+ def update(data = @attributes, options = RhoGallery.credentials)
8
+ method_missing(:update)
9
+ end
10
+
11
+ def delete(options = RhoGallery.credentials, resource = "groups/#{self.id}")
12
+ super(options, resource)
13
+ end
14
+
15
+ def self.find_all(options = RhoGallery.credentials)
16
+ groups = RhoGallery::Base.find_all(options, "groups")
17
+ groups.collect!{|group| RhoGallery::Group.new(RhoGallery.prepare_hash(group))} unless groups.empty?
18
+ end
19
+
20
+ def self.find_by_id(id, options = RhoGallery.credentials)
21
+ group = RhoGallery::Base.find_by_id(id, options, "groups")
22
+ RhoGallery::Group.new(RhoGallery.prepare_hash(group))
23
+ end
24
+
25
+ end
@@ -0,0 +1,32 @@
1
+ module RhoGallery
2
+
3
+ def self.credentials=(user_credentials)
4
+ user_credentials = prepare_hash(user_credentials)
5
+ if user_credentials[:username] and user_credentials[:token]
6
+ ENV['rhogallery_username'] = user_credentials[:username]
7
+ ENV['rhogallery_token'] = user_credentials[:token]
8
+ else
9
+ raise "Invalid RhoGallery credentials. correct format: {:username => 'your username', :token => 'your rhogallery token'}"
10
+ end
11
+ end
12
+
13
+ def self.credentials
14
+ if ENV['rhogallery_username'] and ENV['rhogallery_token']
15
+ {:username => ENV['rhogallery_username'], :token => ENV['rhogallery_token']}
16
+ else
17
+ raise "You must set up your rhogallery credentials see README file"
18
+ end
19
+ end
20
+
21
+ def self.resource_url(username = ENV['rhogallery_username'], resource = "")
22
+ base_url = ENV['rhogallery_api_url'].gsub(/:username/, username)
23
+ base_url.gsub(/:resource/, resource)
24
+ end
25
+
26
+ def self.prepare_hash(data_parsed)
27
+ data = {}
28
+ data_parsed.each{|k,v| data.merge!({k.to_sym => v})}
29
+ data
30
+ end
31
+
32
+ end
@@ -0,0 +1,3 @@
1
+ module Rhogallery
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,9 @@
1
+ require "rubygems"
2
+ require "json"
3
+ require "rest_client"
4
+ require "rhogallery-api/version"
5
+ require "rhogallery-api/rho_gallery"
6
+ require "rhogallery-api/base"
7
+ require "rhogallery-api/consumer"
8
+ require "rhogallery-api/group"
9
+ ENV['rhogallery_api_url'] = "https://appstaging.rhohub.com/rhogallery/api/v1/:username/:resource.json"
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'rhogallery-api/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rhogallery"
7
+ s.version = Rhogallery::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Rhomobile"]
10
+ s.date = Time.now.strftime('%Y-%m-%d')
11
+ s.email = ["support@rhomobile.com"]
12
+ s.homepage = %q{http://rhomobile.com}
13
+ s.summary = %q{RhoGallery client}
14
+ s.description = %q{RhoGallery api client }
15
+
16
+ s.rubyforge_project = nil
17
+ s.add_dependency('json', '~>1.5.4')
18
+ s.add_dependency('rest-client', '~>1.6.6')
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ["lib"]
24
+
25
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
26
+
27
+ end
@@ -0,0 +1,72 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe RhoGallery::Consumer do
4
+
5
+ before(:each) do
6
+ @spec_helpers = SpecHelpers.new
7
+ @spec_helpers.stub_consumers_methods
8
+ end
9
+
10
+ context "GET request" do
11
+ it "should make a GET request to get all the consumers" do
12
+ RhoGallery::Consumer.find_all
13
+ WebMock.should have_requested(:get, RhoGallery.resource_url("testuser", "consumers"))
14
+ end
15
+
16
+ it "should make a GET request to get a consumer by ID" do
17
+ RhoGallery::Consumer.find_by_id("4e6146d5bdd0c8048c000004")
18
+ WebMock.should have_requested(:get, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004"))
19
+ end
20
+ end
21
+
22
+ context "Create, update and Delete actions" do
23
+ it "should send a POST request to save a new consumer" do
24
+ new_cons = RhoGallery::Consumer.new({:login => "testconsumer", :name => "this is a name"})
25
+ new_cons.create_new
26
+ WebMock.should have_requested(:post, RhoGallery.resource_url("testuser", "consumers"))
27
+ end
28
+ it "should send a PUT request to update a consumer" do
29
+ consumer = RhoGallery::Consumer.find_by_id("4e6146d5bdd0c8048c000004")
30
+ consumer.login = "new_login_for_this_consumer"
31
+ consumer.update
32
+ WebMock.should have_requested(:put, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004"))
33
+ end
34
+ it "should send a DELETE request to delete a consumer" do
35
+ consumer = RhoGallery::Consumer.find_by_id("4e6146d5bdd0c8048c000004")
36
+ consumer.delete
37
+ WebMock.should have_requested(:delete, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004"))
38
+ end
39
+ it "should respond with error when is trying to create a consumer with wrong attributes" do
40
+ stub_request(:post, RhoGallery.resource_url("testuser", "consumers")).
41
+ to_return({:status => 422, :body => "login can't be blank"})
42
+ new_cons = RhoGallery::Consumer.new({:name => "this is a name"})
43
+ new_cons.create_new
44
+ WebMock.should have_requested(:post, RhoGallery.resource_url("testuser", "consumers"))
45
+ new_cons.errors.should == "login can't be blank"
46
+ end
47
+ it "should respond with error when is trying to update a consumer with wrong attributes" do
48
+ stub_request(:put, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004")).
49
+ to_return({:status => 422, :body => "login can't be blank"})
50
+ consumer = RhoGallery::Consumer.find_by_id("4e6146d5bdd0c8048c000004")
51
+ consumer.login = ""
52
+ consumer.update
53
+ WebMock.should have_requested(:put, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004"))
54
+ consumer.errors.should == "login can't be blank"
55
+ end
56
+ end
57
+
58
+ context "Get and set consumers values" do
59
+ before(:each) do
60
+ @consumer = RhoGallery::Consumer.find_by_id("4e6146d5bdd0c8048c000004")
61
+ end
62
+
63
+ it "should get the consumer values and set new values" do
64
+ @consumer.login.should == "some_login"
65
+ @consumer.login = "the_new_login"
66
+ @consumer.login.should == "the_new_login"
67
+ end
68
+ it "should raise an error when an set attribute doesn't exist" do
69
+ lambda { @consumer.wrong_attribute = "some value" }.should raise_error
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,57 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe RhoGallery::Group do
4
+
5
+ before(:each) do
6
+ @spec_helpers = SpecHelpers.new
7
+ @spec_helpers.stub_groups_methods
8
+ end
9
+
10
+ context "GET requests" do
11
+ it "should send a GET request when is trying to find all the groups" do
12
+ RhoGallery::Group.find_all
13
+ WebMock.should have_requested(:get, RhoGallery.resource_url("testuser", "groups"))
14
+ end
15
+
16
+ it "should make a GET request when is finding a group by ID" do
17
+ RhoGallery::Group.find_by_id("4e6146d5bdd0c8048c000004")
18
+ WebMock.should have_requested(:get, RhoGallery.resource_url("testuser", "groups/4e6146d5bdd0c8048c000004"))
19
+ end
20
+ end
21
+
22
+ context "Create and delete actions" do
23
+ it "should send a POST request when is creating a new group" do
24
+ new_group = RhoGallery::Group.new({:name => "group_name"})
25
+ new_group.create_new()
26
+ WebMock.should have_requested(:post, RhoGallery.resource_url("testuser", "groups"))
27
+ end
28
+ it "should send a DELETE request when is deleting a group" do
29
+ group = RhoGallery::Group.find_by_id("4e6146d5bdd0c8048c000004")
30
+ group.delete
31
+ WebMock.should have_requested(:delete, RhoGallery.resource_url("testuser", "groups/4e6146d5bdd0c8048c000004"))
32
+ end
33
+ it "should not create the group wihout name and get the errors" do
34
+ stub_request(:post, RhoGallery.resource_url("testuser", "groups")).
35
+ to_return({:status => 422, :body => "name can't be blank"})
36
+ new_group = RhoGallery::Group.new
37
+ new_group.create_new
38
+ WebMock.should have_requested(:post, RhoGallery.resource_url("testuser", "groups"))
39
+ new_group.errors.should == "name can't be blank"
40
+ end
41
+ end
42
+
43
+ context "Get groups values" do
44
+ it "should get al the group values" do
45
+ group = RhoGallery::Group.find_by_id("4e6146d5bdd0c8048c000004")
46
+ group.name.should == "koombea"
47
+ group.id.should == "4e6146d5bdd0c8048c000004"
48
+ end
49
+ end
50
+
51
+ context "Update method doesn't exist for groups" do
52
+ it "should raise a NotMethod Exception when is trying to update a group" do
53
+ group = RhoGallery::Group.find_by_id("4e6146d5bdd0c8048c000004")
54
+ lambda { group.update }.should raise_error
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,17 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe RhoGallery do
4
+ context "RhoGallery Credentials" do
5
+ it "should set a user credentials with credentuals method" do
6
+ RhoGallery.credentials = {:username => "some_username", :token => "some_rhogallery_token"}
7
+ ENV['rhogallery_username'].should == "some_username"
8
+ ENV['rhogallery_token'].should == "some_rhogallery_token"
9
+ end
10
+ it "should not set and raise an error when is trying to set invalid credentials" do
11
+ lambda { RhoGallery.credentials = {} }.should raise_error
12
+ ENV['rhogallery_username'] = nil
13
+ ENV['rhogallery_token'] = nil
14
+ lambda { RhoGallery.credentials }.should raise_error
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'rhogallery-api'
3
+ require 'rspec'
4
+ require 'webmock/rspec'
5
+ include WebMock::API
6
+
7
+ class SpecHelpers
8
+
9
+ def initialize
10
+ ENV['rhogallery_username'] = "testuser"
11
+ ENV['rhogallery_token'] = "some_uuid_token"
12
+ WebMock.disable_net_connect!
13
+ #gorups collection
14
+ @rhomobile_group = ({:name => "rhomobile", :id => "4e6146d5bdd0c8048c000005"})
15
+ @koombea_group = ({:name => "koombea", :id => "4e6146d5bdd0c8048c000004"})
16
+ #consumers collection
17
+ @rho_consumer = ({:login => "some_login", :name => "rhohub consumer", :cell => "55555", :email => "email@rhohub.com",
18
+ :id => "4e6146d5bdd0c8048c000004"})
19
+ end
20
+
21
+ def stub_groups_methods
22
+ stub_request(:get, RhoGallery.resource_url("testuser", "groups")).
23
+ to_return({:body => [@rhomobile_group, @koombea_group].to_json})
24
+ stub_request(:get, RhoGallery.resource_url("testuser", "groups/4e6146d5bdd0c8048c000004")).
25
+ to_return({:body => @koombea_group.to_json})
26
+ stub_request(:post, RhoGallery.resource_url("testuser", "groups")).
27
+ to_return({:status => 201, :body => "true"})
28
+ stub_request(:delete, RhoGallery.resource_url("testuser", "groups/4e6146d5bdd0c8048c000004")).
29
+ to_return({:body => "true", :status => 200})
30
+ end
31
+
32
+ def stub_consumers_methods
33
+ stub_request(:get, RhoGallery.resource_url("testuser", "consumers")).
34
+ to_return({:body => [@rho_consumer].to_json})
35
+ stub_request(:get, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004")).
36
+ to_return({:body => @rho_consumer.to_json})
37
+ stub_request(:post, RhoGallery.resource_url("testuser", "consumers")).
38
+ to_return({:status => 201, :body => "true"})
39
+ stub_request(:put, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004")).
40
+ to_return({:body => "true", :status => 200})
41
+ stub_request(:delete, RhoGallery.resource_url("testuser", "consumers/4e6146d5bdd0c8048c000004")).
42
+ to_return({:body => "true", :status => 200})
43
+ end
44
+
45
+ def groups_objects
46
+ [RhoGallery::Group.new(@rhomobile_group), RhoGallery::Group.new(@koombea_group)]
47
+ end
48
+
49
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rhogallery
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Rhomobile
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-09-22 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ type: :runtime
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 11
29
+ segments:
30
+ - 1
31
+ - 5
32
+ - 4
33
+ version: 1.5.4
34
+ version_requirements: *id001
35
+ name: json
36
+ - !ruby/object:Gem::Dependency
37
+ type: :runtime
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 1
47
+ - 6
48
+ - 6
49
+ version: 1.6.6
50
+ version_requirements: *id002
51
+ name: rest-client
52
+ description: "RhoGallery api client "
53
+ email:
54
+ - support@rhomobile.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files: []
60
+
61
+ files:
62
+ - .gitignore
63
+ - Gemfile
64
+ - Gemfile.lock
65
+ - README.markdown
66
+ - Rakefile
67
+ - init.rb
68
+ - lib/rhogallery-api.rb
69
+ - lib/rhogallery-api/base.rb
70
+ - lib/rhogallery-api/consumer.rb
71
+ - lib/rhogallery-api/group.rb
72
+ - lib/rhogallery-api/rho_gallery.rb
73
+ - lib/rhogallery-api/version.rb
74
+ - rhogallery.gemspec
75
+ - spec/consumer_spec.rb
76
+ - spec/group_spec.rb
77
+ - spec/rho_gallery_spec.rb
78
+ - spec/spec_helper.rb
79
+ homepage: http://rhomobile.com
80
+ licenses: []
81
+
82
+ post_install_message:
83
+ rdoc_options: []
84
+
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ hash: 3
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ requirements: []
106
+
107
+ rubyforge_project:
108
+ rubygems_version: 1.8.10
109
+ signing_key:
110
+ specification_version: 3
111
+ summary: RhoGallery client
112
+ test_files:
113
+ - spec/consumer_spec.rb
114
+ - spec/group_spec.rb
115
+ - spec/rho_gallery_spec.rb
116
+ - spec/spec_helper.rb