tidas 0.1.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 +7 -0
- data/.document +3 -0
- data/.gitignore +10 -0
- data/.rspec +1 -0
- data/.yardopts +1 -0
- data/ChangeLog.md +4 -0
- data/Gemfile +13 -0
- data/LICENSE.txt +21 -0
- data/README.md +223 -0
- data/Rakefile +25 -0
- data/lib/tidas/client.rb +139 -0
- data/lib/tidas/configuration.rb +67 -0
- data/lib/tidas/error_result.rb +39 -0
- data/lib/tidas/exceptions.rb +13 -0
- data/lib/tidas/identity.rb +100 -0
- data/lib/tidas/successful_result.rb +17 -0
- data/lib/tidas/utilities/response_packager.rb +36 -0
- data/lib/tidas/utilities/unpacker.rb +93 -0
- data/lib/tidas/utilities.rb +14 -0
- data/lib/tidas/version.rb +4 -0
- data/lib/tidas.rb +20 -0
- data/spec/client_spec.rb +198 -0
- data/spec/configuration_spec.rb +100 -0
- data/spec/error_result_spec.rb +25 -0
- data/spec/identity_spec.rb +119 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/successful_result_spec.rb +12 -0
- data/spec/tidas_spec.rb +8 -0
- data/spec/utilities/response_packager_spec.rb +92 -0
- data/tidas.gemspec +39 -0
- metadata +165 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'tidas'
|
3
|
+
|
4
|
+
describe Tidas::Utilities::ResponsePackager do
|
5
|
+
let(:subject) { Tidas::Utilities::ResponsePackager }
|
6
|
+
let(:data) { 'valid data' }
|
7
|
+
let(:returned_data) { 'valid returned_data' }
|
8
|
+
describe "package_response(response, data = nil)" do
|
9
|
+
let(:response) { double() }
|
10
|
+
|
11
|
+
describe "if the response is a 500 or 404" do
|
12
|
+
it "should return a Tidas::ServerError object when given a 500" do
|
13
|
+
expect(response).to receive(:status) {500}
|
14
|
+
resp = subject.package_response(response)
|
15
|
+
expect(resp).to be == Tidas::InvalidResponse
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return a Tidas::ServerError object when given a 404" do
|
19
|
+
expect(response).to receive(:status) {404}
|
20
|
+
resp = subject.package_response(response)
|
21
|
+
expect(resp).to be == Tidas::InvalidResponse
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "if the server returns a non-json/malformed json body" do
|
26
|
+
it "should return a Tidas::ServerError object" do
|
27
|
+
expect(response).to receive(:status) {200}
|
28
|
+
expect(response).to receive(:body) {"dodododododo"}
|
29
|
+
resp = subject.package_response(response)
|
30
|
+
expect(resp).to be == Tidas::InvalidResponse
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "if we successfully parse json from the server" do
|
35
|
+
let(:body) { {valid_json: 'totally'}.to_json}
|
36
|
+
it "should call handle_result to interpret and package the json" do
|
37
|
+
expect(response).to receive(:status) {200}
|
38
|
+
expect(response).to receive(:body) {body}
|
39
|
+
expect(subject).to receive(:handle_result).with(JSON.parse(body, symbolize_names: true), nil)
|
40
|
+
subject.package_response(response)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "even with data" do
|
44
|
+
expect(response).to receive(:status) {200}
|
45
|
+
expect(response).to receive(:body) {body}
|
46
|
+
expect(subject).to receive(:handle_result).with(JSON.parse(body, symbolize_names: true), data)
|
47
|
+
subject.package_response(response, data)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "handle_result(body)" do
|
53
|
+
describe "when returned json type is ':error_result'" do
|
54
|
+
let(:body) { {error_result:{errors:["yeah, idk - it just didn't work"]}} }
|
55
|
+
it "should return a Tidas::ErrorResult object explaining what went wrong" do
|
56
|
+
resp = subject.handle_result(body)
|
57
|
+
expect(resp.class).to be == Tidas::ErrorResult
|
58
|
+
expect(resp.errors).to be == body[:error_result][:errors]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when returned json type is ':successful_result'" do
|
63
|
+
let(:body) { {successful_result:{message:'worked!'}} }
|
64
|
+
describe "if there's no returned data from the server (like identities for packaging)" do
|
65
|
+
it "should give a successful result and message" do
|
66
|
+
resp = subject.handle_result(body)
|
67
|
+
expect(resp.class).to be == Tidas::SuccessfulResult
|
68
|
+
expect(resp.message).to be == body[:successful_result][:message]
|
69
|
+
end
|
70
|
+
|
71
|
+
it "even when we provide data (like for verification)" do
|
72
|
+
body[:data] = data
|
73
|
+
resp = subject.handle_result(body, data)
|
74
|
+
expect(resp.class).to be == Tidas::SuccessfulResult
|
75
|
+
expect(resp.message).to be == body[:successful_result][:message]
|
76
|
+
expect(resp.data).to be == data
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "when there is returned data from the server (like identities for packaging)" do
|
81
|
+
it "should give a successful result and message, and fill that data into the data field" do
|
82
|
+
body[:successful_result][:returned_data] = returned_data
|
83
|
+
resp = subject.handle_result(body)
|
84
|
+
expect(resp.class).to be == Tidas::SuccessfulResult
|
85
|
+
expect(resp.message).to be == body[:successful_result][:message]
|
86
|
+
expect(resp.data).to be == returned_data
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/tidas.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'tidas/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |gem|
|
8
|
+
gem.name = "tidas"
|
9
|
+
gem.version = Tidas::VERSION
|
10
|
+
gem.summary = %q{Rack middleware for tidas integrations}
|
11
|
+
gem.description = %q{Rack middleware for tidas integrations}
|
12
|
+
gem.license = "MIT"
|
13
|
+
gem.authors = ["Nick Esposito"]
|
14
|
+
gem.email = "nick.esposito@trailofbits.com"
|
15
|
+
gem.homepage = "https://github.com/trailofbits/tidas-ruby#readme"
|
16
|
+
|
17
|
+
gem.files = `git ls-files`.split($/)
|
18
|
+
|
19
|
+
`git submodule --quiet foreach --recursive pwd`.split($/).each do |submodule|
|
20
|
+
submodule.sub!("#{Dir.pwd}/",'')
|
21
|
+
|
22
|
+
Dir.chdir(submodule) do
|
23
|
+
`git ls-files`.split($/).map do |subpath|
|
24
|
+
gem.files << File.join(submodule,subpath)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
29
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
30
|
+
gem.require_paths = ['lib']
|
31
|
+
|
32
|
+
gem.add_dependency 'faraday', '~> 0.9'
|
33
|
+
|
34
|
+
gem.add_development_dependency 'bundler', '~> 1.10'
|
35
|
+
gem.add_development_dependency 'rake', '~> 10.0'
|
36
|
+
gem.add_development_dependency 'rspec', '~> 3.0'
|
37
|
+
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
38
|
+
gem.add_development_dependency 'yard', '~> 0.8'
|
39
|
+
end
|
metadata
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tidas
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nick Esposito
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.9'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.9'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.10'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubygems-tasks
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: yard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.8'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.8'
|
97
|
+
description: Rack middleware for tidas integrations
|
98
|
+
email: nick.esposito@trailofbits.com
|
99
|
+
executables: []
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- ".document"
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".yardopts"
|
107
|
+
- ChangeLog.md
|
108
|
+
- Gemfile
|
109
|
+
- LICENSE.txt
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
112
|
+
- lib/tidas.rb
|
113
|
+
- lib/tidas/client.rb
|
114
|
+
- lib/tidas/configuration.rb
|
115
|
+
- lib/tidas/error_result.rb
|
116
|
+
- lib/tidas/exceptions.rb
|
117
|
+
- lib/tidas/identity.rb
|
118
|
+
- lib/tidas/successful_result.rb
|
119
|
+
- lib/tidas/utilities.rb
|
120
|
+
- lib/tidas/utilities/response_packager.rb
|
121
|
+
- lib/tidas/utilities/unpacker.rb
|
122
|
+
- lib/tidas/version.rb
|
123
|
+
- spec/client_spec.rb
|
124
|
+
- spec/configuration_spec.rb
|
125
|
+
- spec/error_result_spec.rb
|
126
|
+
- spec/identity_spec.rb
|
127
|
+
- spec/spec_helper.rb
|
128
|
+
- spec/successful_result_spec.rb
|
129
|
+
- spec/tidas_spec.rb
|
130
|
+
- spec/utilities/response_packager_spec.rb
|
131
|
+
- tidas.gemspec
|
132
|
+
homepage: https://github.com/trailofbits/tidas-ruby#readme
|
133
|
+
licenses:
|
134
|
+
- MIT
|
135
|
+
metadata: {}
|
136
|
+
post_install_message:
|
137
|
+
rdoc_options: []
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - ">="
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
requirements: []
|
151
|
+
rubyforge_project:
|
152
|
+
rubygems_version: 2.4.8
|
153
|
+
signing_key:
|
154
|
+
specification_version: 4
|
155
|
+
summary: Rack middleware for tidas integrations
|
156
|
+
test_files:
|
157
|
+
- spec/client_spec.rb
|
158
|
+
- spec/configuration_spec.rb
|
159
|
+
- spec/error_result_spec.rb
|
160
|
+
- spec/identity_spec.rb
|
161
|
+
- spec/spec_helper.rb
|
162
|
+
- spec/successful_result_spec.rb
|
163
|
+
- spec/tidas_spec.rb
|
164
|
+
- spec/utilities/response_packager_spec.rb
|
165
|
+
has_rdoc:
|