washout_builder 0.11.5 → 0.11.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTdiOWI2ZTgyNGVlMWViZDQ2ZjZmOTM5YjA4OTc1ZWI3ZjEzNzliYw==
4
+ MmUwZTg3Y2U4NGZjM2E2MTMzZmM4ODZkNzRhOGVkZWQzZDczZGIxNw==
5
5
  data.tar.gz: !binary |-
6
- MmQxYzc4NTdlN2RmMzJhNzAwODEzZmQ1ZGNhZjQ2NGQ1YjE2M2JmNg==
6
+ MDg0MTNkNTg4ZjdhODI4ZDVkNTFiMjI3NWQ3ZTQyODQ4NzAxZmQyMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTcwNDgwODI2NTc5YzJkNWJjZjg2ZDc4N2Q2ZmZlZWI0Njc5NzVmOGY5YzU1
10
- NDI2MThiODMzMmRiZjRmYTE5NmEwNTM4YjEwNGE1NzhjYThkYzNlZGI5MWVk
11
- YzI1YTZkMGIwOWMzMTA4ZDY2MWRlNjY3NDllMzQxYTAyNTc4ZGU=
9
+ Nzg2ZGFhOTAxMGMxYTZmN2IyNzQ4NDRkMDhkZTlmNmNlMDAwOTI0ZmY4ZDJl
10
+ MmUyMDg1MGRmMmQ4NzJmNTA2NDNiNzFkNmJjZjRjYTQxYzZjNDM1MTM4NmU1
11
+ NDRhN2RlNjAxODkwNDFhNDY4YWMwZjU3YTI2ZGJlYjVlNTM1ZmE=
12
12
  data.tar.gz: !binary |-
13
- ZWM5ODFiZTRjNWQwOWFjZjYyOTQyZjgwNTVjMjEwZDRhZDI3NDYzZDg4MmFk
14
- ZjhjNTBkMzVhMjM2ODQwODIyYWJkYjI4NjYyMTI5MjA1OGUzMjdjOTQ0N2Ni
15
- ZmQwNjE4YTFmODU2MGM1OGY1M2YyNTM1MzEwMjQ4YmM4YzIyN2I=
13
+ NDBjMGMxMjdiZGYwMzQ1MDg5ZDU5OWY0NzM4NzBhOGFhYmViYWNhMGMxYWVi
14
+ NjlhNzdiMTViMTZjZDlmMmVkZGVkZTQ2ZjVjMzI2OWI1NWQ2ZTExNzgyZDFj
15
+ MjAzOTYwZmU1ZDJjNzYzYWFiMzBkYjE0MDg3NjQ5NWU4MzU1ZjY=
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: UaUbPHZDlrwJTkU33FqFBf4FaMU4vhBwV
@@ -7,4 +7,7 @@ rvm:
7
7
  - jruby-19mode
8
8
  - 2.0.0
9
9
  env:
10
- - RAILS_ENV=test RACK_ENV=test
10
+ - RAILS_ENV=test RACK_ENV=test
11
+ addons:
12
+ code_climate:
13
+ repo_token: 914d2ef5cd8835295d483ff2143e58ed06bb20b25aca3e451be29f8963f76f4
data/Appraisals CHANGED
@@ -2,14 +2,18 @@ appraise "rails-3.2.8" do
2
2
  gem "rails", "3.2.8"
3
3
  end
4
4
 
5
- appraise "rails-3.1.3" do
6
- gem "rails", "3.1.3"
7
- end
8
-
9
5
  appraise "rails-3.2.12" do
10
6
  gem "rails", "3.2.12"
11
7
  end
12
8
 
13
9
  appraise "rails-4.0.0" do
14
10
  gem "rails", "4.0.0"
11
+ end
12
+
13
+ appraise "rails-4.0.2" do
14
+ gem "rails", "4.0.2"
15
+ end
16
+
17
+ appraise "rails-4.1.1" do
18
+ gem "rails", "4.1.1"
15
19
  end
data/Gemfile CHANGED
@@ -6,8 +6,8 @@ gemspec
6
6
  gem 'wash_out', git: 'git://github.com/inossidabile/wash_out.git'
7
7
  gem 'virtus'
8
8
  gem 'wasabi'
9
- gem 'savon', '>= 2.0.0'
10
- gem 'httpi', :git => 'git://github.com/savonrb/httpi.git'
9
+ gem 'savon'
10
+ gem 'httpi'
11
11
 
12
12
  gem 'rspec-rails'
13
13
  gem 'guard'
@@ -22,10 +22,17 @@ gem 'simplecov-summary'
22
22
  gem 'nori'
23
23
  gem 'nokogiri'
24
24
 
25
- gem 'capybara', '1.1.4'
26
- gem 'selenium-webdriver', '~> 2.37.0'
25
+ gem 'capybara'
26
+ gem 'selenium-webdriver'
27
27
  gem 'headless'
28
28
  gem 'capybara-firebug'
29
- gem 'mocha', '~> 0.13.3', :require => false
29
+ gem 'mocha', ">=1.1.0", :require => false
30
+ #gem "mocha", "~> 0.12.8", :require => false
30
31
  gem 'webmock'
32
+ gem 'coveralls', require: false
33
+ gem "codeclimate-test-reporter", group: :test, require: nil
34
+
35
+ unless ENV["TRAVIS"]
36
+ gem 'rvm-tester'
37
+ end
31
38
 
@@ -1,5 +1,9 @@
1
- = washout_builder {<img src="https://travis-ci.org/bogdanRada/washout_builder.png?branch=master,develop" />}[https://travis-ci.org/bogdanRada/washout_builder] {<img src="https://badge.fury.io/rb/washout_builder.png" alt="Gem Version" />}[http://badge.fury.io/rb/washout_builder]
2
-
1
+ = washout_builder {<img src="https://badge.fury.io/rb/washout_builder.png" alt="Gem Version" />}[http://badge.fury.io/rb/washout_builder]
2
+ {<img src="https://travis-ci.org/bogdanRada/washout_builder.png?branch=master,develop" />}[https://travis-ci.org/bogdanRada/washout_builder]
3
+ {<img src="https://www.versioneye.com/user/projects/52fc7297ec1375346600007d/badge.png" alt="Dependency Status" />}[https://www.versioneye.com/user/projects/52fc7297ec1375346600007d]{<img src="https://www.versioneye.com/user/projects/52fc7297ec1375346600007d/badge.png" alt="Dependency Status" />}[https://www.versioneye.com/user/projects/52fc7297ec1375346600007d]
4
+ {<img src="https://coveralls.io/repos/bogdanRada/washout_builder/badge.png" alt="Coverage Status" />}[https://coveralls.io/r/bogdanRada/washout_builder]
5
+ {<img src="https://reposs.herokuapp.com/?path=bogdanRada/washout_builder" alt="Repo Size"/>}[https://github.com/bogdanRada/washout_builder]
6
+ {<img src="https://gem-download-badge.herokuapp.com/?gem=washout_builder&type=total" alt="Version Downloads"/>}[https://rubygems.org/gems/washout_builder]
3
7
  = Overview
4
8
  WashOutBuilder is a Soap Service Documentation generator (extends WashOut https://github.com/inossidabile/wash_out/)
5
9
 
@@ -67,9 +71,9 @@ In the following file +config/routes.rb+ you can put this configuration
67
71
  WashOutSample::Application.routes.draw do
68
72
  wash_out :rumbas
69
73
  wash_out :my_other_service
70
- end
71
74
 
72
- mount WashoutBuilder::Engine => "/washout"
75
+ mount WashoutBuilder::Engine => "/washout"
76
+ end
73
77
 
74
78
  You can access the url +/washout+ and you will see a list with available services ( in our case there are only two : The RumbasController and MyOtherServiceController) with links to their documentation and where you can find the WSDL.
75
79
 
data/Rakefile CHANGED
@@ -2,9 +2,11 @@ require 'bundler/setup'
2
2
  require 'bundler/gem_tasks'
3
3
  require 'appraisal'
4
4
  require 'rspec/core/rake_task'
5
+ require 'coveralls/rake/task'
6
+ Coveralls::RakeTask.new
5
7
 
6
8
  RSpec::Core::RakeTask.new(:spec) do |spec|
7
- # spec.rspec_opts = ['--backtrace ']
9
+ # spec.rspec_opts = ['--backtrace ']
8
10
  end
9
11
 
10
12
  #desc "Prepare dummy application"
@@ -17,12 +19,28 @@ end
17
19
  # Rake::Task["db:test:prepare"].invoke
18
20
  #end
19
21
 
22
+ unless ENV["TRAVIS"]
23
+ require 'rvm-tester'
24
+ RVM::Tester::TesterTask.new(:suite) do |t|
25
+ t.rubies = %w(1.9.3 2.0.0 2.1.0) # which versions to test (required!)
26
+ t.bundle_install = true # updates Gemfile.lock, default is true
27
+ t.use_travis = true # looks for Rubies in .travis.yml (on by default)
28
+ t.command = "bundle exec rake" # runs plain "rake" by default
29
+ t.env = {"VERBOSE" => "1", "RAILS_ENV"=>"test", "RACK_ENV"=> "test" } # set any ENV vars
30
+ t.num_workers = 5 # defaults to 3
31
+ t.verbose = true # shows more output, off by default
32
+ end
33
+ end
20
34
 
21
35
 
22
36
  desc "Default: run the unit tests."
23
- task :default => [ :all]
37
+ task :default => [:all]
24
38
 
25
39
  desc 'Test the plugin under all supported Rails versions.'
26
- task :all => ["appraisal:install"] do |t|
27
- exec('rake appraisal spec')
40
+ task :all do |t|
41
+ if ENV["TRAVIS"]
42
+ exec(' bundle exec appraisal install && bundle exec rake appraisal spec && bundle exec rake coveralls:push')
43
+ else
44
+ exec(' bundle exec appraisal install && bundle exec rake appraisal spec')
45
+ end
28
46
  end
@@ -1,34 +1,77 @@
1
+ require_relative "../../../lib/washout_builder/document/generator"
1
2
  class WashoutBuilder::WashoutBuilderController < ActionController::Base
2
3
  protect_from_forgery
3
4
 
4
5
  def all
5
- # get a list of unique controller names
6
- controllers = Rails.application.routes.routes.map do |route|
7
- if route.defaults[:action] == "_generate_doc"
8
- {:class => "#{route.defaults[:controller]}_controller".camelize.constantize, :name => route.defaults[:controller] }
9
- end
10
- end.uniq.compact
11
-
12
- @services = []
13
- unless controllers.blank?
14
- controllers.map do |hash|
15
- namespace = hash[:class].soap_config.namespace
16
- @services << {
17
- 'service_name' => hash[:class].to_s.underscore.gsub("_controller", "").camelize ,
18
- 'namespace' => namespace,
19
- 'endpoint' => namespace.gsub("/wsdl", "/action"),
20
- 'documentation_url' => "#{request.protocol}#{request.host_with_port}/#{hash[:name]}/doc",
21
- }
22
- end
6
+ route = params[:name].present? ? controller_is_a_service?(params[:name]) : nil
7
+ if route.present?
8
+ @document = initialize_service_generator(route)
9
+ render :template => "wash_with_html/doc", :layout => false,
10
+ :content_type => 'text/html'
11
+ else
12
+ all_services
23
13
  end
24
-
25
-
14
+ end
15
+
16
+
17
+ private
18
+
19
+
20
+ def initialize_service_generator(route)
21
+ controller_class_name = controller_class(route.defaults[:controller])
22
+ WashoutBuilder::Document::Generator.new(
23
+ :config => controller_class_name.soap_config,
24
+ :service_class => controller_class_name,
25
+ :soap_actions => controller_class_name.soap_actions
26
+ )
27
+ end
28
+
29
+
30
+ def all_services
31
+ @map_controllers = map_controllers
32
+ @services = @map_controllers.blank? ? [] : @map_controllers.map do |controller_name|
33
+ {
34
+ 'service_name' => controller_name.camelize ,
35
+ 'namespace' => service_namespace(controller_name),
36
+ 'endpoint' => service_endpoint(controller_name),
37
+ 'documentation_url' => service_documentation_url(controller_name),
38
+ }
39
+ end
40
+
26
41
  render :template => "wash_with_html/all_services", :layout => false,
27
42
  :content_type => 'text/html'
28
-
43
+ end
44
+
45
+ def all_controllers
46
+ Rails.application.routes.routes
47
+ end
48
+
49
+ def map_controllers
50
+ all_controllers.map do |route|
51
+ route.defaults[:controller] if route.defaults[:action] == "_generate_doc"
52
+ end.uniq.compact
53
+ end
54
+
55
+ def controller_is_a_service?(controller)
56
+ route = all_controllers.detect do |route|
57
+ route.defaults[:controller].try(:camelize) == controller.camelize && route.defaults[:action] == "_generate_doc"
58
+ end
29
59
  end
30
60
 
31
-
32
-
61
+ def controller_class(controller)
62
+ "#{controller}_controller".camelize.constantize
63
+ end
64
+
65
+ def service_namespace(controller_name)
66
+ controller_class(controller_name).soap_config.namespace
67
+ end
68
+
69
+ def service_endpoint(controller_name)
70
+ service_namespace(controller_name).gsub("/wsdl", "/action")
71
+ end
72
+
73
+ def service_documentation_url(controller_name)
74
+ "#{request.protocol}#{request.host_with_port}/#{controller_name}/doc"
75
+ end
33
76
 
34
77
  end
@@ -1,5 +1,4 @@
1
1
  WashoutBuilder::Engine.routes.draw do
2
2
  root :to =>"washout_builder#all"
3
-
4
-
3
+ match '*name' => "washout_builder#all", :as => :washout_builder_service, :via => :get
5
4
  end
@@ -5,9 +5,8 @@ module WashoutBuilder
5
5
 
6
6
 
7
7
  def get_complex_class_name(defined = [])
8
- complex_class = struct? ? basic_type : nil
9
- complex_class = complex_class.include?(".") ? complex_class.gsub(".","/").camelize : complex_class.classify unless complex_class.nil?
10
-
8
+ complex_class = struct? ? basic_type.gsub(".","/").camelize : nil
9
+
11
10
  unless complex_class.nil? || defined.blank?
12
11
 
13
12
  complex_obj_found = defined.detect {|hash| hash[:class] == complex_class}
@@ -17,9 +16,15 @@ module WashoutBuilder
17
16
  end
18
17
  end
19
18
 
20
- return complex_class
19
+ complex_class
20
+ end
21
+
22
+
23
+ def complex_type_ancestors(config, complex_class, defined)
24
+ classified? ? get_class_ancestors(config, complex_class, defined) : nil
21
25
  end
22
26
 
27
+
23
28
  def get_param_structure
24
29
  map.inject({}) {|h,element| h[element.name] = element.type;h }
25
30
  end
@@ -66,31 +71,46 @@ module WashoutBuilder
66
71
  end
67
72
 
68
73
 
74
+ def complex_type_descendants(config,defined)
75
+ if struct?
76
+ c_names = []
77
+ map.each { |obj| c_names.concat(obj.get_nested_complex_types(config, defined)) }
78
+ defined.concat(c_names)
79
+ end
80
+ defined
81
+ end
82
+
69
83
 
70
84
  def get_nested_complex_types(config,defined)
71
85
  defined = [] if defined.blank?
72
86
  complex_class = get_complex_class_name( defined)
73
87
  fix_descendant_wash_out_type( config, complex_class)
74
- defined << {:class =>complex_class, :obj => self, :ancestors => classified? ? get_class_ancestors(config, complex_class, defined) : nil } unless complex_class.nil?
75
- if struct?
76
- c_names = []
77
- map.each { |obj| c_names.concat(obj.get_nested_complex_types(config, defined)) }
78
- defined.concat(c_names)
88
+ unless complex_class.nil?
89
+ defined << complex_type_hash(complex_class, self, complex_type_ancestors(config, complex_class, defined))
79
90
  end
91
+ defined = complex_type_descendants(config, defined)
80
92
  defined.sort_by { |hash| hash[:class].to_s.downcase }.uniq unless defined.blank?
81
93
  end
82
94
 
83
95
 
96
+ def ancestor_structure(ancestors)
97
+ { ancestors[0].to_s.downcase => ancestors[0].wash_out_param_map }
98
+ end
99
+
100
+ def complex_type_hash(class_name, object, ancestors)
101
+ {:class =>class_name, :obj =>object , :ancestors => ancestors }
102
+ end
103
+
104
+
84
105
  def get_class_ancestors( config, class_name, defined)
85
106
  bool_the_same = false
86
107
  ancestors = get_ancestors(class_name)
87
108
  unless ancestors.blank?
88
- ancestor_structure = { ancestors[0].to_s.downcase => ancestors[0].wash_out_param_map }
89
- ancestor_object = WashOut::Param.parse_def(config,ancestor_structure)[0]
109
+ ancestor_object = WashOut::Param.parse_def(config,ancestor_structure(ancestors))[0]
90
110
  bool_the_same = same_structure_as_ancestor?( ancestor_object)
91
111
  unless bool_the_same
92
112
  top_ancestors = get_class_ancestors(config, ancestors[0], defined)
93
- defined << {:class =>ancestors[0], :obj =>ancestor_object , :ancestors => top_ancestors }
113
+ defined << complex_type_hash(ancestors[0],ancestor_object , top_ancestors)
94
114
  end
95
115
  ancestors unless bool_the_same
96
116
  end
@@ -34,12 +34,17 @@ module WashoutBuilder
34
34
  soap_actions.map { |operation, formats| operation }
35
35
  end
36
36
 
37
+ def sort_fault_types(types)
38
+ types.sort_by { |hash| hash[:fault].to_s.downcase }.uniq {|hash| hash[:fault] } unless types.blank?
39
+ end
37
40
 
38
- def input_types
41
+
42
+ def argument_types(type)
43
+ format_type = (type == "input") ? "builder_in" : "builder_out"
39
44
  types = []
40
45
  unless soap_actions.blank?
41
46
  soap_actions.each do |operation, formats|
42
- (formats[:builder_in]).each do |p|
47
+ (formats[format_type.to_sym]).each do |p|
43
48
  types << p
44
49
  end
45
50
  end
@@ -47,16 +52,12 @@ module WashoutBuilder
47
52
  types
48
53
  end
49
54
 
55
+ def input_types
56
+ argument_types("input")
57
+ end
58
+
50
59
  def output_types
51
- types = []
52
- unless soap_actions.blank?
53
- soap_actions.each do |operation, formats|
54
- (formats[:builder_out]).each do |p|
55
- types << p
56
- end
57
- end
58
- end
59
- types
60
+ argument_types("output")
60
61
  end
61
62
 
62
63
  def get_soap_action_names
@@ -73,20 +74,30 @@ module WashoutBuilder
73
74
  end
74
75
 
75
76
 
76
- def fault_types
77
- defined = soap_actions.select{|operation, formats| !formats[:raises].blank? }
78
- defined = defined.collect {|operation, formats| formats[:raises].is_a?(Array) ? formats[:raises] : [formats[:raises]] }.flatten.select { |x| (x.is_a?(Class) && x.ancestors.detect{ |fault| WashoutBuilder::Type.get_fault_classes.include?(fault) }.present?) || (x.is_a?(Class) && WashoutBuilder::Type.get_fault_classes.include?(x)) } unless defined.blank?
79
- fault_types = []
80
- if defined.blank?
81
- defined = [WashoutBuilder::Type.get_fault_classes.first]
77
+ def actions_with_exceptions
78
+ soap_actions.select{|operation, formats| !formats[:raises].blank? }
79
+ end
80
+
81
+ def exceptions_raised
82
+ actions = actions_with_exceptions
83
+ faults= actions.collect {|operation, formats| formats[:raises].is_a?(Array) ? formats[:raises] : [formats[:raises]] }.flatten.select { |x| (x.is_a?(Class) && x.ancestors.detect{ |fault| WashoutBuilder::Type.get_fault_classes.include?(fault) }.present?) || (x.is_a?(Class) && WashoutBuilder::Type.get_fault_classes.include?(x)) } unless actions.blank?
84
+ if faults.blank?
85
+ faults = [WashoutBuilder::Type.get_fault_classes.first]
82
86
  else
83
- defined << WashoutBuilder::Type.get_fault_classes.first
87
+ faults << WashoutBuilder::Type.get_fault_classes.first
84
88
  end
89
+ faults
90
+ end
91
+
92
+
93
+ def fault_types
94
+ defined = exceptions_raised
95
+ fault_types = []
85
96
  defined.each{ |exception_class| exception_class.get_fault_class_ancestors( fault_types, true)} unless defined.blank?
86
97
  complex_types = extract_nested_complex_types_from_exceptions(fault_types)
87
98
  complex_types.delete_if{ |hash| fault_types << hash if (hash[:fault].is_a?(Class) && hash[:fault].ancestors.detect{ |fault| WashoutBuilder::Type.get_fault_classes.include?(fault) }.present?) || (hash[:fault].is_a?(Class) && WashoutBuilder::Type.get_fault_classes.include?(hash[:fault])) } unless complex_types.blank?
88
- fault_types = fault_types.sort_by { |hash| hash[:fault].to_s.downcase }.uniq {|hash| hash[:fault] } unless fault_types.blank?
89
- complex_types = complex_types.sort_by { |hash| hash[:fault].to_s.downcase }.uniq {|hash| hash[:fault] } unless complex_types.blank?
99
+ fault_types = sort_fault_types(fault_types)
100
+ complex_types = sort_fault_types(complex_types)
90
101
  [fault_types, complex_types]
91
102
  end
92
103
 
@@ -5,30 +5,47 @@ module WashoutBuilder
5
5
 
6
6
  def get_fault_class_ancestors( defined, debug = false)
7
7
  bool_the_same = false
8
- ancestors = (self.ancestors - self.included_modules).delete_if{ |x| x.to_s.downcase == self.to_s.downcase || x.to_s == "ActiveRecord::Base" || x.to_s == "Object" || x.to_s =="BasicObject" || x.to_s == "Exception" }
8
+ ancestors = fault_ancestors
9
9
  if ancestors.blank?
10
- defined << {:fault => self,:structure =>get_virtus_model_structure ,:ancestors => [] }
10
+ defined << fault_ancestor_hash(get_virtus_model_structure, [])
11
11
  else
12
- fault_structure = remove_fault_type_inheritable_elements( ancestors[0].get_virtus_model_structure.keys)
13
- defined << {:fault => self,:structure =>fault_structure ,:ancestors => ancestors }
12
+ defined << fault_ancestor_hash(fault_without_inheritable_elements(ancestors), ancestors)
14
13
  ancestors[0].get_fault_class_ancestors( defined)
15
14
  end
16
15
  ancestors unless bool_the_same
17
16
  end
18
17
 
18
+
19
+ def fault_without_inheritable_elements(ancestors)
20
+ remove_fault_type_inheritable_elements( ancestors[0].get_virtus_model_structure.keys)
21
+ end
22
+
23
+ def fault_ancestors
24
+ (self.ancestors - self.included_modules).delete_if{ |x| x.to_s.downcase == self.to_s.downcase || x.to_s == "ActiveRecord::Base" || x.to_s == "Object" || x.to_s =="BasicObject" || x.to_s == "Exception" }
25
+ end
26
+
27
+ def fault_ancestor_hash( structure, ancestors)
28
+ {:fault => self,:structure =>structure ,:ancestors => ancestors }
29
+ end
19
30
 
20
31
  def remove_fault_type_inheritable_elements( keys)
21
32
  get_virtus_model_structure.delete_if{|key,value| keys.include?(key) }
22
33
  end
23
34
 
24
35
 
36
+ def attr_details_array?(attr_details)
37
+ attr_details[:primitive].to_s.downcase == "array"
38
+ end
25
39
 
40
+ def attr_details_basic_type?(attr_details, field)
41
+ WashoutBuilder::Type::BASIC_TYPES.include?(attr_details[field.to_sym].to_s.downcase)
42
+ end
26
43
 
27
44
  def get_virtus_member_type_primitive(attr_details)
28
45
  complex_class = nil
29
- if attr_details[:primitive].to_s.downcase == "array" && !WashoutBuilder::Type::BASIC_TYPES.include?(attr_details[:member_type].to_s.downcase)
46
+ if attr_details_array?(attr_details) && !attr_details_basic_type?(attr_details, "member_type")
30
47
  complex_class = attr_details[:member_type]
31
- elsif attr_details[:primitive].to_s.downcase != "array" && !WashoutBuilder::Type::BASIC_TYPES.include?(attr_details[:primitive].to_s.downcase)
48
+ elsif !attr_details_array?(attr_details) && !attr_details_basic_type?(attr_details, "primitive")
32
49
  complex_class = attr_details[:primitive]
33
50
  end
34
51
  complex_class
@@ -1,3 +1,3 @@
1
1
  module WashoutBuilder
2
- VERSION = "0.11.5"
2
+ VERSION = "0.11.7"
3
3
  end
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe WashoutBuilderController, :type => :controller do
4
-
3
+ describe WashoutBuilder::WashoutBuilderController, :type => :controller do
4
+ routes { WashoutBuilder::Engine.routes }
5
+
5
6
  let(:soap_config) { OpenStruct.new(
6
7
  camelize_wsdl: false,
7
8
  namespace: "/api/wsdl",
@@ -55,4 +55,5 @@ Dummy::Application.routes.draw do
55
55
  # This is a legacy wild controller route that's not recommended for RESTful applications.
56
56
  # Note: This route will make all actions in every controller accessible via GET requests.
57
57
  # match ':controller(/:action(/:id(.:format)))'
58
+
58
59
  end
@@ -662,73 +662,6 @@ describe WashoutBuilder do
662
662
 
663
663
  end
664
664
 
665
- describe "WS Security" do
666
-
667
- it "appends username_token to params" do
668
- mock_controller(wsse_username: "gorilla", wsse_password: "secret") do
669
- soap_action "checkToken", :args => :integer, :return => nil, :to => 'check_token'
670
- def check_token
671
- request.env['WSSE_TOKEN']['username'].should == "gorilla"
672
- request.env['WSSE_TOKEN']['password'].should == "secret"
673
- render :soap => nil
674
- end
675
- end
676
-
677
- savon(:check_token, 42) do
678
- wsse_auth "gorilla", "secret"
679
- end
680
- end
681
-
682
- it "handles PasswordText auth" do
683
- mock_controller(wsse_username: "gorilla", wsse_password: "secret") do
684
- soap_action "checkAuth", :args => :integer, :return => :boolean, :to => 'check_auth'
685
- def check_auth
686
- render :soap => (params[:value] == 42)
687
- end
688
- end
689
-
690
- # correct auth
691
- lambda { savon(:check_auth, 42){ wsse_auth "gorilla", "secret" } }.
692
- should_not raise_exception
693
-
694
- # wrong user
695
- lambda { savon(:check_auth, 42){ wsse_auth "chimpanzee", "secret" } }.
696
- should raise_exception(Savon::SOAPFault)
697
-
698
- # wrong pass
699
- lambda { savon(:check_auth, 42){ wsse_auth "gorilla", "nicetry" } }.
700
- should raise_exception(Savon::SOAPFault)
701
665
 
702
- # no auth
703
- lambda { savon(:check_auth, 42) }.
704
- should raise_exception(Savon::SOAPFault)
705
- end
706
-
707
- it "handles PasswordDigest auth" do
708
- mock_controller(wsse_username: "gorilla", wsse_password: "secret") do
709
- soap_action "checkAuth", :args => :integer, :return => :boolean, :to => 'check_auth'
710
- def check_auth
711
- render :soap => (params[:value] == 42)
712
- end
713
- end
714
-
715
- # correct auth
716
- lambda { savon(:check_auth, 42){ wsse_auth "gorilla", "secret", :digest } }.
717
- should_not raise_exception
718
-
719
- # wrong user
720
- lambda { savon(:check_auth, 42){ wsse_auth "chimpanzee", "secret", :digest } }.
721
- should raise_exception(Savon::SOAPFault)
722
-
723
- # wrong pass
724
- lambda { savon(:check_auth, 42){ wsse_auth "gorilla", "nicetry", :digest } }.
725
- should raise_exception(Savon::SOAPFault)
726
-
727
- # no auth
728
- lambda { savon(:check_auth, 42) }.
729
- should raise_exception(Savon::SOAPFault)
730
- end
731
-
732
- end
733
666
 
734
667
  end
@@ -1,10 +1,10 @@
1
1
  # Configure Rails Envinronment
2
2
  ENV["RAILS_ENV"] = "test"
3
3
 
4
- require 'nori'
5
- require 'nokogiri'
6
- require 'active_support'
7
4
  require "simplecov"
5
+ require 'coveralls'
6
+ Coveralls.wear!
7
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
8
8
  SimpleCov.start do
9
9
  add_filter 'spec'
10
10
  add_group 'Library', 'lib'
@@ -13,7 +13,17 @@ SimpleCov.start do
13
13
  at_exit do; end
14
14
  end
15
15
 
16
+ if ENV["TRAVIS"]
17
+ require "codeclimate-test-reporter"
18
+ CodeClimate::TestReporter.start
19
+ end
20
+
21
+ require 'active_support'
22
+ require 'nori'
23
+ require 'nokogiri'
24
+
16
25
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
26
+ require File.expand_path("../../config/routes.rb", __FILE__)
17
27
  require "rails/test_help"
18
28
  require "rspec/rails"
19
29
  require 'rspec/autorun'
@@ -15,6 +15,6 @@ Gem::Specification.new do |s|
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = s.files.grep(/^(spec)/)
17
17
  s.require_paths = ["lib"]
18
- s.add_dependency("wash_out", ">= 0.9.1")
19
- s.add_dependency("virtus", ">= 1.0.0")
18
+ s.add_runtime_dependency 'wash_out', '~> 0.9', '>= 0.9.1'
19
+ s.add_runtime_dependency 'virtus', '~> 1.0', '>= 1.0.0'
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: washout_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ version: 0.11.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada
@@ -14,6 +14,9 @@ dependencies:
14
14
  name: wash_out
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
17
20
  - - ! '>='
18
21
  - !ruby/object:Gem::Version
19
22
  version: 0.9.1
@@ -21,6 +24,9 @@ dependencies:
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.9'
24
30
  - - ! '>='
25
31
  - !ruby/object:Gem::Version
26
32
  version: 0.9.1
@@ -28,6 +34,9 @@ dependencies:
28
34
  name: virtus
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
31
40
  - - ! '>='
32
41
  - !ruby/object:Gem::Version
33
42
  version: 1.0.0
@@ -35,6 +44,9 @@ dependencies:
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
38
50
  - - ! '>='
39
51
  - !ruby/object:Gem::Version
40
52
  version: 1.0.0
@@ -45,6 +57,7 @@ executables: []
45
57
  extensions: []
46
58
  extra_rdoc_files: []
47
59
  files:
60
+ - .coveralls.yml
48
61
  - .gitignore
49
62
  - .rspec
50
63
  - .travis.yml
@@ -135,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
148
  version: '0'
136
149
  requirements: []
137
150
  rubyforge_project:
138
- rubygems_version: 2.1.11
151
+ rubygems_version: 2.2.2
139
152
  signing_key:
140
153
  specification_version: 4
141
154
  summary: WashOut Soap Service HTML-Documentation generator (extends WashOut https://github.com/inossidabile/wash_out/)