dock_test 0.2.1 → 0.3.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: 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