dock_test 0.2.1 → 0.3.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: 07ddc86af56a004e10b1bd0109b26fe2c01dba22
4
- data.tar.gz: c526d9a4cbe341772eadc9f09e3c972dd7c35e73
3
+ metadata.gz: 9fd7c52a4f3ff1192ca1f047e69de6ab688d7fb9
4
+ data.tar.gz: b17880837bbcd72a529964142e80cdf108f105aa
5
5
  SHA512:
6
- metadata.gz: 17802756438b021eedfb3d98c8fcef9f1dba5ee052f8a4d12056d22a0e64961e94941ca1634934cefe15b1a6af1aade7a440b111b8cf86863202ad646f5c9cd4
7
- data.tar.gz: 452cb054a313c48fd314c9a60a44ac1d662bd63c2a61bafda6d26ecb53a42a7b0c529b592acd42bc9929035b2a7cff2c2c20afd4ad47c23b1feee0469ece4210
6
+ metadata.gz: 1a8514b2ee554a0cdd1b2712fafbc9b207abeceaa8c0478ff7fd190d872c029ab6f4d3cfb071b9defc8a2eae71d56d90eee34bb506014f1a5b83d6e875597c22
7
+ data.tar.gz: 8c8708433f41f3b1d0723831b06ee3fef458da1d24efea1e397897c46210fe369a9fe48c66f4d3e7995ad00366dc9c2fba2721b7d1844be728e00384a2998f9d
data/Gemfile CHANGED
@@ -4,6 +4,6 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem 'minitest'
7
- gem 'guard-jruby-minitest', '0.1.6'
7
+ gem 'guard-jruby-minitest', '0.1.8'
8
8
  gem 'terminal-notifier-guard'
9
9
  gem 'pry'
data/config.ru CHANGED
@@ -1,16 +1,19 @@
1
1
  require 'rack'
2
2
  require 'json'
3
3
  app = Proc.new do |env|
4
+ if env['HTTP_CONTENT_TYPE'] == 'application/json'
5
+ request_json = {
6
+ verb: env["REQUEST_METHOD"],
7
+ uri: env["REQUEST_URI"],
8
+ body: env["rack.input"].read,
9
+ protcol: env["SERVER_PROTOCOL"],
10
+ headers: Hash[env.select {|k, v| k.start_with?("HTTP_") }.map {|k, v| [k[5..-1], v] }]
11
+ }.to_json
4
12
 
5
- request_json = {
6
- verb: env["REQUEST_METHOD"],
7
- uri: env["REQUEST_URI"],
8
- body: env["rack.input"].read,
9
- protcol: env["SERVER_PROTOCOL"],
10
- headers: Hash[env.select {|k, v| k.start_with?("HTTP_") }.map {|k, v| [k[5..-1], v] }]
11
- }.to_json
12
-
13
- [200, {'Content-Type' => "application/json", 'Content-Length' => request_json.length.to_s}, [request_json]]
13
+ [200, {'Content-Type' => "application/json", 'Content-Length' => request_json.length.to_s}, [request_json]]
14
+ else
15
+ [200, {'Content-Type' => "application/xml"}, ['<foo><bar>baz</bar></foo>']]
16
+ end
14
17
  end
15
18
 
16
19
  run app
data/dock_test.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency 'multi_json'
21
21
  spec.add_dependency 'rack'
22
22
  spec.add_dependency 'json-schema'
23
+ spec.add_dependency 'nokogiri'
23
24
  spec.add_dependency 'oauth'
24
25
  spec.add_development_dependency "bundler", "~> 1.6"
25
26
  spec.add_development_dependency "rake"
@@ -21,4 +21,11 @@ module Minitest::Assertions
21
21
  schema = File.open(schema_path).read
22
22
  assert JSON::Validator.validate(schema, last_response.body), "The actual response does not match the schema defined in #{schema_path}"
23
23
  end
24
+
25
+ def assert_response_xml_schema(schema_path)
26
+ schema = ::Nokogiri::XML::Schema(File.read(schema_path))
27
+ document = ::Nokogiri::XML(last_response.body)
28
+ assert schema.valid?(document), "The actual response does not match the schema defined in #{schema_path}"
29
+ end
30
+
24
31
  end
@@ -66,10 +66,6 @@ module DockTest
66
66
  private meth_name
67
67
  end
68
68
 
69
- def env
70
- ENV['DOCK_ENV']
71
- end
72
-
73
69
  private
74
70
 
75
71
  def verb_has_side_effects?(verb)
@@ -1,3 +1,3 @@
1
1
  module DockTest
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/dock_test.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'multi_json'
2
+ require 'nokogiri'
2
3
  require 'json-schema'
3
4
  require 'dock_test/version'
4
5
  require 'dock_test/methods'
@@ -0,0 +1,9 @@
1
+ <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
2
+ <xs:element name="foo">
3
+ <xs:complexType>
4
+ <xs:sequence>
5
+ <xs:element type="xs:string" name="bar" minOccurs="1"/>
6
+ </xs:sequence>
7
+ </xs:complexType>
8
+ </xs:element>
9
+ </xs:schema>
@@ -30,4 +30,8 @@ class TestAssertions < Minitest::Test
30
30
  assert_response_json_schema 'schemas/response.schema.json'
31
31
  end
32
32
 
33
+ def test_assert_response_xml_schema_method
34
+ get '/path?foo=bar', {a: :b}, {'CONTENT_TYPE' => 'application/xml'}
35
+ assert_response_xml_schema 'schemas/response.schema.xsd'
36
+ end
33
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dock_test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Xu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-18 00:00:00.000000000 Z
11
+ date: 2014-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -52,6 +52,20 @@ dependencies:
52
52
  version: '0'
53
53
  prerelease: false
54
54
  type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ prerelease: false
68
+ type: :runtime
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: oauth
57
71
  version_requirements: !ruby/object:Gem::Requirement
@@ -116,6 +130,7 @@ files:
116
130
  - lib/dock_test/methods.rb
117
131
  - lib/dock_test/version.rb
118
132
  - schemas/response.schema.json
133
+ - schemas/response.schema.xsd
119
134
  - test/dock_test/test_assertions.rb
120
135
  - test/dock_test/test_methods.rb
121
136
  - test/test_helper.rb