exe/soaspec in soaspec-0.2.33 vs exe/soaspec in soaspec-0.3.1
- old
+ new
@@ -1,138 +1,140 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require 'thor'
-$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
-require 'savon'
-require 'soaspec'
-require 'soaspec/virtual_server'
-require 'soaspec/wsdl_generator'
-
-module Soaspec
- # Common executable for Soaspec
- class Exe < Thor
- include Soaspec::ExeHelpers
- include Soaspec::WsdlGenerator
-
- long_desc <<-LONGDESC
- `soaspec new` will generate the initial files and folders for starting a testing project using soaspec
- \x5
-
- `soaspec new soap` will create example files testing against a SOAP service
- \x5
-
- `soaspec new rest` will create example files testing against a REST service
- LONGDESC
- desc 'new [type]', 'Initialize soaspec repository'
- option :ci, default: 'jenkins', banner: 'What Continuous Integration is used'
- option :virtual, type: :boolean, default: true, banner: 'Whether to set things up for a virtual server'
- def new(type = 'initial')
- @virtual = options[:virtual]
- @type = type
- puts "Creating files for soaspec. options are #{options}"
- create_file(filename: 'Gemfile')
- create_file(filename: 'Rakefile')
- create_file(filename: '.rspec')
- create_file(filename: 'README.md')
- create_file(filename: '.travis.yml') if options[:ci] == 'travis'
- create_folder 'lib'
- create_files_for type
- create_file(filename: 'config/data/default.yml') # Example of data file
- create_file(filename: 'spec/spec_helper.rb')
- puts "Run 'bundle install' to install necessary gems"
- puts "Run 'rake spec' to run the tests"
- end
-
- long_desc <<-LONGDESC
- `soaspec add rest` will generate the initial files and folders for starting a testing project using soaspec
- \x5
-
- `soaspec add soap` will create example files testing against a virtual SOAP service
- \x5
-
- LONGDESC
- desc 'add [type] [name]', 'Add new ExchangeHandler'
- def add(type = 'rest', name = 'TestService')
- raise "Type '#{type}' is not available" unless %w[rest soap].include? type
-
- @name = name # Use instance variable for ERB
- create_file filename: File.join('lib', "#{name.snakecase}.rb"),
- content: retrieve_contents(File.join('lib', "new_#{type}_service.rb"))
- end
-
- long_desc <<-LONGDESC
- `soaspec cucumber` will add generic steps file within step definitions folder. It will also
- add Gemfile, and other Cucumber setup files if not already added
- \x5
-
- LONGDESC
- desc 'cucumber', 'Add cucumber generic steps template within step_definitions folder'
- def cucumber
- @cucumber = true
- create_file(filename: 'Gemfile', ignore_if_present: true)
- create_file(filename: 'features/support/env.rb', ignore_if_present: true)
- create_file filename: File.join('features', 'step_definitions', 'generic_steps.rb'),
- content: retrieve_contents(File.join('../cucumber', 'generic_steps.rb'), false)
- end
-
- desc 'generate', 'Generate initial test code from wsdl'
- long_desc <<-LONGDESC
- If no wsdl is given a server will be started from which code to generate Exchanges
-
- `soaspec generate wsdl=wsdl name=ServiceName ` will generate the initial files and folders to test each operation in a wsdl
- \x5
- Additionally the auth parameter can be used to use basic authentication to retrieve the WSDL.
- To do use the following `soaspec generate --auth=basic`
- Note: This is still a work in progress and will only work for a very simple wsdl
- LONGDESC
- option :wsdl, default: nil, aliases: :w
- option :name, default: 'Service', aliases: :n
- option :ci, default: 'jenkins', banner: 'What Continuous Integration is used'
- option :auth
- option :open_browser, default: 'true'
- option :string_default, default: 'test string'
- option :port, default: nil, banner: 'What port to run generate server. Default is random'
- def generate
- if options[:wsdl]
- generate_from_wsdl(options)
- else
- require 'launchy'
- require 'soaspec/generate_server'
- require 'random-port'
- port = options[:port] || RandomPort::Pool.new.acquire.to_s
- puts "Using random port '#{port}' for hosting generate server"
-
- Soaspec::GenerateServer.run!(port: port) do
- Launchy.open "http://localhost:#{port}" if options[:open_browser] == 'true'
- end
- end
- end
-
- long_desc <<-LONGDESC
- Run virtual web services on localhost. See root for documentation of web services provided.
- LONGDESC
- desc 'virtual_server [port]', 'Run virtual web service on localhost'
- def virtual_server(port = '4999')
- ENV['port'] = port
- require 'soaspec/virtual_server'
- Soaspec::VirtualServer.run!(port: port)
- end
-
- long_desc <<-LONGDESC
- Run pry with Soaspec and other relevant libraries loaded. Pass either the relative path to files desired with a
- '.rb' extension or the path to the folder to be loaded with 'require_all'
- LONGDESC
- desc 'pry [required_files]', 'Run pry with Soaspec and other relevant libraries loaded'
- def pry(required_files = nil)
- require 'soaspec'
-
- require 'require_all'
- require_all required_files if required_files
-
- require 'pry'
- Pry.start
- end
- end
-end
-
-Soaspec::Exe.start(ARGV)
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+require 'thor'
+$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
+require 'savon'
+require 'soaspec'
+require 'soaspec/virtual_server'
+require 'soaspec/wsdl_generator'
+
+module Soaspec
+ # Common executable for Soaspec
+ class Exe < Thor
+ include Soaspec::ExeHelpers
+ include Soaspec::WsdlGenerator
+
+ long_desc <<-LONGDESC
+ `soaspec new` will generate the initial files and folders for starting a testing project using soaspec
+ \x5
+
+ `soaspec new soap` will create example files testing against a SOAP service
+ \x5
+
+ `soaspec new rest` will create example files testing against a REST service
+ LONGDESC
+ desc 'new [type]', 'Initialize soaspec repository'
+ option :ci, default: 'jenkins', banner: 'What Continuous Integration is used'
+ option :virtual, type: :boolean, default: true, banner: 'Whether to set things up for a virtual server'
+ def new(type = 'initial')
+ @virtual = options[:virtual]
+ @type = type
+ puts "Creating files for soaspec. options are #{options}"
+ create_file(filename: 'Gemfile')
+ create_file(filename: 'Rakefile')
+ create_file(filename: '.rspec')
+ create_file(filename: 'README.md')
+ create_file(filename: '.travis.yml') if options[:ci] == 'travis'
+ create_folder 'lib'
+ create_files_for type
+ create_file(filename: 'config/data/default.yml') # Example of data file
+ create_file(filename: 'spec/spec_helper.rb')
+ puts "Run 'bundle install' to install necessary gems"
+ puts "Run 'rake spec' to run the tests"
+ end
+
+ long_desc <<-LONGDESC
+ `soaspec add rest` will generate the initial files and folders for starting a testing project using soaspec
+ \x5
+
+ `soaspec add soap` will create example files testing against a virtual SOAP service
+ \x5
+
+ After type a 'name' can be given in PascalCase to specify the class name
+
+ LONGDESC
+ desc 'add [type] [name]', 'Add new ExchangeHandler'
+ def add(type = 'rest', name = 'TestService')
+ raise "Type '#{type}' is not available" unless %w[rest soap].include? type
+
+ @name = name # Use instance variable for ERB
+ create_file filename: File.join('lib', "#{name.snakecase}.rb"),
+ content: retrieve_contents(File.join('lib', "new_#{type}_service.rb"))
+ end
+
+ long_desc <<-LONGDESC
+ `soaspec cucumber` will add generic steps file within step definitions folder. It will also
+ add Gemfile, and other Cucumber setup files if not already added
+ \x5
+
+ LONGDESC
+ desc 'cucumber', 'Add cucumber generic steps template within step_definitions folder'
+ def cucumber
+ @cucumber = true
+ create_file(filename: 'Gemfile', ignore_if_present: true)
+ create_file(filename: 'features/support/env.rb', ignore_if_present: true)
+ create_file filename: File.join('features', 'step_definitions', 'generic_steps.rb'),
+ content: retrieve_contents(File.join('../cucumber', 'generic_steps.rb'), false)
+ end
+
+ desc 'generate', 'Generate initial test code from wsdl'
+ long_desc <<-LONGDESC
+ If no wsdl is given a server will be started from which code to generate Exchanges
+
+ `soaspec generate wsdl=wsdl name=ServiceName ` will generate the initial files and folders to test each operation in a wsdl
+ \x5
+ Additionally the auth parameter can be used to use basic authentication to retrieve the WSDL.
+ To do use the following `soaspec generate --auth=basic`
+ Note: This is still a work in progress and will only work for a very simple wsdl
+ LONGDESC
+ option :wsdl, default: nil, aliases: :w
+ option :name, default: 'Service', aliases: :n
+ option :ci, default: 'jenkins', banner: 'What Continuous Integration is used'
+ option :auth
+ option :open_browser, default: 'true'
+ option :string_default, default: 'test string'
+ option :port, default: nil, banner: 'What port to run generate server. Default is random'
+ def generate
+ if options[:wsdl]
+ generate_from_wsdl(options)
+ else
+ require 'launchy'
+ require 'soaspec/generate_server'
+ require 'random-port'
+ port = options[:port] || RandomPort::Pool.new.acquire.to_s
+ puts "Using random port '#{port}' for hosting generate server"
+
+ Soaspec::GenerateServer.run!(port: port) do
+ Launchy.open "http://localhost:#{port}" if options[:open_browser] == 'true'
+ end
+ end
+ end
+
+ long_desc <<-LONGDESC
+ Run virtual web services on localhost. See root for documentation of web services provided.
+ LONGDESC
+ desc 'virtual_server [port]', 'Run virtual web service on localhost'
+ def virtual_server(port = '4999')
+ ENV['port'] = port
+ require 'soaspec/virtual_server'
+ Soaspec::VirtualServer.run!(port: port)
+ end
+
+ long_desc <<-LONGDESC
+ Run pry with Soaspec and other relevant libraries loaded. Pass either the relative path to files desired with a
+ '.rb' extension or the path to the folder to be loaded with 'require_all'
+ LONGDESC
+ desc 'pry [required_files]', 'Run pry with Soaspec and other relevant libraries loaded'
+ def pry(required_files = nil)
+ require 'soaspec'
+
+ require 'require_all'
+ require_all required_files if required_files
+
+ require 'pry'
+ Pry.start
+ end
+ end
+end
+
+Soaspec::Exe.start(ARGV)