quiz_api_client 0.2.1 → 1.0.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: 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