quiz_api_client 2.7.0 → 3.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 +4 -4
- data/.dockerignore +3 -0
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/.rubocop.yml +6 -5
- data/Dockerfile +4 -13
- data/Jenkinsfile +86 -0
- data/Rakefile +1 -1
- data/bin/contracts-generate +3 -4
- data/docker-compose.dev.override.yml +7 -15
- data/docker-compose.yml +2 -7
- data/lib/quiz_api_client/http_client.rb +3 -0
- data/lib/quiz_api_client/services/item_analyses_service.rb +2 -0
- data/lib/quiz_api_client/services/items_service.rb +1 -0
- data/lib/quiz_api_client/services/qti_imports_service.rb +15 -5
- data/lib/quiz_api_client/services/quiz_analyses_service.rb +1 -0
- data/lib/quiz_api_client/services/quiz_clone_job_service.rb +1 -0
- data/lib/quiz_api_client/services/quiz_entries_service.rb +15 -0
- data/lib/quiz_api_client/services/quiz_session_events_service.rb +1 -0
- data/lib/quiz_api_client/services/quiz_session_result_service.rb +1 -0
- data/lib/quiz_api_client/services/quiz_session_service.rb +1 -0
- data/lib/quiz_api_client/services/quiz_sessions_service.rb +11 -0
- data/lib/quiz_api_client/services/session_item_results_service.rb +1 -0
- data/lib/quiz_api_client/services/session_items_service.rb +1 -0
- data/lib/quiz_api_client/services/shared_banks.rb +3 -0
- data/lib/quiz_api_client/version.rb +1 -1
- data/quiz_api_client.gemspec +9 -10
- metadata +21 -43
- data/Dockerfile.contracts +0 -19
- data/build.sh +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d21ef77c677faced1f5decda500ca2e4e32dbd5e163e3a313c3d68f699de6f38
|
4
|
+
data.tar.gz: 1614220681706baad9693a638ff0bb9d27622708af4e82ff7a570a47617a1fe5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e618dca3ed741dddf0d325d7ab77c418fcd9c0a7088b3c4613d137f873efc5b5829f9a1011d57de42dea88edfefe5203debf4c512b5f84e7699b1d5b5594271
|
7
|
+
data.tar.gz: b20220626d0cc582a0a72fb4bdab8d12a81da5884438357b98695a493e1b4c6c1ef225413430a5b2a7a4ac67cd9b9b1956ff47c7ecdfede673ef4feb1d6c61cd
|
data/.dockerignore
CHANGED
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
AllCops:
|
2
|
-
TargetRubyVersion: 2.
|
2
|
+
TargetRubyVersion: 2.4
|
3
3
|
|
4
4
|
Metrics/ClassLength:
|
5
5
|
Max: 200 # Default: 100
|
@@ -16,6 +16,9 @@ Metrics/BlockLength:
|
|
16
16
|
- quiz_api_client.gemspec
|
17
17
|
- spec/**/*.rb
|
18
18
|
|
19
|
+
Naming/MemoizedInstanceVariableName:
|
20
|
+
EnforcedStyleForLeadingUnderscores: required
|
21
|
+
|
19
22
|
Layout/AlignParameters:
|
20
23
|
# Alignment of parameters in multi-line method calls.
|
21
24
|
#
|
@@ -29,7 +32,7 @@ Layout/AlignParameters:
|
|
29
32
|
Layout/CaseIndentation:
|
30
33
|
EnforcedStyle: end
|
31
34
|
|
32
|
-
|
35
|
+
Layout/EndAlignment:
|
33
36
|
EnforcedStyleAlignWith: variable
|
34
37
|
|
35
38
|
Style/ClassAndModuleChildren:
|
@@ -59,13 +62,11 @@ Style/Documentation:
|
|
59
62
|
Enabled: false
|
60
63
|
|
61
64
|
Style/FrozenStringLiteralComment:
|
62
|
-
# `when_needed` will add the frozen string literal comment to files
|
63
|
-
# only when the `TargetRubyVersion` is set to 2.3+.
|
64
65
|
# `always` will always add the frozen string literal comment to a file
|
65
66
|
# regardless of the Ruby version or if `freeze` or `<<` are called on a
|
66
67
|
# string literal. If you run code against multiple versions of Ruby, it is
|
67
68
|
# possible that this will create errors in Ruby 2.3.0+.
|
68
69
|
#
|
69
70
|
# See: https://wyeworks.com/blog/2015/12/1/immutable-strings-in-ruby-2-dot-3
|
70
|
-
EnforcedStyle:
|
71
|
+
EnforcedStyle: always
|
71
72
|
Enabled: false
|
data/Dockerfile
CHANGED
@@ -1,20 +1,11 @@
|
|
1
1
|
FROM instructure/rvm
|
2
2
|
|
3
|
-
|
3
|
+
RUN mkdir -p coverage log pacts
|
4
4
|
|
5
|
-
COPY quiz_api_client.gemspec Gemfile
|
6
|
-
COPY lib/quiz_api_client/version.rb
|
7
|
-
|
8
|
-
USER root
|
9
|
-
RUN chown -R docker:docker /app
|
10
|
-
|
11
|
-
USER docker
|
5
|
+
COPY --chown=docker:docker quiz_api_client.gemspec Gemfile ./
|
6
|
+
COPY --chown=docker:docker lib/quiz_api_client/version.rb lib/quiz_api_client/version.rb
|
12
7
|
RUN /bin/bash -l -c "rvm-exec 2.4 bundle install --jobs 5"
|
13
|
-
COPY . /app
|
14
|
-
RUN rm -f Gemfile.lock
|
15
8
|
|
16
|
-
|
17
|
-
RUN chown -R docker:docker /app
|
18
|
-
USER docker
|
9
|
+
COPY --chown=docker:docker . .
|
19
10
|
|
20
11
|
CMD /bin/bash -l -c "rvm-exec 2.4 bundle exec rspec"
|
data/Jenkinsfile
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
def buildMatrix = ['2.4', '2.5', '2.6'].collectEntries { ruby ->
|
2
|
+
["Ruby ${ruby}": {
|
3
|
+
sh """
|
4
|
+
docker-compose run --name "${env.BUILD_ID}-ruby-${ruby}" \
|
5
|
+
app /bin/bash -lc "rvm-exec ${ruby} bundle install --jobs 5 && rvm-exec ${ruby} bundle exec rspec"
|
6
|
+
"""
|
7
|
+
}]
|
8
|
+
}
|
9
|
+
|
10
|
+
pipeline {
|
11
|
+
agent {
|
12
|
+
label 'docker'
|
13
|
+
}
|
14
|
+
options {
|
15
|
+
buildDiscarder(logRotator(numToKeepStr: '50'))
|
16
|
+
timeout(time: 20, unit: 'MINUTES')
|
17
|
+
}
|
18
|
+
stages {
|
19
|
+
stage('Build') {
|
20
|
+
steps {
|
21
|
+
sh 'docker-compose build --pull'
|
22
|
+
}
|
23
|
+
}
|
24
|
+
stage('Lint') {
|
25
|
+
steps {
|
26
|
+
sh '''
|
27
|
+
docker-compose run --rm app /bin/bash -lc \
|
28
|
+
"rvm-exec 2.4 bundle exec rubocop --fail-level autocorrect"
|
29
|
+
'''
|
30
|
+
}
|
31
|
+
}
|
32
|
+
stage('Unit Tests') {
|
33
|
+
steps { script { parallel buildMatrix } }
|
34
|
+
}
|
35
|
+
stage('Contract Tests') {
|
36
|
+
steps {
|
37
|
+
sh 'docker-compose run app /bin/bash -l -c "rvm-exec 2.4 bundle exec rspec -t pact"'
|
38
|
+
}
|
39
|
+
}
|
40
|
+
stage ('Publish') {
|
41
|
+
when { environment name: "GERRIT_EVENT_TYPE", value: "change-merged"}
|
42
|
+
environment {
|
43
|
+
PACT_BROKER_PASSWORD = credentials('pact_broker_password')
|
44
|
+
JENKINS_URL = "${env.JENKINS_URL}"
|
45
|
+
PACT_CONSUMER_TAG = 'master'
|
46
|
+
PACT_BROKER_USERNAME = 'quizzes'
|
47
|
+
PACT_BROKER_HOST = 'inst-pact-broker.inseng.net'
|
48
|
+
}
|
49
|
+
steps {
|
50
|
+
script {
|
51
|
+
sh '''
|
52
|
+
sha="$(git rev-parse --short HEAD)"
|
53
|
+
|
54
|
+
docker-compose run --rm \
|
55
|
+
-e JENKINS_URL="${JENKINS_URL}" \
|
56
|
+
-e PACT_BROKER_HOST="${PACT_BROKER_HOST}" \
|
57
|
+
-e PACT_BROKER_USERNAME="${PACT_BROKER_USERNAME}" \
|
58
|
+
-e PACT_BROKER_PASSWORD="${PACT_BROKER_PASSWORD}" \
|
59
|
+
-e PACT_CONSUMER_TAG="${PACT_CONSUMER_TAG}" \
|
60
|
+
-e SHA="${sha}" \
|
61
|
+
app /bin/bash -l -c "rvm-exec 2.4 bundle exec rake broker:pact:publish:jenkins_post_merge"
|
62
|
+
'''
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
post {
|
69
|
+
success {
|
70
|
+
sh "docker cp \"${env.BUILD_ID}-ruby-2.4:/usr/src/app/coverage\" ."
|
71
|
+
publishHTML target: [
|
72
|
+
allowMissing: false,
|
73
|
+
alwaysLinkToLastBuild: false,
|
74
|
+
keepAll: true,
|
75
|
+
reportDir: "coverage",
|
76
|
+
reportFiles: 'index.html',
|
77
|
+
reportName: 'Coverage Report'
|
78
|
+
]
|
79
|
+
}
|
80
|
+
cleanup { // Always runs after all other post conditions=
|
81
|
+
sh 'docker-compose kill'
|
82
|
+
sh 'docker-compose rm -f'
|
83
|
+
sh 'docker images -qf "dangling=true" | xargs docker rmi -f &>/dev/null'
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
data/Rakefile
CHANGED
data/bin/contracts-generate
CHANGED
@@ -14,7 +14,7 @@ function print_results() {
|
|
14
14
|
docker cp contracts:/usr/src/app/pacts . &> /dev/null
|
15
15
|
docker rm -f contracts &> /dev/null
|
16
16
|
|
17
|
-
docker-compose rm -fv
|
17
|
+
docker-compose rm -fv app &> /dev/null
|
18
18
|
}
|
19
19
|
trap print_results INT TERM EXIT
|
20
20
|
set -e
|
@@ -22,6 +22,5 @@ set -e
|
|
22
22
|
rm -rf pacts
|
23
23
|
sha="$(git rev-parse --short HEAD)"
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
"bundle && bundle exec rspec spec/contracts && bundle exec rake broker:pact:publish:local"
|
25
|
+
docker-compose run --name contracts -e SHA="${sha}" app bash -l -c \
|
26
|
+
"bundle && bundle exec rspec --tag pact && bundle exec rake broker:pact:publish:local"
|
@@ -1,19 +1,11 @@
|
|
1
|
-
version: '
|
1
|
+
version: '3.5'
|
2
2
|
|
3
3
|
services:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
#external_links: # linux
|
11
|
-
# - dory_dinghy_http_proxy:pact-broker.docker # linux
|
4
|
+
app:
|
5
|
+
# This port doesn't exist, but doing this tricks Dory proxy into hooking up
|
6
|
+
# the container so it can actually talk to the Pact Broker.
|
7
|
+
expose: [8080]
|
8
|
+
external_links:
|
9
|
+
- ${PROXY_CONTAINER:-dinghy_http_proxy}:pact-broker.docker
|
12
10
|
volumes:
|
13
11
|
- .:/usr/src/app
|
14
|
-
#- api-logs:/usr/src/app/log # linux:fs
|
15
|
-
- bundler-config:/home/docker/.rvm/gems/ruby-2.4.0
|
16
|
-
|
17
|
-
volumes:
|
18
|
-
bundler-config: {}
|
19
|
-
api-logs: {}
|
data/docker-compose.yml
CHANGED
@@ -23,6 +23,7 @@ module QuizApiClient
|
|
23
23
|
|
24
24
|
def get(path, all: false, query: {})
|
25
25
|
return make_request :get, url_for(path), query: query unless all
|
26
|
+
|
26
27
|
make_paginated_request :get, url_for(path), query: query
|
27
28
|
end
|
28
29
|
|
@@ -91,6 +92,7 @@ module QuizApiClient
|
|
91
92
|
until request_url.nil?
|
92
93
|
resp = make_request(method, request_url, request_options)
|
93
94
|
raise RequestFailed, "#{url} responded #{resp.body} (#{resp.code})" unless resp.code == 200
|
95
|
+
|
94
96
|
entities.concat(resp.parsed_response)
|
95
97
|
request_url, request_options = next_page(resp, url, options)
|
96
98
|
end
|
@@ -119,6 +121,7 @@ module QuizApiClient
|
|
119
121
|
|
120
122
|
def next_page_link(response, options)
|
121
123
|
return if response.headers['link'].blank?
|
124
|
+
|
122
125
|
links = LinkHeader.parse(response.headers['link']).links
|
123
126
|
next_link = links.find { |link| link['rel'] == 'next' }
|
124
127
|
[next_link.href, options] if next_link
|
@@ -2,6 +2,7 @@ module QuizApiClient::Services
|
|
2
2
|
class ItemAnalysesService < BaseApiService
|
3
3
|
def list(params:, token: nil, all: false)
|
4
4
|
raise 'Quiz Id Required' unless params.key?(:quiz_id)
|
5
|
+
|
5
6
|
client(token: token).get(
|
6
7
|
"/api/quizzes/#{params[:quiz_id]}/stats/item_analyses",
|
7
8
|
all: all
|
@@ -10,6 +11,7 @@ module QuizApiClient::Services
|
|
10
11
|
|
11
12
|
def get(params:, token: nil)
|
12
13
|
raise 'Quiz Id and Item Id are Required' unless params.key?(:id) && params.key?(:quiz_id)
|
14
|
+
|
13
15
|
client(token: token).get(
|
14
16
|
"/api/quizzes/#{params[:quiz_id]}/stats/item_analyses/#{params[:id]}"
|
15
17
|
)
|
@@ -2,16 +2,26 @@ module QuizApiClient::Services
|
|
2
2
|
class QtiImportsService < BaseApiService
|
3
3
|
def create(params:, token: nil)
|
4
4
|
raise 'Quiz Id Required' unless params && params[:quiz_id]
|
5
|
-
post_to_quiz_api(params: params, token: token)
|
6
|
-
end
|
7
|
-
|
8
|
-
private
|
9
5
|
|
10
|
-
def post_to_quiz_api(params:, token:)
|
11
6
|
client(token: token).post(
|
12
7
|
"/api/quizzes/#{params[:quiz_id]}/qti_imports",
|
13
8
|
qti_import: params
|
14
9
|
)
|
15
10
|
end
|
11
|
+
|
12
|
+
def banks(params:, token: nil)
|
13
|
+
client(token: token).post(
|
14
|
+
'/api/qti_imports/banks',
|
15
|
+
qti_import: params
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_imported_consumer_settings(params:, token: nil)
|
20
|
+
raise 'Quiz Id Required' unless params && params[:quiz_id]
|
21
|
+
|
22
|
+
client(token: token).get(
|
23
|
+
"/api/quizzes/#{params[:quiz_id]}/qti_imports/imported_consumer_settings"
|
24
|
+
)
|
25
|
+
end
|
16
26
|
end
|
17
27
|
end
|
@@ -2,14 +2,23 @@ module QuizApiClient::Services
|
|
2
2
|
class QuizEntriesService < BaseApiService
|
3
3
|
def create(params:, token: nil)
|
4
4
|
raise 'Quiz Id Required' unless params && params[:id]
|
5
|
+
|
5
6
|
post_to_quiz_api(params: params, token: token)
|
6
7
|
end
|
7
8
|
|
8
9
|
def list(params:, token: nil, all: false)
|
9
10
|
raise 'Quiz Id Required' unless params && params[:id]
|
11
|
+
|
10
12
|
get_from_quiz_api(params: params, token: token, all: all)
|
11
13
|
end
|
12
14
|
|
15
|
+
def destroy(params:, token: nil)
|
16
|
+
raise 'Quiz Id Required' unless params && params[:quiz_id]
|
17
|
+
raise 'Item Id Required' unless params && params[:id]
|
18
|
+
|
19
|
+
delete_from_quiz_api(params, token)
|
20
|
+
end
|
21
|
+
|
13
22
|
private
|
14
23
|
|
15
24
|
def post_to_quiz_api(params:, token:)
|
@@ -25,5 +34,11 @@ module QuizApiClient::Services
|
|
25
34
|
all: all
|
26
35
|
)
|
27
36
|
end
|
37
|
+
|
38
|
+
def delete_from_quiz_api(params, token)
|
39
|
+
client(token: token).delete(
|
40
|
+
"/api/quizzes/#{params[:quiz_id]}/quiz_entries/#{params[:id]}"
|
41
|
+
)
|
42
|
+
end
|
28
43
|
end
|
29
44
|
end
|
@@ -1,7 +1,18 @@
|
|
1
1
|
module QuizApiClient::Services
|
2
2
|
class QuizSessionsService < BaseApiService
|
3
|
+
def list(params:, token: nil)
|
4
|
+
raise 'Quiz Id Required' unless params && params[:quiz_id]
|
5
|
+
raise 'Quiz Session Ids Required' unless params && params[:ids]
|
6
|
+
|
7
|
+
client(token: token).get(
|
8
|
+
"/api/quizzes/#{params[:quiz_id]}/quiz_sessions",
|
9
|
+
query: params[:ids].to_query('ids')
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
3
13
|
def create(params:, token: nil)
|
4
14
|
raise 'Quiz Id Required' unless params && params[:quiz_id]
|
15
|
+
|
5
16
|
post_to_quiz_api(params: params, token: token)
|
6
17
|
end
|
7
18
|
|
@@ -3,6 +3,7 @@ module QuizApiClient::Services
|
|
3
3
|
def list(params:, token: nil, all: false)
|
4
4
|
raise 'QuizSession Id Required' unless params && params[:quiz_session_id]
|
5
5
|
raise 'QuizSessionResult Id Required' unless params && params[:quiz_session_result_id]
|
6
|
+
|
6
7
|
get_from_quiz_api(params: params, token: token, all: all)
|
7
8
|
end
|
8
9
|
|
@@ -2,6 +2,7 @@ module QuizApiClient::Services
|
|
2
2
|
class SharedBanks < BaseApiService
|
3
3
|
def list(params:, token: nil, all: false)
|
4
4
|
raise 'Bank Id Required' unless params && params[:bank_id]
|
5
|
+
|
5
6
|
client(token: token).get(
|
6
7
|
"/api/banks/#{params[:bank_id]}/shared_banks",
|
7
8
|
all: all
|
@@ -10,6 +11,7 @@ module QuizApiClient::Services
|
|
10
11
|
|
11
12
|
def create(params:, token: nil)
|
12
13
|
raise 'Bank Id Required' unless params && params[:bank_id]
|
14
|
+
|
13
15
|
client(token: token).post(
|
14
16
|
"/api/banks/#{params[:bank_id]}/shared_banks",
|
15
17
|
params
|
@@ -19,6 +21,7 @@ module QuizApiClient::Services
|
|
19
21
|
def update(params:, token: nil)
|
20
22
|
raise 'Bank Id Required' unless params && params[:bank_id]
|
21
23
|
raise 'Shared Bank Id Required' unless params && params[:shared_bank_id]
|
24
|
+
|
22
25
|
shared_bank_id = params.delete(:shared_bank_id)
|
23
26
|
client(token: token).put(
|
24
27
|
"/api/banks/#{params[:bank_id]}/shared_banks/#{shared_bank_id}",
|
data/quiz_api_client.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'quiz_api_client/version'
|
4
4
|
|
@@ -40,18 +40,17 @@ Gem::Specification.new do |spec|
|
|
40
40
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
41
41
|
spec.require_paths = ['lib']
|
42
42
|
|
43
|
-
spec.required_ruby_version = '>= 2.
|
43
|
+
spec.required_ruby_version = '>= 2.4'
|
44
44
|
|
45
|
-
spec.add_dependency 'httparty', '~> 0.
|
46
|
-
spec.add_dependency 'jwt', '
|
45
|
+
spec.add_dependency 'httparty', '~> 0.17'
|
46
|
+
spec.add_dependency 'jwt', '~> 2.2'
|
47
47
|
spec.add_dependency 'link_header', '~> 0.0'
|
48
48
|
|
49
|
-
spec.add_development_dependency '
|
50
|
-
spec.add_development_dependency '
|
51
|
-
spec.add_development_dependency '
|
52
|
-
spec.add_development_dependency '
|
53
|
-
spec.add_development_dependency '
|
54
|
-
spec.add_development_dependency 'rubocop', '~> 0.52.1'
|
49
|
+
spec.add_development_dependency 'pact', '~> 1.41'
|
50
|
+
spec.add_development_dependency 'pact_broker-client', '~> 1.19'
|
51
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
52
|
+
spec.add_development_dependency 'rspec', '~> 3.8'
|
53
|
+
spec.add_development_dependency 'rubocop', '~> 0.74.0'
|
55
54
|
spec.add_development_dependency 'simplecov'
|
56
55
|
spec.add_development_dependency 'webmock'
|
57
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quiz_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Wang
|
@@ -19,7 +19,7 @@ authors:
|
|
19
19
|
autorequire:
|
20
20
|
bindir: exe
|
21
21
|
cert_chain: []
|
22
|
-
date:
|
22
|
+
date: 2021-04-19 00:00:00.000000000 Z
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
25
|
name: httparty
|
@@ -27,34 +27,28 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - "~>"
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 0.
|
30
|
+
version: '0.17'
|
31
31
|
type: :runtime
|
32
32
|
prerelease: false
|
33
33
|
version_requirements: !ruby/object:Gem::Requirement
|
34
34
|
requirements:
|
35
35
|
- - "~>"
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.
|
37
|
+
version: '0.17'
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: jwt
|
40
40
|
requirement: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
|
-
- - "
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '1.5'
|
45
|
-
- - "<"
|
42
|
+
- - "~>"
|
46
43
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
44
|
+
version: '2.2'
|
48
45
|
type: :runtime
|
49
46
|
prerelease: false
|
50
47
|
version_requirements: !ruby/object:Gem::Requirement
|
51
48
|
requirements:
|
52
|
-
- - "
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.5'
|
55
|
-
- - "<"
|
49
|
+
- - "~>"
|
56
50
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
51
|
+
version: '2.2'
|
58
52
|
- !ruby/object:Gem::Dependency
|
59
53
|
name: link_header
|
60
54
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,90 +63,76 @@ dependencies:
|
|
69
63
|
- - "~>"
|
70
64
|
- !ruby/object:Gem::Version
|
71
65
|
version: '0.0'
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: bundler
|
74
|
-
requirement: !ruby/object:Gem::Requirement
|
75
|
-
requirements:
|
76
|
-
- - "~>"
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '1.15'
|
79
|
-
type: :development
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
requirements:
|
83
|
-
- - "~>"
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '1.15'
|
86
66
|
- !ruby/object:Gem::Dependency
|
87
67
|
name: pact
|
88
68
|
requirement: !ruby/object:Gem::Requirement
|
89
69
|
requirements:
|
90
70
|
- - "~>"
|
91
71
|
- !ruby/object:Gem::Version
|
92
|
-
version: 1.
|
72
|
+
version: '1.41'
|
93
73
|
type: :development
|
94
74
|
prerelease: false
|
95
75
|
version_requirements: !ruby/object:Gem::Requirement
|
96
76
|
requirements:
|
97
77
|
- - "~>"
|
98
78
|
- !ruby/object:Gem::Version
|
99
|
-
version: 1.
|
79
|
+
version: '1.41'
|
100
80
|
- !ruby/object:Gem::Dependency
|
101
81
|
name: pact_broker-client
|
102
82
|
requirement: !ruby/object:Gem::Requirement
|
103
83
|
requirements:
|
104
84
|
- - "~>"
|
105
85
|
- !ruby/object:Gem::Version
|
106
|
-
version: 1.
|
86
|
+
version: '1.19'
|
107
87
|
type: :development
|
108
88
|
prerelease: false
|
109
89
|
version_requirements: !ruby/object:Gem::Requirement
|
110
90
|
requirements:
|
111
91
|
- - "~>"
|
112
92
|
- !ruby/object:Gem::Version
|
113
|
-
version: 1.
|
93
|
+
version: '1.19'
|
114
94
|
- !ruby/object:Gem::Dependency
|
115
95
|
name: rake
|
116
96
|
requirement: !ruby/object:Gem::Requirement
|
117
97
|
requirements:
|
118
98
|
- - "~>"
|
119
99
|
- !ruby/object:Gem::Version
|
120
|
-
version: '12.
|
100
|
+
version: '12.3'
|
121
101
|
type: :development
|
122
102
|
prerelease: false
|
123
103
|
version_requirements: !ruby/object:Gem::Requirement
|
124
104
|
requirements:
|
125
105
|
- - "~>"
|
126
106
|
- !ruby/object:Gem::Version
|
127
|
-
version: '12.
|
107
|
+
version: '12.3'
|
128
108
|
- !ruby/object:Gem::Dependency
|
129
109
|
name: rspec
|
130
110
|
requirement: !ruby/object:Gem::Requirement
|
131
111
|
requirements:
|
132
112
|
- - "~>"
|
133
113
|
- !ruby/object:Gem::Version
|
134
|
-
version: '3.
|
114
|
+
version: '3.8'
|
135
115
|
type: :development
|
136
116
|
prerelease: false
|
137
117
|
version_requirements: !ruby/object:Gem::Requirement
|
138
118
|
requirements:
|
139
119
|
- - "~>"
|
140
120
|
- !ruby/object:Gem::Version
|
141
|
-
version: '3.
|
121
|
+
version: '3.8'
|
142
122
|
- !ruby/object:Gem::Dependency
|
143
123
|
name: rubocop
|
144
124
|
requirement: !ruby/object:Gem::Requirement
|
145
125
|
requirements:
|
146
126
|
- - "~>"
|
147
127
|
- !ruby/object:Gem::Version
|
148
|
-
version: 0.
|
128
|
+
version: 0.74.0
|
149
129
|
type: :development
|
150
130
|
prerelease: false
|
151
131
|
version_requirements: !ruby/object:Gem::Requirement
|
152
132
|
requirements:
|
153
133
|
- - "~>"
|
154
134
|
- !ruby/object:Gem::Version
|
155
|
-
version: 0.
|
135
|
+
version: 0.74.0
|
156
136
|
- !ruby/object:Gem::Dependency
|
157
137
|
name: simplecov
|
158
138
|
requirement: !ruby/object:Gem::Requirement
|
@@ -205,14 +185,13 @@ files:
|
|
205
185
|
- ".rspec"
|
206
186
|
- ".rubocop.yml"
|
207
187
|
- Dockerfile
|
208
|
-
- Dockerfile.contracts
|
209
188
|
- Gemfile
|
189
|
+
- Jenkinsfile
|
210
190
|
- README.md
|
211
191
|
- Rakefile
|
212
192
|
- bin/console
|
213
193
|
- bin/contracts-generate
|
214
194
|
- bin/setup
|
215
|
-
- build.sh
|
216
195
|
- docker-compose.dev.override.yml
|
217
196
|
- docker-compose.yml
|
218
197
|
- lib/quiz_api_client.rb
|
@@ -250,15 +229,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
250
229
|
requirements:
|
251
230
|
- - ">="
|
252
231
|
- !ruby/object:Gem::Version
|
253
|
-
version: '2.
|
232
|
+
version: '2.4'
|
254
233
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
234
|
requirements:
|
256
235
|
- - ">="
|
257
236
|
- !ruby/object:Gem::Version
|
258
237
|
version: '0'
|
259
238
|
requirements: []
|
260
|
-
|
261
|
-
rubygems_version: 2.7.6
|
239
|
+
rubygems_version: 3.0.6
|
262
240
|
signing_key:
|
263
241
|
specification_version: 4
|
264
242
|
summary: Ruby client for quiz_api
|
data/Dockerfile.contracts
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
FROM instructure/ruby:2.3
|
2
|
-
|
3
|
-
USER root
|
4
|
-
|
5
|
-
ENV APP_HOME /usr/src/app
|
6
|
-
RUN mkdir -p $APP_HOME/log
|
7
|
-
RUN mkdir -p $APP_HOME/pacts
|
8
|
-
|
9
|
-
COPY quiz_api_client.gemspec Gemfile $APP_HOME/
|
10
|
-
COPY lib/quiz_api_client/version.rb $APP_HOME/lib/quiz_api_client/version.rb
|
11
|
-
|
12
|
-
USER docker
|
13
|
-
RUN bundle install --quiet --jobs 8
|
14
|
-
|
15
|
-
USER root
|
16
|
-
COPY . $APP_HOME
|
17
|
-
RUN chown -R docker:docker $APP_HOME
|
18
|
-
|
19
|
-
USER docker
|
data/build.sh
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
set -ex
|
4
|
-
|
5
|
-
function publish_pact_file_to_pact_broker()
|
6
|
-
{
|
7
|
-
echo "Publishing pact file to Pact Broker..."
|
8
|
-
|
9
|
-
sha="$(git rev-parse --short HEAD)"
|
10
|
-
|
11
|
-
docker-compose run --rm \
|
12
|
-
-e JENKINS_URL="${JENKINS_URL}" \
|
13
|
-
-e PACT_BROKER_HOST="${PACT_BROKER_HOST}" \
|
14
|
-
-e PACT_BROKER_USERNAME="${PACT_BROKER_USERNAME}" \
|
15
|
-
-e PACT_BROKER_PASSWORD="${PACT_BROKER_PASSWORD}" \
|
16
|
-
-e PACT_CONSUMER_TAG="${PACT_CONSUMER_TAG}" \
|
17
|
-
-e SHA="${sha}" \
|
18
|
-
contracts-testrunner bundle exec rake broker:pact:publish:jenkins_post_merge
|
19
|
-
}
|
20
|
-
|
21
|
-
function cleanup() {
|
22
|
-
exit_code=$?
|
23
|
-
set +e
|
24
|
-
docker cp coverage:/app/coverage .
|
25
|
-
docker-compose kill
|
26
|
-
docker-compose rm -f
|
27
|
-
exit $exit_code
|
28
|
-
}
|
29
|
-
trap cleanup INT TERM EXIT
|
30
|
-
|
31
|
-
docker-compose build --pull
|
32
|
-
|
33
|
-
echo "Running Rubocop..."
|
34
|
-
docker-compose run --rm testrunner /bin/bash -lc \
|
35
|
-
"rvm-exec 2.4 bundle exec rubocop --fail-level autocorrect"
|
36
|
-
|
37
|
-
echo "Running test suite..."
|
38
|
-
docker-compose run --name coverage testrunner $@
|
39
|
-
|
40
|
-
echo
|
41
|
-
echo "Running contract tests..."
|
42
|
-
docker-compose run --name contracts -T contracts-testrunner bundle exec rspec spec/contracts
|
43
|
-
docker cp contracts:/usr/src/app/pacts .
|
44
|
-
docker cp contracts:/usr/src/app/log .
|
45
|
-
echo
|
46
|
-
|
47
|
-
if [[ "${GERRIT_EVENT_TYPE}" == "change-merged" ]]; then
|
48
|
-
publish_pact_file_to_pact_broker
|
49
|
-
fi
|