puppet-forge-server 1.1.0 → 1.2.0

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: 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