quiz_api_client 0.2.1 → 1.0.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: c2463d4ce86dbe40353740eebbd781d066b1adc8
4
- data.tar.gz: 1927ad94d775b8d5187c81422040717490633a8d
3
+ metadata.gz: 495e1d1a307162fa8936f613e20380bb842291c1
4
+ data.tar.gz: cb5e833889a0f3291eee0046cecf5f03e3914cc8
5
5
  SHA512:
6
- metadata.gz: 19c114e3a2814f6b04ac9e15675e391a47d80aa32e729f671e2bae69bed20a1bb08e3dc9487c066663d47b60c06db1527d645d67be73b89f7e831a6e24d4ade6
7
- data.tar.gz: f9d09b8a7f0111d696d64b94864619e3b96af470dd7a8a7e5735c09acab6132f4ba40cf68795a866231da22c4a96b0bb4536b23ccdff6dec0b6d56f9bdad6bf8
6
+ metadata.gz: db378349c766050f4da8f8ba9930d745c1585231d944c93dfa09f10ad67fe024c7170c1d33bb6980e1bf539d32b511bd8c20cb58cc71db7cc9a6e24149421e09
7
+ data.tar.gz: cb4fec7cd16e380a062ef9bba994f9eb637d25df5788705fb9f37c8484d785c6f57b33782297a6febf7a557b43db80ac413a76757083d8823749f1f652376c3c
data/.dockerignore CHANGED
@@ -1,4 +1,4 @@
1
1
  /coverage
2
- /docker-compose.yml
3
- /Dockerfile
4
- /**/*.gem
2
+ /docker-compose.*
3
+ /Dockerfile*
4
+ /**/*.gem
data/.gitignore CHANGED
@@ -3,8 +3,10 @@
3
3
  /_yardoc/
4
4
  /coverage/
5
5
  /doc/
6
+ /docker-compose.override.yml
7
+ /Gemfile.lock
8
+ /log/
9
+ /pacts/
6
10
  /pkg/
7
11
  /spec/reports/
8
12
  /tmp/
9
- /Gemfile.lock
10
-
data/Dockerfile CHANGED
@@ -11,6 +11,7 @@ RUN chown -R docker:docker /app
11
11
  USER docker
12
12
  RUN /bin/bash -l -c "cd /app && rvm-exec 2.4 bundle install --jobs 5"
13
13
  COPY . /app
14
+ RUN rm -f Gemfile.lock
14
15
 
15
16
  USER root
16
17
  RUN chown -R docker:docker /app
@@ -0,0 +1,19 @@
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/bin/contracts ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bash
2
+
3
+ function print_results() {
4
+ exit_code=$?
5
+ set +e
6
+
7
+ docker-compose rm -fv contracts-testrunner
8
+
9
+ if [[ "$exit_code" == "0" ]]; then
10
+ echo ""
11
+ echo "Success!"
12
+ fi
13
+ }
14
+ trap print_results INT TERM EXIT
15
+ set -e
16
+
17
+ docker-compose run --name contracts contracts-testrunner bundle exec rspec spec/contracts
18
+ docker cp contracts:/usr/src/app/log .
19
+ docker cp contracts:/usr/src/app/pacts .
data/bin/setup CHANGED
@@ -1,8 +1,37 @@
1
1
  #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
2
 
3
+ function print_results() {
4
+ exit_code=$?
5
+ set +e
6
+
7
+ echo ""
8
+
9
+ if [[ "$exit_code" == "0" ]]; then
10
+ echo "Success!"
11
+ else
12
+ echo "Something went wrong! Check the output above for details."
13
+ fi
14
+ }
15
+ trap print_results INT TERM EXIT
16
+ set -e
17
+
18
+ echo ""
19
+ echo "Preparing environment for native development..."
6
20
  bundle install
7
21
 
8
- # Do any other automated setup that you need to do here
22
+ echo ""
23
+ echo "Preparing environment for dockerized development (if you choose to use it)..."
24
+
25
+ override_file='docker-compose.override.yml'
26
+ dev_override_file='docker-compose.dev.override.yml'
27
+ if [ -f ${override_file} ] && ! cmp ${override_file} ${dev_override_file} --silent; then
28
+ echo "We found an existing ${override_file}"
29
+ echo ""
30
+ echo "You'll want to merge that file with the version controlled
31
+ docker-compose.dev.override.yml file to make sure you've got
32
+ the most recent changes."
33
+ echo ""
34
+ else
35
+ echo "We are copying the development example override file to docker-compose.override.yml for you."
36
+ cp ${dev_override_file} ${override_file}
37
+ fi
data/build.sh CHANGED
@@ -1,4 +1,12 @@
1
- #!/bin/bash -ex
1
+ #!/usr/bin/env bash
2
+
3
+ set -ex
4
+
5
+ function save_pact_files_to_s3()
6
+ {
7
+ echo "Saving pact files to S3..."
8
+ aws s3 cp pacts s3://ci-asset-cache/pacts/${JOB_NAME} --recursive --only-show-errors --region us-east-1
9
+ }
2
10
 
3
11
  function cleanup() {
4
12
  exit_code=$?
@@ -10,8 +18,14 @@ function cleanup() {
10
18
  }
11
19
  trap cleanup INT TERM EXIT
12
20
 
13
- set -e
14
-
15
21
  docker-compose build --pull
16
22
  echo "Running test suite..."
17
23
  docker-compose run --name coverage testrunner $@
24
+
25
+ echo ""
26
+ echo "Running contract tests..."
27
+ docker-compose run --name contracts -T contracts-testrunner bundle exec rspec spec/contracts
28
+ docker cp contracts:/usr/src/app/pacts .
29
+ docker cp contracts:/usr/src/app/log .
30
+
31
+ save_pact_files_to_s3
@@ -0,0 +1,10 @@
1
+ version: '2'
2
+
3
+ services:
4
+ testrunner:
5
+ volumes:
6
+ - .:/usr/src/app/
7
+
8
+ contracts-testrunner:
9
+ volumes:
10
+ - .:/usr/src/app/
data/docker-compose.yml CHANGED
@@ -3,3 +3,8 @@ version: '2'
3
3
  services:
4
4
  testrunner:
5
5
  build: .
6
+
7
+ contracts-testrunner:
8
+ build:
9
+ context: .
10
+ dockerfile: Dockerfile.contracts
@@ -11,22 +11,15 @@ module QuizApiClient::Services
11
11
  @protocol = protocol
12
12
  end
13
13
 
14
- def grant_permission(scope:, exp: nil, resource_id: nil)
14
+ def grant_permission(scope:, exp: nil, resource_id: nil, uuid: nil)
15
15
  payload = {
16
16
  host: URI.parse("#{protocol}://#{host}").host,
17
17
  consumer_key: consumer_key,
18
18
  scope: scope,
19
- exp: exp || Time.now.utc.to_i + 60,
20
-
21
- # FIXME: This is currently required on quiz_web
22
- user: {
23
- full_name: 'Fake Full Name',
24
- given_name: 'Fake',
25
- email: 'quizzes+fake@instructure.com',
26
- id: 1
27
- }
19
+ exp: exp || Time.now.utc.to_i + 60
28
20
  }
29
21
  payload[:resource_id] = resource_id if resource_id
22
+ payload[:user] = { uuid: uuid } if uuid
30
23
 
31
24
  JWT.encode(payload, shared_secret, HASHING_ALGORITHM)
32
25
  end
@@ -1,3 +1,3 @@
1
1
  module QuizApiClient
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
@@ -15,12 +15,13 @@ Gem::Specification.new do |spec|
15
15
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
16
  spec.require_paths = ['lib']
17
17
 
18
- spec.add_dependency 'httparty'
18
+ spec.add_dependency 'httparty', '0.14.0'
19
19
  spec.add_dependency 'jwt'
20
20
 
21
21
  spec.add_development_dependency 'bundler', '~> 1.12'
22
22
  spec.add_development_dependency 'simplecov'
23
23
  spec.add_development_dependency 'webmock'
24
+ spec.add_development_dependency 'pact', '~> 1.12.0'
24
25
  spec.add_development_dependency 'rake', '~> 10.0'
25
26
  spec.add_development_dependency 'rspec', '~> 3.0'
26
27
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quiz_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-11 00:00:00.000000000 Z
11
+ date: 2017-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.14.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'
26
+ version: 0.14.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jwt
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pact
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.12.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.12.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -121,12 +135,15 @@ files:
121
135
  - ".rspec"
122
136
  - ".rubocop.yml"
123
137
  - Dockerfile
138
+ - Dockerfile.contracts
124
139
  - Gemfile
125
140
  - README.md
126
141
  - Rakefile
127
142
  - bin/console
143
+ - bin/contracts
128
144
  - bin/setup
129
145
  - build.sh
146
+ - docker-compose.dev.override.yml
130
147
  - docker-compose.yml
131
148
  - lib/quiz_api_client.rb
132
149
  - lib/quiz_api_client/http_client.rb