finapps_core 5.0.6 → 5.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +4 -1
  3. data/.github/release-drafter.yml +49 -0
  4. data/.github/workflows/main.yaml +38 -0
  5. data/.github/workflows/release-drafter.yml +15 -0
  6. data/.github/workflows/release.yml +54 -0
  7. data/.github/workflows/verify-pr-labeled.yml +14 -0
  8. data/.rubocop.yml +123 -73
  9. data/.tmuxinator.yml +20 -0
  10. data/.travis.yml +5 -6
  11. data/RELEASES.md +8 -0
  12. data/finapps_core.gemspec +9 -10
  13. data/lib/finapps_core.rb +1 -0
  14. data/lib/finapps_core/middleware/middleware.rb +7 -3
  15. data/lib/finapps_core/middleware/request/accept_json.rb +2 -1
  16. data/lib/finapps_core/middleware/request/user_agent.rb +1 -1
  17. data/lib/finapps_core/middleware/request/x_consumer_id.rb +20 -0
  18. data/lib/finapps_core/middleware/response/raise_error.rb +36 -7
  19. data/lib/finapps_core/rest/base_client.rb +20 -32
  20. data/lib/finapps_core/rest/configuration.rb +17 -4
  21. data/lib/finapps_core/rest/connection.rb +31 -21
  22. data/lib/finapps_core/rest/defaults.rb +1 -1
  23. data/lib/finapps_core/utils/loggeable.rb +1 -1
  24. data/lib/finapps_core/utils/validatable.rb +1 -1
  25. data/lib/finapps_core/version.rb +1 -1
  26. data/spec/core_extensions/object/is_integer_spec.rb +6 -7
  27. data/spec/middleware/request/accept_json_spec.rb +7 -3
  28. data/spec/middleware/request/no_encoding_basic_authentication_spec.rb +15 -6
  29. data/spec/middleware/request/request_id_spec.rb +4 -4
  30. data/spec/middleware/request/tenant_authentication_spec.rb +21 -14
  31. data/spec/middleware/request/user_agent_spec.rb +8 -3
  32. data/spec/middleware/request/x_consumer_id_spec.rb +16 -0
  33. data/spec/middleware/response/raise_error_spec.rb +47 -15
  34. data/spec/rest/base_client_spec.rb +87 -43
  35. data/spec/rest/configuration_spec.rb +25 -18
  36. data/spec/rest/credentials_spec.rb +4 -4
  37. data/spec/rest/defaults_spec.rb +1 -1
  38. data/spec/rest/resources_spec.rb +10 -20
  39. data/spec/spec_helper.rb +3 -3
  40. data/spec/support/fake_api.rb +1 -1
  41. data/spec/utils/validatable_spec.rb +9 -8
  42. metadata +73 -84
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '08859c33cd6524380a075b7f36177300adfdeb2b'
4
- data.tar.gz: cd48d1c3f27ee17efbb19d70b24abf121ecb98d0
2
+ SHA256:
3
+ metadata.gz: dd4de0991c1e8755d433dab8dc0dc424f3ea91f96397ab34989afdc662dc01cc
4
+ data.tar.gz: 6755974411e0bc978871969f6ce994013e2317c28fe0e18cce96a3b615673a0b
5
5
  SHA512:
6
- metadata.gz: b69ac8cecad4365023c4eb2769895d0b5a4e49970b7dc51a086149347fb5dee65b2a37e230fe5ec2be234ad5be79d37be32a5ad0527a4c2a9a74f1dc33515893
7
- data.tar.gz: 59768f251ec965091bc87e04384219befdeab569363ffb3c6f4fd6b585b2d25791b2c8ea9dbda5e62edfd626e325cdac0f9e0f461df6ce1791d58df90d4cf0b6
6
+ metadata.gz: e5d459507dd0de21b728fbee60427007ed59243f2b2d98e6ea9c196ed605a363d91b24f752a76ffe1bbf10c34c9ae439985bf91f41bfdc7f0a523dd219d45c6b
7
+ data.tar.gz: 9b3c7d10e5dbb30c1f8fcc31e66975b01fcb5296045af520aae8bd869f52a89514697a99df2627b7cb456e07f4d69b70479b65171b5ca070942d0386e91fbc50
@@ -13,7 +13,10 @@ plugins:
13
13
  enabled: true
14
14
  config:
15
15
  languages:
16
- - ruby
16
+ ruby:
17
+ mass_threshold: 30
17
18
  exclude_patterns:
18
19
  - spec/**/*
19
20
  - "**/vendor/**/*"
21
+ - lib/finapps_core/rest/connection.rb
22
+ - lib/core_extensions/string/json_to_hash.rb
@@ -0,0 +1,49 @@
1
+ name-template: 'version $RESOLVED_VERSION'
2
+ tag-template: 'v$RESOLVED_VERSION'
3
+ categories:
4
+ - title: 'Added'
5
+ labels: 'enhancement'
6
+ - title: 'Changed'
7
+ labels: 'change'
8
+ - title: 'Deprecated'
9
+ labels: 'deprecated'
10
+ - title: 'Removed'
11
+ labels: 'removed'
12
+ - title: 'Fixed'
13
+ labels: 'bug'
14
+ - title: 'Security'
15
+ label: 'dependencies'
16
+ - title: 'Documentation updates'
17
+ label: 'documentation'
18
+ - title: 'Maintenance'
19
+ labels: 'internal'
20
+
21
+ change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
22
+
23
+ version-resolver:
24
+ major:
25
+ labels:
26
+ - 'major'
27
+ minor:
28
+ labels:
29
+ - 'minor'
30
+ patch:
31
+ labels:
32
+ - 'patch'
33
+ default: patch
34
+
35
+ exclude-labels:
36
+ - reverted
37
+ - no-changelog
38
+ - skip-changelog
39
+ - invalid
40
+
41
+ template: |
42
+ ## [$RESOLVED_VERSION](https://github.com/finapps/ruby-client/compare/$PREVIOUS_TAG...$RESOLVED_VERSION)
43
+ $CHANGES
44
+
45
+ replacers:
46
+ - search: '/CVE-(\d{4})-(\d+)/g'
47
+ replace: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2'
48
+ - search: '@dependabot-preview'
49
+ replace: '@dependabot'
@@ -0,0 +1,38 @@
1
+ name: Continuous Integration
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ ci:
7
+ if: "!contains(github.event.head_commit.message, 'skip ci')"
8
+ runs-on: ubuntu-latest
9
+
10
+ strategy:
11
+ fail-fast: true
12
+
13
+ steps:
14
+ - uses: actions/checkout@v1
15
+
16
+ - name: Use Ruby 2.6
17
+ uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: '2.6'
20
+
21
+ - uses: actions/cache@v2
22
+ with:
23
+ path: vendor/bundle
24
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
25
+ restore-keys: |
26
+ ${{ runner.os }}-gems-
27
+
28
+ - name: Install gems
29
+ run: |
30
+ gem install -N bundler
31
+ bundle config path vendor/bundle
32
+ bundle install --jobs 4 --retry 3
33
+
34
+ - name: Run rubocop
35
+ run: bundle exec rubocop
36
+
37
+ - name: Run tests
38
+ run: bundle exec rspec
@@ -0,0 +1,15 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ update_release_draft:
10
+ if: "!contains(github.event.head_commit.message, 'skip ci')"
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: release-drafter/release-drafter@v5
14
+ env:
15
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,54 @@
1
+ name: Bump version and Release
2
+ on:
3
+ release:
4
+ types: [published]
5
+
6
+ jobs:
7
+ release:
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ fail-fast: true
11
+
12
+ steps:
13
+ - uses: actions/checkout@master
14
+ with:
15
+ persist-credentials: false
16
+ fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
17
+
18
+ - uses: actions/setup-ruby@v1
19
+ with:
20
+ ruby-version: '2.6'
21
+
22
+ - name: Get version from latest tag
23
+ id: get_version
24
+ uses: battila7/get-version-action@v2
25
+
26
+ - name: Bump version
27
+ run: |
28
+ gem install -N gem-release
29
+ git config --local user.email "action@github.com"
30
+ git config --local user.name "GitHub Action"
31
+ gem bump --skip-ci --version ${{ steps.get_version.outputs.version-without-v }}
32
+
33
+ - name: Push changes
34
+ uses: ad-m/github-push-action@master
35
+ with:
36
+ # GitHub Actions token does not support pushing to protected branches.
37
+ # github_token: ${{ secrets.GITHUB_TOKEN }}
38
+ #
39
+ # A manually populated`PERSONAL_ACCESS_TOKEN` environment variable
40
+ # with permissions to push to a protected branch must be used.
41
+ # not ideal - keep eyes open for a better solution
42
+ github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
43
+
44
+ - name: Release gem to rubygems.org
45
+ run: |
46
+ set +x
47
+ mkdir -p ~/.gem
48
+ cat << EOF > ~/.gem/credentials
49
+ ---
50
+ :rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }}
51
+ EOF
52
+ chmod 0600 ~/.gem/credentials
53
+ set -x
54
+ gem release
@@ -0,0 +1,14 @@
1
+ name: "Require PR labels"
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, labeled, unlabeled, synchronize]
6
+ jobs:
7
+ label:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: mheap/github-action-required-labels@v1
11
+ with:
12
+ mode: exactly
13
+ count: 1
14
+ labels: "bug, change, enhancement"
@@ -1,24 +1,81 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-performance
4
+
1
5
  AllCops:
2
- DisplayCopNames: true
6
+ TargetRubyVersion: 2.6
3
7
  Exclude:
4
- - "finapps_core.gemspec"
5
- UseCache: false
6
-
7
- # Commonly used screens these days easily fit more than 80 characters.
8
- Metrics/LineLength:
9
- Max: 120
10
-
11
- # Re-enable this when the following is resolved:
12
- # https://github.com/rubocop-hq/rubocop/issues/5953
13
- Style/AccessModifierDeclarations:
14
- Enabled: false
8
+ - "vendor/**/*"
9
+ - "bin/**/*"
10
+ CacheRootDirectory: tmp
11
+ NewCops: enable
15
12
 
13
+ Layout/SpaceAroundMethodCallOperator:
14
+ Enabled: true
15
+ Layout/EmptyLinesAroundAttributeAccessor:
16
+ Enabled: true
16
17
  Layout/SpaceInsideBlockBraces:
17
18
  # The space here provides no real gain in readability while consuming
18
19
  # horizontal space that could be used for a better parameter name.
19
20
  # Also {| differentiates better from a hash than { | does.
20
21
  SpaceBeforeBlockParameters: false
22
+ Layout/SpaceInsideHashLiteralBraces:
23
+ EnforcedStyle: no_space
24
+ Layout/DotPosition:
25
+ Description: Checks the position of the dot in multi-line method calls.
26
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
27
+ Enabled: true
28
+ EnforcedStyle: leading
29
+ SupportedStyles:
30
+ - leading
31
+ - trailing
32
+ Layout/LineLength:
33
+ Max: 110
34
+
35
+ Lint/DeprecatedOpenSSLConstant:
36
+ Enabled: true
37
+ Lint/MixedRegexpCaptureTypes:
38
+ Enabled: true
39
+ Lint/RaiseException:
40
+ Enabled: true
41
+ Lint/StructNewOverride:
42
+ Enabled: true
43
+
44
+ Metrics/ClassLength:
45
+ Exclude:
46
+ - app/controllers/orders_controller.rb
47
+ - app/models/order.rb
48
+ Metrics/BlockLength:
49
+ ExcludedMethods: ['describe', 'context']
50
+ Exclude:
51
+ - finapps_core.gemspec
52
+ - config/environments/**/**
53
+ - Guardfile
54
+ - config/routes.rb
55
+ - config/Guardfile
21
56
 
57
+ Naming/PredicateName:
58
+ Description: Check the names of predicate methods.
59
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
60
+ Enabled: true
61
+ NamePrefix:
62
+ - is_
63
+ - has_
64
+ - have_
65
+ ForbiddenPrefixes:
66
+ - is_
67
+ Exclude:
68
+ - spec/**/*
69
+
70
+ RSpec/FilePath:
71
+ Enabled: false
72
+ Gemspec/RequiredRubyVersion:
73
+ Enabled: false
74
+
75
+ Style/RedundantRegexpCharacterClass:
76
+ Enabled: true
77
+ Style/RedundantRegexpEscape:
78
+ Enabled: true
22
79
  Style/CollectionMethods:
23
80
  Description: Preferred collection methods.
24
81
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
@@ -29,73 +86,66 @@ Style/CollectionMethods:
29
86
  find: detect
30
87
  find_all: select
31
88
  reduce: inject
89
+ Style/GuardClause:
90
+ Description: Check for conditionals that can be replaced with guard clauses
91
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
92
+ Enabled: true
93
+ MinBodyLength: 1
32
94
  Style/OptionHash:
33
95
  Description: Don't use option hashes when you can use keyword arguments.
34
96
  Enabled: false
35
- Naming/PredicateName:
36
- Description: Check the names of predicate methods.
37
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
38
- Enabled: true
39
- NamePrefix:
40
- - is_
41
- - has_
42
- - have_
43
- NamePrefixBlacklist:
44
- - is_
45
- Exclude:
46
- - spec/**/*
47
- Metrics/AbcSize:
48
- Description: A calculated magnitude based on number of assignments, branches, and
49
- conditions.
50
- Enabled: false
51
- Max: 15
52
- Metrics/BlockLength:
53
- ExcludedMethods: ['describe', 'context']
54
- Metrics/ClassLength:
55
- Description: Avoid classes longer than 100 lines of code.
56
- Enabled: false
57
- CountComments: false
58
- Max: 100
59
- Metrics/ModuleLength:
60
- CountComments: false
61
- Max: 100
62
- Description: Avoid modules longer than 100 lines of code.
63
- Enabled: false
64
- Metrics/CyclomaticComplexity:
65
- Description: A complexity metric that is strongly correlated to the number of test
66
- cases needed to validate a method.
67
- Enabled: false
68
- Max: 6
69
- Metrics/MethodLength:
70
- Description: Avoid methods longer than 10 lines of code.
71
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
72
- Enabled: false
73
- CountComments: false
74
- Max: 10
75
- Metrics/ParameterLists:
76
- Description: Avoid parameter lists longer than three or four parameters.
77
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
78
- Enabled: false
79
- Max: 5
80
- CountKeywordArgs: true
81
- Metrics/PerceivedComplexity:
82
- Description: A complexity metric geared towards measuring complexity for a human
83
- reader.
97
+ Style/PercentLiteralDelimiters:
98
+ Description: Use `%`-literal delimiters consistently
99
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
84
100
  Enabled: false
85
- Max: 7
101
+ PreferredDelimiters:
102
+ "%": "()"
103
+ "%i": "()"
104
+ "%q": "()"
105
+ "%Q": "()"
106
+ "%r": "{}"
107
+ "%s": "()"
108
+ "%w": "()"
109
+ "%W": "()"
110
+ "%x": "()"
111
+ Style/SignalException:
112
+ Description: Checks for proper usage of fail and raise.
113
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
114
+ Enabled: true
115
+ EnforcedStyle: semantic
116
+ SupportedStyles:
117
+ - only_raise
118
+ - only_fail
119
+ - semantic
120
+ Style/StringLiterals:
121
+ Description: Checks if uses of quotes match the configured preference.
122
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
123
+ Enabled: true
124
+ EnforcedStyle: single_quotes
125
+ SupportedStyles:
126
+ - single_quotes
127
+ - double_quotes
128
+ Style/StringLiteralsInInterpolation:
129
+ Description: Checks if uses of quotes inside expressions in interpolated strings
130
+ match the configured preference.
131
+ Enabled: true
132
+ EnforcedStyle: single_quotes
133
+ SupportedStyles:
134
+ - single_quotes
135
+ - double_quotes
86
136
  Style/Documentation:
87
137
  Description: Document classes and non-namespace modules.
88
138
  Enabled: false
89
- Style/EmptyLiteral:
90
- Description: Prefer literals to Array.new/Hash.new/String.new.
91
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
139
+ Style/OneLineConditional:
140
+ Description: Favor the ternary operator(?:) over if/then/else/end constructs.
141
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
92
142
  Enabled: false
93
- Style/VariableInterpolation:
94
- Description: Don't interpolate global, instance and class variables directly in
95
- strings.
96
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
143
+ Style/OptionalBooleanParameter:
97
144
  Enabled: false
98
- Lint/HandleExceptions:
99
- Description: Don't suppress exception.
100
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
101
- Enabled: false
145
+
146
+ RSpec/NestedGroups:
147
+ Max: 5
148
+ RSpec/DescribeClass:
149
+ Exclude:
150
+ - spec/system/*
151
+ - spec/factories_spec.rb
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: ruby-client-core
3
+ root: ~/projects/ruby-client-core/
4
+ windows:
5
+ -
6
+ editor:
7
+ layout: main-vertical
8
+ panes:
9
+ - vim: $EDITOR
10
+ - bash:
11
+ - git pull
12
+ - git status
13
+ - bundle
14
+ - bundle outdated
15
+ -
16
+ guard:
17
+ layout: even-horizontal
18
+ panes:
19
+ - guard:
20
+ - bundle exec guard
@@ -1,17 +1,16 @@
1
- sudo: false
2
1
  language: ruby
2
+ os: ["linux"]
3
+ dist: "xenial"
4
+
3
5
  cache:
4
6
  bundler: true
5
7
 
6
8
  rvm:
7
- - 2.5
8
9
  - 2.6
9
- - ruby-head
10
10
 
11
11
  before_install:
12
12
  - "echo 'gem: --no-document' > ~/.gemrc"
13
- - gem update --system
14
- - gem install bundler -v "~>2.0"
13
+ - gem install bundler --force --quiet
15
14
 
16
15
  script:
17
16
  - bundle exec rspec
@@ -23,4 +22,4 @@ addons:
23
22
  code_climate:
24
23
  repo_token: 5a8d194cbc23aa4c171e3478e3b6bbea9dd96041071380ec25bf80c07770b39a
25
24
  after_success:
26
- - bundle exec codeclimate-test-reporter
25
+ - bundle exec codeclimate-test-reporter