puppet-forge-server 1.1.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09cee1cf77d66c2acd95ccc0aade3298b17ae53b
4
- data.tar.gz: d969e171c8534cfa3abea2a67117592dabd31395
3
+ metadata.gz: 3fc878b60f808ff3ccfd744ef972e0acd5896be2
4
+ data.tar.gz: a4c0e1961bb1fe2eb452ca1036efac07b05aeccb
5
5
  SHA512:
6
- metadata.gz: fdc51ac20f18d854801f3bd5da30a8b2edeb1e8aee7e98a0be82386c5713a179941d288d7662609046fcdfacb301577ee7973cb20b89a6a82bfc6dc61a01d6c1
7
- data.tar.gz: 5c3de75a5a9f187a01bdce013fe6c649379eaf98cdd1f4094c55302dced5c55255ceaa738efff87e9f08e4af95d94399a1526b96263dfd1fceb52404a534edca
6
+ metadata.gz: b0ffedd8529f0e510ecdafbfbcfa4e30ef5994a726fc9a3617702ef511527159897f5ff4037842f49ce71272cb9c9a47875e74501d840edaab9b4e3219132452
7
+ data.tar.gz: b4a98a5d8e131399f6ca7b28207edd604a46c469118f0a46ee3508f96a1e69dcea4c30db30d5f1fb36aeb1272e137e4d03beab8168cc97aa7b29372509772570
@@ -17,4 +17,7 @@
17
17
  language: ruby
18
18
  rvm:
19
19
  - 1.9.3
20
- - 2.0.0
20
+ - 2.0.0
21
+
22
+ script:
23
+ - bundle exec rake test:all
data/README.md CHANGED
@@ -134,6 +134,10 @@ Puppet module *metadata* json representation is used as a main business *model*.
134
134
  1. Create UTs for core logic
135
135
  2. Implement *source* and *git* backends to match [puppet library](https://github.com/drrb/puppet-library) feature set
136
136
 
137
+ ## Limitations
138
+
139
+ 1. Modulefile is not supported with the *directory* backend
140
+
137
141
  ## License
138
142
 
139
143
  [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Copyright 2014 North Development AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'rspec/core/rake_task'
18
+
19
+ RSpec::Core::RakeTask.new('test:integration') do |t|
20
+ t.verbose = true
21
+ t.pattern = 'spec/integration/*_spec.rb'
22
+ end
23
+
24
+ RSpec::Core::RakeTask.new('test:unit') do |t|
25
+ t.verbose = true
26
+ t.pattern = 'spec/unit/*_spec.rb'
27
+ end
28
+
29
+ RSpec::Core::RakeTask.new('test:all') do |t|
30
+ t.verbose = true
31
+ t.pattern = 'spec/**/*_spec.rb'
32
+ end
@@ -41,7 +41,7 @@ module PuppetForgeServer::Api::V3
41
41
  end
42
42
  end
43
43
 
44
- PuppetForge::Logger.get.error 'WARNING: Requested module count is more than 1' unless modules.values.count == 1
44
+ PuppetForgeServer::Logger.get.error "Requested module count is more than 1:\n#{modules.values}" if modules.values.count > 1
45
45
  modules.values.first
46
46
  end
47
47
 
@@ -15,6 +15,7 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require 'sinatra/base'
18
+ require 'sinatra/json'
18
19
 
19
20
  module PuppetForgeServer::App
20
21
  class Generic < Sinatra::Base
@@ -24,9 +25,10 @@ module PuppetForgeServer::App
24
25
  use ::Rack::CommonLogger, PuppetForgeServer::Logger.get(:access)
25
26
  end
26
27
 
27
- before {
28
+ before do
29
+ content_type :json
28
30
  env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
29
- }
31
+ end
30
32
 
31
33
  def initialize
32
34
  super(nil)
@@ -37,7 +39,7 @@ module PuppetForgeServer::App
37
39
  #
38
40
  post '/oauth/token' do
39
41
  PuppetForgeServer::Logger.get(:server).debug "Params: #{params}"
40
- {'access_token' => 'BOGUS_ACCESS_TOKEN'}.to_json
42
+ json :access_token => 'BOGUS_ACCESS_TOKEN'
41
43
  end
42
44
 
43
45
  end
@@ -15,7 +15,7 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require 'sinatra/base'
18
- require 'json'
18
+ require 'sinatra/json'
19
19
 
20
20
  module PuppetForgeServer::App
21
21
  class Version1 < Sinatra::Base
@@ -28,9 +28,10 @@ module PuppetForgeServer::App
28
28
  use ::Rack::CommonLogger, PuppetForgeServer::Logger.get(:access)
29
29
  end
30
30
 
31
- before {
32
- env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
33
- }
31
+ before do
32
+ content_type :json
33
+ env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
34
+ end
34
35
 
35
36
  def initialize(backends)
36
37
  super(nil)
@@ -38,28 +39,20 @@ module PuppetForgeServer::App
38
39
  end
39
40
 
40
41
  get '/api/v1/releases.json' do
41
- unless params[:module]
42
- halt 400, {'error' => 'The number of version constraints in the query does not match the number of module names'}.to_json
43
- end
44
-
42
+ halt 400, json({:error => 'The number of version constraints in the query does not match the number of module names'}) unless params[:module]
45
43
  author, name = params[:module].split '/'
46
44
  version = params[:version] if params[:version]
47
-
48
45
  metadata = @backends.map do |backend|
49
46
  backend.get_metadata(author, name, {:version => version, :with_checksum => false})
50
47
  end.flatten.compact.uniq
51
-
52
- halt 400, {'errors' => ["'#{params[:module]}' is not a valid module slug"]}.to_json if metadata.empty?
53
-
54
- {"#{author}/#{name}" => get_releases(metadata)}.to_json
48
+ halt 400, json({:errors => ["'#{params[:module]}' is not a valid module slug"]}) if metadata.empty?
49
+ json "#{author}/#{name}" => get_releases(metadata)
55
50
  end
56
51
 
57
52
  get '/api/v1/files/*' do
58
53
  captures = params[:captures].first
59
54
  buffer = get_buffer(@backends, captures)
60
-
61
- halt 404, {'errors' => ['404 Not found']}.to_json unless buffer
62
-
55
+ halt 404, json({:errors => ['404 Not found']}) unless buffer
63
56
  content_type 'application/octet-stream'
64
57
  attachment captures.split('/').last
65
58
  download buffer
@@ -70,7 +63,7 @@ module PuppetForgeServer::App
70
63
  metadata = @backends.map do |backend|
71
64
  backend.query_metadata(query, {:with_checksum => false})
72
65
  end.flatten.compact.uniq
73
- get_modules(metadata).to_json
66
+ json get_modules(metadata)
74
67
  end
75
68
  end
76
69
  end
@@ -15,6 +15,7 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require 'sinatra/base'
18
+ require 'sinatra/json'
18
19
 
19
20
  module PuppetForgeServer::App
20
21
  class Version2 < Sinatra::Base
@@ -24,9 +25,9 @@ module PuppetForgeServer::App
24
25
  use ::Rack::CommonLogger, PuppetForgeServer::Logger.get(:access)
25
26
  end
26
27
 
27
- before {
28
- env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
29
- }
28
+ before do
29
+ env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
30
+ end
30
31
 
31
32
  def initialize(backends)
32
33
  super(nil)
@@ -34,7 +35,7 @@ module PuppetForgeServer::App
34
35
  end
35
36
 
36
37
  post '/v2/releases' do
37
- halt 410, {'errors' => ['File not provided']}.to_json unless params['file']
38
+ halt 410, json({:errors => ['File not provided']}) unless params['file']
38
39
  states = @backends.map do |backend|
39
40
  backend.upload(params['file'])
40
41
  end.compact
@@ -15,6 +15,7 @@
15
15
  # limitations under the License.
16
16
 
17
17
  require 'sinatra/base'
18
+ require 'sinatra/json'
18
19
 
19
20
  module PuppetForgeServer::App
20
21
  class Version3 < Sinatra::Base
@@ -27,35 +28,38 @@ module PuppetForgeServer::App
27
28
  use ::Rack::CommonLogger, PuppetForgeServer::Logger.get(:access)
28
29
  end
29
30
 
30
- before {
31
- env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
32
- }
31
+ before do
32
+ content_type :json
33
+ env['rack.errors'] = PuppetForgeServer::Logger.get(:server)
34
+ end
33
35
 
34
36
  def initialize(backends)
35
37
  super(nil)
36
38
  @backends = backends
37
39
  end
38
40
 
39
- get '/v3/releases' do
40
- halt 400, {'error' => 'The number of version constraints in the query does not match the number of module names'}.to_json unless params[:module]
41
-
41
+ get '/v3/releases/:module' do
42
+ halt 404, json({:errors => ['404 Not found']}) unless params[:module]
42
43
  author, name, version = params[:module].split '-'
43
- metadata = @backends.map do |backend|
44
- backend.get_metadata(author, name, {:version => version})
45
- end.flatten.compact.uniq
46
-
47
- halt 404, {'pagination' => {'next' => false}, 'results' => []}.to_json if metadata.empty?
44
+ halt 400, json({:errors => ["'#{params[:module]}' is not a valid release slug"]}) unless author && name && version
45
+ releases = releases(author, name, version)
46
+ halt 404, json({:errors => ['404 Not found']}) unless releases
47
+ PuppetForgeServer::Logger.get(:server).error "Requested releases count is more than 1:\n#{releases}" if releases.count > 1
48
+ json releases.first
49
+ end
48
50
 
49
- releases = get_releases(metadata)
50
- {'pagination' => {'next' => false, 'total' => releases.count}, 'results' => releases}.to_json
51
+ get '/v3/releases' do
52
+ halt 400, json({:error => 'The number of version constraints in the query does not match the number of module names'}) unless params[:module]
53
+ author, name = params[:module].split '-'
54
+ releases = releases(author, name)
55
+ halt 404, json({:pagination => {:next => false}, :results => []}) unless releases
56
+ json :pagination => {:next => false, :total => releases.count}, :results => releases
51
57
  end
52
58
 
53
59
  get '/v3/files/*' do
54
60
  captures = params[:captures].first
55
61
  buffer = get_buffer(@backends, captures)
56
-
57
- halt 404, {'errors' => ['404 Not found']}.to_json unless buffer
58
-
62
+ halt 404, json({:errors => ['404 Not found']}) unless buffer
59
63
  content_type 'application/octet-stream'
60
64
  attachment captures.split('/').last
61
65
  download buffer
@@ -64,16 +68,20 @@ module PuppetForgeServer::App
64
68
  get '/v3/modules/:author-:name' do
65
69
  author = params[:author]
66
70
  name = params[:name]
67
-
68
- halt 400, {'errors' => "'#{params[:module]}' is not a valid module slug"}.to_json unless author && name
69
-
71
+ halt 400, json({:errors => "'#{params[:module]}' is not a valid module slug"}) unless author && name
70
72
  metadata = @backends.map do |backend|
71
73
  backend.get_metadata(author, name)
72
74
  end.flatten.compact.uniq
75
+ halt 404, json({:errors => ['404 Not found']}) if metadata.empty?
76
+ json get_modules(metadata)
77
+ end
73
78
 
74
- halt 404, {'errors' => ['404 Not found']}.to_json if metadata.empty?
75
-
76
- get_modules(metadata).to_json
79
+ private
80
+ def releases(author, name, version = nil)
81
+ metadata = @backends.map do |backend|
82
+ backend.get_metadata(author, name, {:version => version})
83
+ end.flatten.compact.uniq
84
+ metadata.empty? ? nil : get_releases(metadata)
77
85
  end
78
86
  end
79
87
  end
@@ -57,10 +57,15 @@ module PuppetForgeServer::Backends
57
57
  releases
58
58
  end
59
59
 
60
+ def normalize_metadata(metadata)
61
+ metadata['name'] = metadata['name'].gsub('/', '-')
62
+ metadata
63
+ end
64
+
60
65
  def get_release_metadata(releases)
61
66
  releases.map do |element|
62
67
  {
63
- :metadata => PuppetForgeServer::Models::Metadata.new(element['metadata']),
68
+ :metadata => PuppetForgeServer::Models::Metadata.new(normalize_metadata(element['metadata'])),
64
69
  :checksum => element['file_md5'],
65
70
  :path => element['file_uri'],
66
71
  :tags => (element['tags'] + (element['metadata']['tags'] ? element['metadata']['tags'] : [])).flatten.uniq
@@ -23,8 +23,8 @@ module PuppetForgeServer
23
23
  @@DEFAULT_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
24
24
  @static_loggers = {:server => nil, :access => nil}
25
25
 
26
- def initialize(destinations = [@@DEFAULT_LOGGER])
27
- @loggers = Array.new(destinations).flatten.map do |dest|
26
+ def initialize(destinations = [@@DEFAULT_DESTINATION])
27
+ @loggers = [destinations].flatten.map do |dest|
28
28
  logger = ::Logger.new(dest)
29
29
  logger.formatter = proc do |severity, datetime, progname, msg|
30
30
  datetime = datetime.strftime @@DEFAULT_DATETIME_FORMAT
@@ -45,7 +45,7 @@ module PuppetForgeServer
45
45
  end
46
46
 
47
47
  def respond_to?(method_name, include_private = false)
48
- @loggers.each { |logger| false unless logger.respond_to? method_name }
48
+ @loggers.each { |logger| return false unless (logger.respond_to?(method_name) || %w(write puts).include?(method_name.to_s)) }
49
49
  end
50
50
 
51
51
  class << self
@@ -17,6 +17,18 @@
17
17
 
18
18
  require 'rubygems/package'
19
19
 
20
+ module Gem
21
+ def Version.new(version)
22
+ super(version.to_s.gsub('-', '.pre.'))
23
+ rescue ArgumentError
24
+ if version =~ /^\d+(\.\d+)*/
25
+ super(version[/^\d+(\.\d+)*/])
26
+ else
27
+ super('0')
28
+ end
29
+ end
30
+ end
31
+
20
32
  class Hash
21
33
  def deep_merge(other)
22
34
  merge(other) do |key, old_val, new_val|
@@ -42,8 +54,7 @@ class Array
42
54
 
43
55
  def version_sort_by
44
56
  sort_by do |element|
45
- version = yield(element).gsub('-', '.pre.')
46
- Gem::Version.new(version)
57
+ Gem::Version.new(yield(element))
47
58
  end
48
59
  end
49
60
  end
@@ -15,5 +15,5 @@
15
15
  # limitations under the License.
16
16
 
17
17
  module PuppetForgeServer
18
- VERSION = '1.1.0'
18
+ VERSION = '1.2.0'
19
19
  end
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.require_paths = %w(lib)
36
36
 
37
37
  spec.add_dependency 'sinatra', '~> 1.4'
38
+ spec.add_dependency 'sinatra-contrib', '~> 1.4'
38
39
  spec.add_dependency 'json', '~> 1.8'
39
40
  spec.add_dependency 'rack-mount', '~> 0.8'
40
41
  spec.add_dependency 'open4', '~> 1.3'
@@ -42,6 +43,7 @@ Gem::Specification.new do |spec|
42
43
 
43
44
  spec.add_development_dependency 'rake', '~> 10.3'
44
45
  spec.add_development_dependency 'rspec', '~> 3.1'
46
+ spec.add_development_dependency 'rspec-core', '~> 3.1'
45
47
 
46
48
  spec.required_ruby_version = '>= 1.9.3'
47
49
  end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Copyright 2014 North Development AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'rack/test'
18
+ require 'rspec'
19
+ require 'puppet_forge_server'
20
+
21
+ ENV['RACK_ENV'] = 'test'
22
+
23
+ module RSpecMixin
24
+ include Rack::Test::Methods
25
+ end
26
+
27
+ RSpec.configure do |c|
28
+ c.include RSpecMixin
29
+ c.add_formatter(:documentation)
30
+ end
@@ -0,0 +1,79 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Copyright 2014 North Development AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'spec_helper'
18
+
19
+ module PuppetForgeServer
20
+ describe Logger do
21
+ let(:msg) { 'this is a dummy message' }
22
+ let(:test_io) { StringIO.new }
23
+ let(:logger) { PuppetForgeServer::Logger.new(test_io) }
24
+
25
+ describe '#info' do
26
+ it 'should log message on level info' do
27
+ expect(logger).to respond_to(:info)
28
+ logger.info msg
29
+ expect(test_io.string).to include("INFO #{msg}")
30
+ end
31
+ end
32
+
33
+ describe '#error' do
34
+ it 'should log message on level error' do
35
+ expect(logger).to respond_to(:error)
36
+ logger.error msg
37
+ expect(test_io.string).to include("ERROR #{msg}")
38
+ end
39
+ end
40
+
41
+ describe '#warn' do
42
+ it 'should log message on level warn' do
43
+ expect(logger).to respond_to(:warn)
44
+ logger.warn msg
45
+ expect(test_io.string).to include("WARN #{msg}")
46
+ end
47
+ end
48
+
49
+ describe '#debug' do
50
+ it 'should log message on level debug' do
51
+ expect(logger).to respond_to(:debug)
52
+ logger.debug msg
53
+ expect(test_io.string).to include("DEBUG #{msg}")
54
+ end
55
+ end
56
+
57
+ describe '#puts' do
58
+ it 'should log message' do
59
+ expect(logger).to respond_to(:puts)
60
+ logger.puts msg
61
+ expect(test_io.string).to include(msg)
62
+ end
63
+ end
64
+
65
+ describe '#<<' do
66
+ it 'should log message' do
67
+ expect(logger).to respond_to('<<')
68
+ logger << msg
69
+ expect(test_io.string).to include(msg)
70
+ end
71
+ end
72
+
73
+ describe '#non_existing' do
74
+ it 'should fail on non existing method' do
75
+ expect { logger.non_existing }.to raise_error(NoMethodError)
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,51 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Copyright 2014 North Development AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'spec_helper'
18
+
19
+ module PuppetForgeServer::Models
20
+ describe Metadata do
21
+ let(:name) { 'dummy_name' }
22
+ let(:author) { 'dummy_author' }
23
+ let(:version) { '0.0.0' }
24
+ let(:project_page) { 'http://bogus-project-page.com' }
25
+ let(:metadata) { PuppetForgeServer::Models::Metadata.new({:name => name, :author => author, :version => version, :project_page => project_page}) }
26
+ describe '#initialize' do
27
+ it 'should create a metadata instance' do
28
+ expect(metadata.author).to eq author
29
+ expect(metadata.name).to eq name
30
+ expect(metadata.version).to eq version
31
+ end
32
+ end
33
+
34
+ describe '#hash' do
35
+ it 'should calculate hash from name, author and version' do
36
+ expect(metadata.hash).to eq(author.hash ^ name.hash ^ version.hash)
37
+ end
38
+ end
39
+
40
+ describe '#eql?' do
41
+ it 'should be equal based only on name, author and version' do
42
+ metadata2 = metadata.clone
43
+ expect(metadata).to eq metadata2
44
+ metadata2.project_page = 'http://bogus-project-page2.com'
45
+ expect(metadata).to eq metadata2
46
+ metadata2.name = 'something_else'
47
+ expect(metadata).not_to eq metadata2
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Copyright 2014 North Development AB
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'spec_helper'
18
+
19
+ module PuppetForgeServer
20
+ describe Server do
21
+ describe '#build' do
22
+ let(:server) { PuppetForgeServer::Server.new }
23
+ it 'builds rack routeset' do
24
+ routeset = server.build(nil)
25
+ expect(routeset.length).to eq 4
26
+ end
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-forge-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilja Bobkevic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-03 00:00:00.000000000 Z
11
+ date: 2014-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sinatra-contrib
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: json
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: '3.1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec-core
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.1'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.1'
111
139
  description: Private Puppet forge server supports local files, both v1 and v3 API
112
140
  proxies
113
141
  email: ilja.bobkevic@unibet.com
@@ -120,6 +148,7 @@ files:
120
148
  - ".travis.yml"
121
149
  - Gemfile
122
150
  - README.md
151
+ - Rakefile
123
152
  - bin/puppet-forge-server
124
153
  - lib/puppet_forge_server.rb
125
154
  - lib/puppet_forge_server/api/v1/modules.rb
@@ -148,6 +177,10 @@ files:
148
177
  - lib/puppet_forge_server/utils/url.rb
149
178
  - lib/puppet_forge_server/version.rb
150
179
  - puppet-forge-server.gemspec
180
+ - spec/spec_helper.rb
181
+ - spec/unit/logger_spec.rb
182
+ - spec/unit/models/metadata_spec.rb
183
+ - spec/unit/server_spec.rb
151
184
  homepage: https://github.com/unibet/puppet-forge-server
152
185
  licenses:
153
186
  - Apache 2
@@ -172,4 +205,8 @@ rubygems_version: 2.4.1
172
205
  signing_key:
173
206
  specification_version: 4
174
207
  summary: Private Puppet forge server
175
- test_files: []
208
+ test_files:
209
+ - spec/spec_helper.rb
210
+ - spec/unit/logger_spec.rb
211
+ - spec/unit/models/metadata_spec.rb
212
+ - spec/unit/server_spec.rb