restpack_core_service 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0079ea5beff672cf761cf26dd696dc7d9301bf2
4
- data.tar.gz: 3d6daa7f407bc0968314d4db0575532debdd20e8
3
+ metadata.gz: d2bee426ae4a23da2add15e79d02eeb7c4c0cc0a
4
+ data.tar.gz: f68631c3b3ce233431fa1e0691abce208c946e22
5
5
  SHA512:
6
- metadata.gz: fdbf81e2a85258b4ac37a4ff9f1ca06aba231c5e389dea47414055e1277a4e3144e96e6107dbec42827a74c63b3e6bb7b9621f1722c4ea797e0ac6c657c6bc2a
7
- data.tar.gz: fb5573d6972ed389a731f03a9cd4e04b46c2ee03ab6b2bfe0357253329b4b3152128491d72471d61efe8988da3a717252865a2f49388e0cffded2256513c1773
6
+ metadata.gz: 96ed4b9255544b9333a26498e0bfe5065056b53cff908637e6b7d662d59dce04b7bf2e9f4dae72cf4a786d9ed1ed821114afe6fc726b01fb843e0f2079cabd4a
7
+ data.tar.gz: 508c2670a7be016519b23039a89ee842ebd5faa16c5dec65e99e5ba2f944efe6e058aed768421aa3d163c9b4a0df724485fae375b22daf5da60a34571edf0491
data/Rakefile CHANGED
@@ -1,4 +1,2 @@
1
1
  require "restpack_gem"
2
- require "active_support/inflector"
3
-
4
2
  RestPack::Gem::Tasks.load_service_tasks
@@ -5,7 +5,8 @@ class CreateApplications < ActiveRecord::Migration
5
5
 
6
6
  def change
7
7
  create_table table_name do |t|
8
- t.string :name, :null => false, :limit => 256
8
+ t.string :name, :null => false, :limit => 256
9
+ t.string :api_token, :null => false, :limit => 512
9
10
  t.integer :account_id, :null => false
10
11
 
11
12
  t.timestamps
@@ -0,0 +1,16 @@
1
+ class CreateHosts < ActiveRecord::Migration
2
+ def table_name
3
+ RestPack::Core::Service.config.prefix_db_table(:hosts)
4
+ end
5
+
6
+ def change
7
+ create_table table_name do |t|
8
+ t.string :name, :null => false, :limit => 256
9
+ t.integer :application_id, :null => false
10
+ t.string :session_secret, :null => false, :limit => 128
11
+ t.json :oauth_providers, :null => false
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
@@ -5,8 +5,8 @@ class CreateDomains < ActiveRecord::Migration
5
5
 
6
6
  def change
7
7
  create_table table_name do |t|
8
- t.string :host, :null => false, :limit => 512
9
- t.integer :application_id, :null => false
8
+ t.string :identifier, :null => false, :limit => 512
9
+ t.integer :host_id, :null => false
10
10
 
11
11
  t.timestamps
12
12
  end
@@ -6,7 +6,12 @@ require "restpack_core_service/configuration"
6
6
 
7
7
  require "restpack_core_service/models/base"
8
8
  require "restpack_core_service/models/application"
9
+ require "restpack_core_service/models/host"
9
10
  require "restpack_core_service/models/domain"
10
11
 
12
+ require "restpack_core_service/services"
11
13
  require "restpack_core_service/tasks"
12
14
 
15
+ Models = RestPack::Core::Service::Models
16
+ Commands = RestPack::Core::Service::Commands
17
+ # Serializers = RestPack::Core::Service::Serializers
@@ -6,6 +6,10 @@ module RestPack::Core::Service::Models
6
6
  validates_presence_of :name, :account_id
7
7
  validates :name, :length => { :maximum => 256 }
8
8
 
9
- has_many :domains
9
+ has_many :hosts
10
+
11
+ before_save -> {
12
+ self.api_token ||= SecureRandom.hex(50)[0..31]
13
+ }
10
14
  end
11
15
  end
@@ -1,11 +1,11 @@
1
1
  module RestPack::Core::Service::Models
2
2
  class Domain < Base
3
3
  restpack_table_name :domains
4
- attr_accessible :host, :application
4
+ attr_accessible :identifier, :host
5
5
 
6
- validates_presence_of :host
7
- validates :host, :length => { :maximum => 512 }
6
+ validates_presence_of :identifier
7
+ validates :identifier, :length => { :maximum => 512 }
8
8
 
9
- belongs_to :application
9
+ belongs_to :host
10
10
  end
11
11
  end
@@ -0,0 +1,17 @@
1
+ module RestPack::Core::Service::Models
2
+ class Host < Base
3
+ restpack_table_name :hosts
4
+ attr_accessible :name, :application_id, :session_secret, :oauth_providers
5
+
6
+ validates_presence_of :name, :application_id
7
+ validates :name, :length => { :maximum => 256 }
8
+
9
+ has_many :domains
10
+ belongs_to :application
11
+
12
+ before_save -> {
13
+ self.oauth_providers ||= {}
14
+ self.session_secret ||= SecureRandom.hex(16)
15
+ }
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module RestPack::Core::Service::Serializers
2
+ class UserSerializer
3
+ include RestPack::Serializer
4
+
5
+ self.model_class = RestPack::User::Service::Models::User
6
+ self.key = :users
7
+
8
+ # attributes :id, :application_id, :user_id, :title, :content, :latitude, :longitude,
9
+ # :tags, :access, :data, :href, :updated_at, :created_at
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module RestPack::Core::Service::Commands
2
+
3
+ end
4
+
5
+ require "restpack_core_service/services/application/verify_api_token"
@@ -0,0 +1,17 @@
1
+ module RestPack::Core::Service::Commands::Application
2
+ class VerifyApiToken < RestPack::Service::Command
3
+ required do
4
+ integer :id
5
+ string :api_token
6
+ end
7
+
8
+ def execute
9
+ application = Models::Application.find_by_id_and_api_token(
10
+ inputs[:id],
11
+ inputs[:api_token]
12
+ )
13
+
14
+ status :forbidden if !application
15
+ end
16
+ end
17
+ end
@@ -33,7 +33,7 @@ namespace :restpack do
33
33
  task :configuration do
34
34
  p "RestPack::Core::Service Configuration"
35
35
  p "--------------------------------"
36
- p "database_table_prefix: #{RestPack::Core::Service.config.db_table_prefix}"
36
+ p "db_table_prefix: #{RestPack::Core::Service.config.db_table_prefix}"
37
37
  end
38
38
  end
39
39
  end
@@ -1,7 +1,7 @@
1
1
  module RestPack
2
2
  module Core
3
3
  module Service
4
- VERSION = "0.0.4"
4
+ VERSION = "0.0.5"
5
5
  end
6
6
  end
7
7
  end
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "restpack_service", "~> 0.0.28"
22
- spec.add_dependency "restpack_serializer", "~> 0.4.1"
23
- spec.add_dependency "restpack_gem", "~> 0.0.11"
21
+ spec.add_dependency "restpack_service"
22
+ spec.add_dependency "restpack_serializer"
23
+ spec.add_dependency "restpack_gem"
24
24
  spec.add_dependency "sinatra", "~> 1.4.3"
25
25
  spec.add_dependency "pg", "~> 0.16"
26
26
 
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "rspec"
31
31
  spec.add_development_dependency "bump"
32
32
  spec.add_development_dependency "shoulda-matchers", "~> 1.4.2"
33
+ spec.add_development_dependency "factory_girl", "~> 4.0"
33
34
  end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :application, :class => Models::Application do
3
+ sequence(:name) {|n| "Application ##{n}" }
4
+ sequence(:account_id)
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :domain, :class => Models::Domain do
3
+ sequence(:identifier) {|n| "subdomain_#{n}.domain.com" }
4
+ host
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :host, :class => Models::Host do
3
+ sequence(:name) {|n| "Host ##{n}" }
4
+ application
5
+ end
6
+ end
@@ -2,6 +2,16 @@ describe RestPack::Core::Service::Models::Application do
2
2
  it { should validate_presence_of(:name) }
3
3
  it { should validate_presence_of(:account_id) }
4
4
  it { should ensure_length_of(:name).is_at_most(256) }
5
- it { should have_many(:domains) }
5
+ it { should have_many(:hosts) }
6
6
  it { subject.class.table_name.should == 'restpack_applications' }
7
+
8
+ context "default values" do
9
+ it "has a random api_token" do
10
+ app1 = create(:application)
11
+ app2 = create(:application)
12
+
13
+ app1.api_token.length.should == 32
14
+ app1.api_token.should_not == app2.api_token
15
+ end
16
+ end
7
17
  end
@@ -1,6 +1,6 @@
1
1
  describe RestPack::Core::Service::Models::Domain do
2
- it { should validate_presence_of(:host) }
3
- it { should ensure_length_of(:host).is_at_most(512) }
4
- it { should belong_to(:application) }
2
+ it { should validate_presence_of(:identifier) }
3
+ it { should ensure_length_of(:identifier).is_at_most(512) }
4
+ it { should belong_to(:host) }
5
5
  it { subject.class.table_name.should == 'restpack_domains' }
6
6
  end
@@ -0,0 +1,22 @@
1
+ describe RestPack::Core::Service::Models::Host do
2
+ it { should validate_presence_of(:name) }
3
+ it { should validate_presence_of(:application_id) }
4
+ it { should ensure_length_of(:name).is_at_most(256) }
5
+ it { should belong_to(:application) }
6
+ it { should have_many(:domains) }
7
+ it { subject.class.table_name.should == 'restpack_hosts' }
8
+
9
+ context "default values" do
10
+ it "has a random session_secret" do
11
+ host1 = create(:host)
12
+ host2 = create(:host)
13
+
14
+ host1.session_secret.should_not == nil
15
+ host1.session_secret.should_not == host2.session_secret
16
+ end
17
+
18
+ it "has empty oauth_providers as default" do
19
+ create(:host).oauth_providers.should == {}
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe Commands::Application::VerifyApiToken do
4
+ is_required :id, :api_token
5
+
6
+ let(:response) { subject.class.run(params) }
7
+
8
+ before do
9
+ @application = create(:application)
10
+ end
11
+
12
+ context 'with valid params' do
13
+ let(:params) { {
14
+ id: @application.id,
15
+ api_token: @application.api_token
16
+ } }
17
+
18
+ it 'is valid' do
19
+ response.success?.should == true
20
+ response.result.should == {}
21
+ end
22
+ end
23
+
24
+ context 'with invalid :id' do
25
+ let(:params) { {
26
+ id: 142857,
27
+ api_token: @application.api_token
28
+ }}
29
+
30
+ it 'is forbidden' do
31
+ response.success?.should == false
32
+ response.result.should == {}
33
+ response.status.should == :forbidden
34
+ end
35
+ end
36
+
37
+ context 'with invalid :api_token' do
38
+ let(:params) { {
39
+ id: @application.id,
40
+ api_token: 'invalid_token'
41
+ }}
42
+
43
+ it 'is forbidden' do
44
+ response.success?.should == false
45
+ response.result.should == {}
46
+ response.status.should == :forbidden
47
+ end
48
+ end
49
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,20 +1,20 @@
1
- require 'active_record'
2
- require 'rspec'
3
- require 'database_cleaner'
4
- require 'yaml'
5
- require 'shoulda-matchers'
1
+ require 'restpack_service/support/spec_helper'
6
2
  require 'restpack_core_service'
7
3
 
8
4
  config = YAML.load_file('./config/database.yml')
9
5
  ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'] || config['test'])
10
6
 
11
- migrations_path = File.dirname(__FILE__) + "/../db/migrate"
7
+ migrations_path = File.dirname(__FILE__) + "/../db/migratore"
12
8
  migrator = ActiveRecord::Migrator.new(:up, migrations_path)
13
9
  migrator.migrate
14
10
 
11
+ FactoryGirl.find_definitions
12
+
15
13
  DatabaseCleaner.strategy = :transaction
16
14
 
17
15
  RSpec.configure do |config|
16
+ config.include FactoryGirl::Syntax::Methods
17
+
18
18
  config.before(:each) do
19
19
  DatabaseCleaner.start
20
20
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restpack_core_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Joyce
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-07 00:00:00.000000000 Z
11
+ date: 2013-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: restpack_service
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.28
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.28
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: restpack_serializer
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.1
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.4.1
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: restpack_gem
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.0.11
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.0.11
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sinatra
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ~>
165
165
  - !ruby/object:Gem::Version
166
166
  version: 1.4.2
167
+ - !ruby/object:Gem::Dependency
168
+ name: factory_girl
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '4.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: '4.0'
167
181
  description: Applications, Domains and Configurations service
168
182
  email:
169
183
  - gavinjoyce@gmail.com
@@ -179,19 +193,29 @@ files:
179
193
  - Rakefile
180
194
  - config/database.yml
181
195
  - db/migrate/20130807103945_create_applications.rb
182
- - db/migrate/20130807104142_create_domains.rb
196
+ - db/migrate/20130808135549_create_hosts.rb
197
+ - db/migrate/20130808135613_create_domains.rb
183
198
  - lib/restpack_core_service.rb
184
199
  - lib/restpack_core_service/configuration.rb
185
200
  - lib/restpack_core_service/models/application.rb
186
201
  - lib/restpack_core_service/models/base.rb
187
202
  - lib/restpack_core_service/models/domain.rb
203
+ - lib/restpack_core_service/models/host.rb
204
+ - lib/restpack_core_service/serializers/user_serializer.rb
205
+ - lib/restpack_core_service/services.rb
206
+ - lib/restpack_core_service/services/application/verify_api_token.rb
188
207
  - lib/restpack_core_service/tasks.rb
189
208
  - lib/restpack_core_service/tasks/db.rake
190
209
  - lib/restpack_core_service/version.rb
191
210
  - restpack_core_service.gemspec
192
211
  - spec/configuration_spec.rb
212
+ - spec/factories/application_factory.rb
213
+ - spec/factories/domain_factory.rb
214
+ - spec/factories/host_factory.rb
193
215
  - spec/models/application_spec.rb
194
216
  - spec/models/domain_spec.rb
217
+ - spec/models/host_spec.rb
218
+ - spec/services/application/verify_api_token_spec.rb
195
219
  - spec/spec_helper.rb
196
220
  homepage: https://github.com/RestPack
197
221
  licenses:
@@ -219,6 +243,11 @@ specification_version: 4
219
243
  summary: Applications, Domains and Configurations
220
244
  test_files:
221
245
  - spec/configuration_spec.rb
246
+ - spec/factories/application_factory.rb
247
+ - spec/factories/domain_factory.rb
248
+ - spec/factories/host_factory.rb
222
249
  - spec/models/application_spec.rb
223
250
  - spec/models/domain_spec.rb
251
+ - spec/models/host_spec.rb
252
+ - spec/services/application/verify_api_token_spec.rb
224
253
  - spec/spec_helper.rb