taas 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.
- data/Gemfile +16 -0
- data/Gemfile.lock +63 -0
- data/LICENSE.txt +13 -0
- data/README.rdoc +27 -0
- data/Rakefile +27 -0
- data/VERSION +1 -0
- data/lib/helper/command_executer.rb +9 -0
- data/lib/helper/contract.rb +22 -0
- data/lib/helper/contracts.rb +35 -0
- data/lib/helper/output_parser.rb +21 -0
- data/lib/helper/parameter_factory.rb +12 -0
- data/lib/server.rb +41 -0
- data/lib/taas.rb +13 -0
- data/lib/taas/version.rb +3 -0
- data/lib/taas_client.rb +40 -0
- data/taas.gemspec +91 -0
- data/test/helper/command_executer_test.rb +21 -0
- data/test/helper/contract_test.rb +60 -0
- data/test/helper/contracts_test.rb +97 -0
- data/test/helper/output_parser_test.rb +75 -0
- data/test/helper/parameter_factory_test.rb +31 -0
- data/test/server_test.rb +109 -0
- data/test/taas_client_test.rb +64 -0
- data/test/test_helper.rb +11 -0
- metadata +229 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activesupport (3.2.8)
|
5
|
+
i18n (~> 0.6)
|
6
|
+
multi_json (~> 1.0)
|
7
|
+
coderay (1.0.7)
|
8
|
+
git (1.2.5)
|
9
|
+
i18n (0.6.1)
|
10
|
+
jeweler (1.8.4)
|
11
|
+
bundler (~> 1.0)
|
12
|
+
git (>= 1.2.5)
|
13
|
+
rake
|
14
|
+
rdoc
|
15
|
+
json (1.7.5)
|
16
|
+
metaclass (0.0.1)
|
17
|
+
method_source (0.7.1)
|
18
|
+
mocha (0.11.4)
|
19
|
+
metaclass (~> 0.0.1)
|
20
|
+
multi_json (1.3.6)
|
21
|
+
pry (0.9.9.6)
|
22
|
+
coderay (~> 1.0.5)
|
23
|
+
method_source (~> 0.7.1)
|
24
|
+
slop (>= 2.4.4, < 3)
|
25
|
+
pry-nav (0.2.1)
|
26
|
+
pry (~> 0.9.9)
|
27
|
+
rack (1.4.1)
|
28
|
+
rack-protection (1.2.0)
|
29
|
+
rack
|
30
|
+
rack-test (0.6.2)
|
31
|
+
rack (>= 1.0)
|
32
|
+
rake (0.9.2.2)
|
33
|
+
rdoc (3.12)
|
34
|
+
json (~> 1.4)
|
35
|
+
shoulda (3.3.1)
|
36
|
+
shoulda-context (~> 1.0)
|
37
|
+
shoulda-matchers (~> 1.4.1)
|
38
|
+
shoulda-context (1.0.1)
|
39
|
+
shoulda-matchers (1.4.1)
|
40
|
+
activesupport (>= 3.0.0)
|
41
|
+
sinatra (1.3.3)
|
42
|
+
rack (~> 1.3, >= 1.3.6)
|
43
|
+
rack-protection (~> 1.2)
|
44
|
+
tilt (~> 1.3, >= 1.3.3)
|
45
|
+
slop (2.4.4)
|
46
|
+
test-unit (2.4.9)
|
47
|
+
tilt (1.3.3)
|
48
|
+
|
49
|
+
PLATFORMS
|
50
|
+
ruby
|
51
|
+
x86-mingw32
|
52
|
+
|
53
|
+
DEPENDENCIES
|
54
|
+
jeweler
|
55
|
+
json
|
56
|
+
mocha
|
57
|
+
pry
|
58
|
+
pry-nav
|
59
|
+
rack-test
|
60
|
+
rake
|
61
|
+
shoulda
|
62
|
+
sinatra
|
63
|
+
test-unit
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright 2012 Anand Bagmar (abagmar@gmail.com).
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
data/README.rdoc
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
= TaaS
|
2
|
+
|
3
|
+
Typically in organizations, there are multiple projects / products. Organizations like to have a common Test Automation
|
4
|
+
solution across these products in an effort to standardize the framework.
|
5
|
+
|
6
|
+
However, this is not a good idea!
|
7
|
+
|
8
|
+
Each product should be tested using the tools and technologies that are <b>"right"</b> for it.
|
9
|
+
|
10
|
+
Yet - these different products talk to each other and you need a way to test the integration between them in an automated fashion.
|
11
|
+
|
12
|
+
<b>"TaaS"</b> is a product that allows you to validate the integration across a variety of products via Test Automation - the <b>"correct"</b> way.
|
13
|
+
|
14
|
+
= Documentation
|
15
|
+
|
16
|
+
Check the doc[https://github.com/anandbagmar/taas/tree/master/doc] folder for information about TaaS and how to use it.
|
17
|
+
|
18
|
+
== Copyright
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Created by: Anand Bagmar
|
22
|
+
* Email: abagmar@gmail.com
|
23
|
+
*
|
24
|
+
* Copyright 2010 Anand Bagmar. Distributed under the Apache 2.0 License
|
25
|
+
*
|
26
|
+
* See LICENSE.txt for further details.
|
27
|
+
**/
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$PROJECT_ROOT=File.expand_path(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
namespace :test do
|
4
|
+
desc "run all unit test"
|
5
|
+
task :unit do
|
6
|
+
Dir['test/**/*_test.rb'].each { |testCase|
|
7
|
+
tName = File.join($PROJECT_ROOT, testCase)
|
8
|
+
puts "running test: #{tName}"
|
9
|
+
load tName
|
10
|
+
}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "taas"
|
18
|
+
gem.homepage = "http://github.com/anandbagmar/taas"
|
19
|
+
gem.license = "Apache 2.0"
|
20
|
+
gem.summary = %q{TaaS}
|
21
|
+
gem.description = %q{"TaaS" allows you to validate the integration across a variety of products via Test Automation - the "correct" way. TaaS uses a web service interface to run your end-2-end integration tests between two independent but related system. See the blog for more details: http://goo.gl/nVShb}
|
22
|
+
gem.authors = ["Anand Bagmar, Akash Mishra"]
|
23
|
+
gem.email = ["abagmar@gmail.com, akash.mishra20@gmail.com"]
|
24
|
+
gem.files.exclude "doc/**/*"
|
25
|
+
gem.rubyforge_project = "taas"
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module TaaS
|
2
|
+
class Contract
|
3
|
+
|
4
|
+
def initialize(hash)
|
5
|
+
@hash = hash
|
6
|
+
end
|
7
|
+
|
8
|
+
def value_of(key)
|
9
|
+
@hash[key]
|
10
|
+
end
|
11
|
+
|
12
|
+
def has_property?(key)
|
13
|
+
@hash.has_key?(key)
|
14
|
+
end
|
15
|
+
|
16
|
+
def command(params)
|
17
|
+
command = @hash["command"]
|
18
|
+
parameter_string = ParameterFactory.generate_parameter_string(@hash["input_param_format"],params)
|
19
|
+
command.scan(/<taas_params>/).empty? ? command+parameter_string : command.gsub("<taas_params>",parameter_string)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'pry'
|
2
|
+
module TaaS
|
3
|
+
class Contracts
|
4
|
+
|
5
|
+
@@contract_hash = {}
|
6
|
+
|
7
|
+
def self.load(absolute_path)
|
8
|
+
raise "File path cant be nil or empty" if (absolute_path.nil? || absolute_path.empty?)
|
9
|
+
@@contract_hash = YAML.load_file(absolute_path)["contracts"] rescue {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.is_empty?
|
13
|
+
@@contract_hash.eql?({}) || @@contract_hash.nil?
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.contains?(contract_name)
|
17
|
+
@@contract_hash.keys.include?(contract_name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.get_contract(contract_name)
|
21
|
+
return nil unless contains?(contract_name)
|
22
|
+
contract = Contract.new @@contract_hash[contract_name]
|
23
|
+
contract
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_execution_attribute(attribute, contract_name)
|
27
|
+
return nil if @@contract_hash.nil? || @@contract_hash.eql?({})
|
28
|
+
@@contract_hash["contracts"][contract_name.to_s][attribute]
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.get_all_contracts
|
32
|
+
return @@contract_hash
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "json"
|
2
|
+
module TaaS
|
3
|
+
class OutputParser
|
4
|
+
def self.parse_taas_output(output)
|
5
|
+
output.scan(/<TaaS Response Start>(.*)<TaaS Response Complete>/m).first.first rescue nil
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.parse_server_output(response_body)
|
9
|
+
return nil unless valid_server_response?(response_body)
|
10
|
+
body = response_body.scan(/<Taas-Output>(.*)<\/TaaS-Output>/m).first.first
|
11
|
+
response_json = response_body.scan(/<TaaS-Json>(.*)<\/TaaS-Json>/m).first.first
|
12
|
+
response_hash = JSON.parse(response_json) rescue nil
|
13
|
+
return nil if response_hash.nil?
|
14
|
+
return response_hash,body
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.valid_server_response?(response)
|
18
|
+
!(response.scan(/<Taas-Output>(.*)<\/TaaS-Output>/m).empty? || response.scan(/<TaaS-Json>(.*)<\/TaaS-Json>/m).empty?)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module TaaS
|
2
|
+
class ParameterFactory
|
3
|
+
def self.generate_parameter_string(template,params_hash)
|
4
|
+
parameter_string = ""
|
5
|
+
template = "key=value" if template.nil?
|
6
|
+
params_hash.each do |key,value|
|
7
|
+
parameter_string += " #{template.gsub("key",key.to_s).gsub("value",value.to_s)}"
|
8
|
+
end
|
9
|
+
parameter_string
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/server.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require "sinatra"
|
2
|
+
|
3
|
+
|
4
|
+
Dir.glob(File.join("#{$PROJECT_ROOT}", "lib","helper", "**", "*.rb")).each do |test_file|
|
5
|
+
puts "requiring #{test_file}"
|
6
|
+
require "#{test_file}"
|
7
|
+
end
|
8
|
+
|
9
|
+
include TaaS
|
10
|
+
|
11
|
+
Contracts.load(ARGV[0])
|
12
|
+
|
13
|
+
post "/contract" do
|
14
|
+
response_json = '{"pass":"false","data":{}}'
|
15
|
+
output = "Contract Name is either nil or not valid."
|
16
|
+
if !params["contract_name"].nil? && !Contracts.is_empty? && Contracts.contains?(params["contract_name"])
|
17
|
+
command = Contracts.get_contract(params["contract_name"]).command(params)
|
18
|
+
dir = Contracts.get_contract(params["contract_name"]).value_of("dir")
|
19
|
+
output = CommandExecuter.execute_command(dir,command)
|
20
|
+
response_json = OutputParser.parse_taas_output(output)
|
21
|
+
end
|
22
|
+
"<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>"
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
get "/" do
|
27
|
+
table_header ="<table width=\"600\" border=\"1\"><tr><th>Contract Name</th><th>Contract parameters</th></tr>"
|
28
|
+
table_footer="</table>"
|
29
|
+
table_body =""
|
30
|
+
Contracts.get_all_contracts.each_pair do |key,value|
|
31
|
+
inner_table_body=""
|
32
|
+
inner_table_header ="<table width=\"400\" border=\"1\"><tr><th>KEY</th><th>VALUE</th></tr>"
|
33
|
+
inner_table_footer="</table>"
|
34
|
+
value.each_pair do |key1,value1|
|
35
|
+
inner_table_body = inner_table_body + "<tr><td>#{key1}</td><td>#{value1}</td></tr>"
|
36
|
+
end
|
37
|
+
inner_table = inner_table_header+inner_table_body+inner_table_footer
|
38
|
+
table_body = table_body + "<tr><td>#{key}</td><td>#{inner_table}</td></tr>"
|
39
|
+
end
|
40
|
+
table_header+table_body+table_footer
|
41
|
+
end
|
data/lib/taas.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
require "taas_client"
|
3
|
+
require File.join($PROJECT_ROOT,"lib","helper","command_executer")
|
4
|
+
|
5
|
+
module TaaS
|
6
|
+
def self.start_server(contract_file)
|
7
|
+
CommandExecuter.execute_command(File.dirname(__FILE__),"ruby server.rb #{contract_file}")
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.client(url, timeout)
|
11
|
+
TaaSClient.new(url, timeout)
|
12
|
+
end
|
13
|
+
end
|
data/lib/taas/version.rb
ADDED
data/lib/taas_client.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require 'uri'
|
3
|
+
require 'net/http'
|
4
|
+
require "json"
|
5
|
+
require File.join($PROJECT_ROOT,"lib","helper","output_parser")
|
6
|
+
|
7
|
+
module TaaS
|
8
|
+
class TaaSClient
|
9
|
+
|
10
|
+
attr_accessor :url, :timeout
|
11
|
+
|
12
|
+
def initialize(url, timeout_in_seconds=1000)
|
13
|
+
@url = url
|
14
|
+
@timeout = timeout_in_seconds * 10000
|
15
|
+
end
|
16
|
+
|
17
|
+
def execute_contract(params={})
|
18
|
+
response_body = request_taas_server(params)
|
19
|
+
|
20
|
+
raise "TaaS Request is false" unless OutputParser.valid_server_response?(response_body)
|
21
|
+
|
22
|
+
OutputParser.parse_server_output(response_body)
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
def request_taas_server(params)
|
28
|
+
uri = URI.parse(@url)
|
29
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
30
|
+
|
31
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
32
|
+
request.set_form_data(params)
|
33
|
+
http.read_timeout = @timeout
|
34
|
+
http.request(request).body
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
data/taas.gemspec
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "taas"
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Anand Bagmar, Akash Mishra"]
|
12
|
+
s.date = "2013-04-03"
|
13
|
+
s.description = "\"TaaS\" allows you to validate the integration across a variety of products via Test Automation - the \"correct\" way. TaaS uses a web service interface to run your end-2-end integration tests between two independent but related system. See the blog for more details: http://goo.gl/nVShb"
|
14
|
+
s.email = ["abagmar@gmail.com, akash.mishra20@gmail.com"]
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"Gemfile",
|
21
|
+
"Gemfile.lock",
|
22
|
+
"LICENSE.txt",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/helper/command_executer.rb",
|
27
|
+
"lib/helper/contract.rb",
|
28
|
+
"lib/helper/contracts.rb",
|
29
|
+
"lib/helper/output_parser.rb",
|
30
|
+
"lib/helper/parameter_factory.rb",
|
31
|
+
"lib/server.rb",
|
32
|
+
"lib/taas.rb",
|
33
|
+
"lib/taas/version.rb",
|
34
|
+
"lib/taas_client.rb",
|
35
|
+
"taas.gemspec",
|
36
|
+
"test/helper/command_executer_test.rb",
|
37
|
+
"test/helper/contract_test.rb",
|
38
|
+
"test/helper/contracts_test.rb",
|
39
|
+
"test/helper/output_parser_test.rb",
|
40
|
+
"test/helper/parameter_factory_test.rb",
|
41
|
+
"test/server_test.rb",
|
42
|
+
"test/taas_client_test.rb",
|
43
|
+
"test/test_helper.rb"
|
44
|
+
]
|
45
|
+
s.homepage = "http://github.com/anandbagmar/taas"
|
46
|
+
s.licenses = ["Apache 2.0"]
|
47
|
+
s.require_paths = ["lib"]
|
48
|
+
s.rubyforge_project = "taas"
|
49
|
+
s.rubygems_version = "1.8.24"
|
50
|
+
s.summary = "TaaS"
|
51
|
+
|
52
|
+
if s.respond_to? :specification_version then
|
53
|
+
s.specification_version = 3
|
54
|
+
|
55
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
+
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
57
|
+
s.add_runtime_dependency(%q<sinatra>, [">= 0"])
|
58
|
+
s.add_runtime_dependency(%q<json>, [">= 0"])
|
59
|
+
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
60
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
61
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
62
|
+
s.add_development_dependency(%q<rack-test>, [">= 0"])
|
63
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
64
|
+
s.add_development_dependency(%q<pry>, [">= 0"])
|
65
|
+
s.add_development_dependency(%q<pry-nav>, [">= 0"])
|
66
|
+
else
|
67
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
68
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
69
|
+
s.add_dependency(%q<json>, [">= 0"])
|
70
|
+
s.add_dependency(%q<test-unit>, [">= 0"])
|
71
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
72
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
73
|
+
s.add_dependency(%q<rack-test>, [">= 0"])
|
74
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
75
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
76
|
+
s.add_dependency(%q<pry-nav>, [">= 0"])
|
77
|
+
end
|
78
|
+
else
|
79
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
80
|
+
s.add_dependency(%q<sinatra>, [">= 0"])
|
81
|
+
s.add_dependency(%q<json>, [">= 0"])
|
82
|
+
s.add_dependency(%q<test-unit>, [">= 0"])
|
83
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
84
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
85
|
+
s.add_dependency(%q<rack-test>, [">= 0"])
|
86
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
87
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
88
|
+
s.add_dependency(%q<pry-nav>, [">= 0"])
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.join($PROJECT_ROOT, 'lib', 'helper', 'command_executer')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
|
5
|
+
class CommandExecuterTest < Test::Unit::TestCase
|
6
|
+
context "execute_contract" do
|
7
|
+
should "not execute the contract if dir is nil or empty" do
|
8
|
+
assert_nil CommandExecuter.execute_command(nil,"echo 'Hello'")
|
9
|
+
assert_nil CommandExecuter.execute_command("","echo 'Hello'")
|
10
|
+
end
|
11
|
+
|
12
|
+
should "not execute the contract if command is nil or empty" do
|
13
|
+
assert_nil CommandExecuter.execute_command(Dir.pwd,nil)
|
14
|
+
assert_nil CommandExecuter.execute_command(Dir.pwd,"")
|
15
|
+
end
|
16
|
+
|
17
|
+
should "return the executed command output for valid dir and command" do
|
18
|
+
assert_equal "Hello\n",CommandExecuter.execute_command(Dir.pwd,"echo 'Hello'").unpack("U*").map{|c|c.chr}.join
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.join($PROJECT_ROOT, 'lib', 'helper', 'contract')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
class ContractTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
context "value_of" do
|
7
|
+
should "return the value of the given property of the contract" do
|
8
|
+
key, value = ["command","ls"]
|
9
|
+
params_hash = {key => value, "dir" => "/home"}
|
10
|
+
contract = Contract.new(params_hash)
|
11
|
+
assert_equal value,contract.value_of(key)
|
12
|
+
end
|
13
|
+
|
14
|
+
should "return nil if the given property is not present in the contract" do
|
15
|
+
contract = Contract.new({})
|
16
|
+
assert_nil contract.value_of("key")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "has_property?" do
|
21
|
+
should "return true if the property is present in the contract" do
|
22
|
+
key, value = ["command","ls"]
|
23
|
+
params_hash = {key => value}
|
24
|
+
contract = Contract.new(params_hash)
|
25
|
+
assert contract.has_property?(key)
|
26
|
+
end
|
27
|
+
should "return false if the property is not present in the contract" do
|
28
|
+
key, value = ["command","ls"]
|
29
|
+
params_hash = {key => value}
|
30
|
+
contract = Contract.new(params_hash)
|
31
|
+
assert_false contract.has_property?("key")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "command" do
|
36
|
+
should "return the parameter string replaced in the place of <taas_params> template" do
|
37
|
+
command_template = "play <taas_params> test"
|
38
|
+
parameter_string = "-Dorder_id=1 -Dname=s"
|
39
|
+
contract_hash = {"dir" => "/home", "command" => command_template, "input_param_format" => "-Dkey=value", :input_params =>{:order_id => nil}, :output_params =>{}}
|
40
|
+
parameter = {:order_id => 1, :name => "s"}
|
41
|
+
contract = Contract.new(contract_hash)
|
42
|
+
|
43
|
+
ParameterFactory.stubs(:generate_parameter_string).with("-Dkey=value",parameter).returns(parameter_string)
|
44
|
+
|
45
|
+
assert_equal "play #{parameter_string} test",contract.command(parameter)
|
46
|
+
end
|
47
|
+
|
48
|
+
should "return the parameter string append to command if no <taas_params> template is specified" do
|
49
|
+
command_template = "play test"
|
50
|
+
parameter_string = "order_id=1 name=s"
|
51
|
+
parameter = {:order_id => 1, :name => "s"}
|
52
|
+
contract_hash = {"dir" => "/home", "command" => command_template, "input_param_format" => "key=value", :input_params =>{:order_id => nil}, :output_params =>{}}
|
53
|
+
contract = Contract.new(contract_hash)
|
54
|
+
|
55
|
+
ParameterFactory.stubs(:generate_parameter_string).with("key=value",parameter).returns(parameter_string)
|
56
|
+
|
57
|
+
assert_equal "#{command_template}#{parameter_string}",contract.command(parameter)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.join($PROJECT_ROOT, 'lib', 'helper', 'contracts')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
|
5
|
+
class ContractsTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
CONTRACT_HASH = {"contracts"=>{
|
8
|
+
"create_live_sale"=>
|
9
|
+
{"command"=>"bundle exec cucumber",
|
10
|
+
"dir"=>"/home/tworker/work/livesale-automation",
|
11
|
+
"input_params"=>{"name"=>nil, "no_of_listing"=>nil},
|
12
|
+
"timeout_in_seconds"=>100,
|
13
|
+
"output_params"=>{"live_sale_id"=>nil}},
|
14
|
+
"end_live_sale"=>
|
15
|
+
{"command"=>"bundle exec cucumber",
|
16
|
+
"dir"=>"/home/tworker/work/livesale-automation",
|
17
|
+
"input_params"=>{"live_sale_id"=>nil},
|
18
|
+
"timeout_in_seconds"=>100,
|
19
|
+
"output_params"=>{"actual_end_time"=>nil}}}}
|
20
|
+
|
21
|
+
context "load" do
|
22
|
+
should "load the valid contract from contract file" do
|
23
|
+
contract_file_absolute_path = "a1/a5"
|
24
|
+
YAML.stubs(:load_file).with(contract_file_absolute_path).returns(CONTRACT_HASH)
|
25
|
+
|
26
|
+
Contracts.load(contract_file_absolute_path)
|
27
|
+
|
28
|
+
assert_equal false,Contracts.is_empty?
|
29
|
+
end
|
30
|
+
|
31
|
+
should "not load contract if contract file is not present" do
|
32
|
+
contract_file_absolute_path = "a1/a2"
|
33
|
+
YAML.stubs(:load_file).with(contract_file_absolute_path).returns({})
|
34
|
+
|
35
|
+
Contracts.load(contract_file_absolute_path)
|
36
|
+
|
37
|
+
assert_equal true,Contracts.is_empty?
|
38
|
+
end
|
39
|
+
|
40
|
+
should "raise execption if empty or nil contract file is passesd" do
|
41
|
+
assert_raise do
|
42
|
+
Contracts.load(nil)
|
43
|
+
end
|
44
|
+
assert_raise do
|
45
|
+
Contracts.load("")
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "get_contract" do
|
52
|
+
setup {
|
53
|
+
@contract_file_absolute_path = "a1/a2"
|
54
|
+
@contract_name = "create_live_sale"
|
55
|
+
}
|
56
|
+
should "should return the contract object of given contract" do
|
57
|
+
YAML.stubs(:load_file).with(@contract_file_absolute_path).returns(CONTRACT_HASH)
|
58
|
+
Contracts.load(@contract_file_absolute_path)
|
59
|
+
|
60
|
+
assert_equal CONTRACT_HASH["contracts"][@contract_name]["command"],Contracts.get_contract(@contract_name).value_of("command")
|
61
|
+
end
|
62
|
+
|
63
|
+
should "return nil if contract is not present" do
|
64
|
+
YAML.stubs(:load_file).with(@contract_file_absolute_path).returns(CONTRACT_HASH)
|
65
|
+
Contracts.load(@contract_file_absolute_path)
|
66
|
+
|
67
|
+
assert_nil Contracts.get_contract("dummy")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "is_valid_contract?" do
|
72
|
+
setup {
|
73
|
+
@contract_file_absolute_path = "a1/a2"
|
74
|
+
@contract_name = :create_live_sale
|
75
|
+
YAML.stubs(:load_file).with(@contract_file_absolute_path).returns(CONTRACT_HASH)
|
76
|
+
Contracts.load(@contract_file_absolute_path)
|
77
|
+
}
|
78
|
+
should "return true if requested contract is present" do
|
79
|
+
assert Contracts.contains?("create_live_sale")
|
80
|
+
end
|
81
|
+
should "return false if requested contract is not present" do
|
82
|
+
assert_false Contracts.contains?("dummy_contract")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context "get_all_contracts" do
|
87
|
+
setup {
|
88
|
+
@contract_file_absolute_path = "a1/a2"
|
89
|
+
@contract_name = :create_live_sale
|
90
|
+
YAML.stubs(:load_file).with(@contract_file_absolute_path).returns(CONTRACT_HASH)
|
91
|
+
Contracts.load(@contract_file_absolute_path)
|
92
|
+
}
|
93
|
+
should "return all the contracts" do
|
94
|
+
assert_equal CONTRACT_HASH["contracts"],Contracts.get_all_contracts
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require File.join($PROJECT_ROOT,'lib', 'helper', 'output_parser')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
|
5
|
+
class OutputParserTest < Test::Unit::TestCase
|
6
|
+
context "parse_taas_output" do
|
7
|
+
should "return TaaS specific parsed json TaaS from the output" do
|
8
|
+
response_json = '"paas":"true","data":{}'
|
9
|
+
output = "this is core output.<TaaS Response Start>#{response_json}<TaaS Response Complete>"
|
10
|
+
|
11
|
+
assert_equal OutputParser.parse_taas_output(output),response_json
|
12
|
+
end
|
13
|
+
|
14
|
+
should "return nil if the output format is not correct" do
|
15
|
+
response_json = '"paas":"true","data":{}'
|
16
|
+
output = "this is core output.#{response_json}<TaaS Response Complete>"
|
17
|
+
|
18
|
+
assert_nil OutputParser.parse_taas_output(output)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context "parse server output" do
|
23
|
+
should "return the parameter hash and command output from server dump" do
|
24
|
+
output="this is dummy output"
|
25
|
+
response_json = '{"paas":"true","data":{}}'
|
26
|
+
server_response="<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>"
|
27
|
+
response_hash = JSON.parse(response_json)
|
28
|
+
|
29
|
+
assert_equal [response_hash, output],OutputParser.parse_server_output(server_response)
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
should "return nil if server dump is not of taas output standard" do
|
34
|
+
output="this is dummy output"
|
35
|
+
response_json = '{"paas":"true","data":{}}'
|
36
|
+
server_response_1="<TaaS-Server-Response>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>"
|
37
|
+
server_response_2="<TaaS-Server-Response><Taas-Output>#{output}<TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>"
|
38
|
+
server_response_3="<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output>#{response_json}</TaaS-Json></TaaS-Server-Response>"
|
39
|
+
server_response_4="<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Server-Response>"
|
40
|
+
server_response_5="<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>yello</TaaS-Json></TaaS-Server-Response>"
|
41
|
+
|
42
|
+
assert_nil OutputParser.parse_server_output(server_response_1)
|
43
|
+
assert_nil OutputParser.parse_server_output(server_response_2)
|
44
|
+
assert_nil OutputParser.parse_server_output(server_response_3)
|
45
|
+
assert_nil OutputParser.parse_server_output(server_response_4)
|
46
|
+
assert_nil OutputParser.parse_server_output(server_response_5)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "valid_server_response?" do
|
51
|
+
|
52
|
+
should "return false if the response is not same as TaaS server template" do
|
53
|
+
server_output = "<TaaS-Server-Response>Dummy output</TaaS-Output><TaaS-Json>dummy json</TaaS-Json></TaaS-Server-Response>"
|
54
|
+
assert_false OutputParser.valid_server_response?(server_output)
|
55
|
+
|
56
|
+
server_output = "<TaaS-Server-Response><Taas-Output>Dummy output<TaaS-Json>dummy json</TaaS-Json></TaaS-Server-Response>"
|
57
|
+
assert_false OutputParser.valid_server_response?(server_output)
|
58
|
+
|
59
|
+
server_output = "<TaaS-Server-Response><Taas-Output>Dummy output</TaaS-Output>dummy json</TaaS-Json></TaaS-Server-Response>"
|
60
|
+
assert_false OutputParser.valid_server_response?(server_output)
|
61
|
+
|
62
|
+
server_output = "<TaaS-Server-Response><Taas-Output>Dummy output</TaaS-Output><TaaS-Json>dummy json</TaaS-Server-Response>"
|
63
|
+
assert_false OutputParser.valid_server_response?(server_output)
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
should "return true if the response is not same as TaaS server template" do
|
68
|
+
server_output = "<TaaS-Server-Response><Taas-Output>Dummy output</TaaS-Output><TaaS-Json>dummy json</TaaS-Json></TaaS-Server-Response>"
|
69
|
+
assert OutputParser.valid_server_response?(server_output)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.join($PROJECT_ROOT,'lib', 'helper', 'parameter_factory')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
class ParameterFactoryTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
context "generate_parameter_string" do
|
7
|
+
should "create command line params string in given template" do
|
8
|
+
template ="-Dkey=value"
|
9
|
+
params_hash = {:order_id => 1, :name => "s"}
|
10
|
+
expected_string = " -Dorder_id=1 -Dname=s"
|
11
|
+
|
12
|
+
generated_string = ParameterFactory.generate_parameter_string(template,params_hash)
|
13
|
+
|
14
|
+
assert_true generated_string.include?("-Dorder_id=1")
|
15
|
+
assert_true generated_string.include?("-Dname=s")
|
16
|
+
puts generated_string.gsub("-Dname=s","").gsub("-Dorder_id=1","")
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
should "create command line in params in key=value template if no template is specified" do
|
21
|
+
params_hash = {:order_id => 1, :name => "s"}
|
22
|
+
expected_string = " order_id=1 name=s"
|
23
|
+
|
24
|
+
generated_string = ParameterFactory.generate_parameter_string(nil,params_hash)
|
25
|
+
|
26
|
+
assert_true generated_string.include?("order_id=1")
|
27
|
+
assert_true generated_string.include?("name=s")
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/test/server_test.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
require File.join($PROJECT_ROOT, 'lib', 'server')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
ENV['RACK_ENV']='test'
|
5
|
+
|
6
|
+
class ServerTest < Test::Unit::TestCase
|
7
|
+
include Rack::Test::Methods
|
8
|
+
|
9
|
+
def app
|
10
|
+
Sinatra::Application
|
11
|
+
end
|
12
|
+
|
13
|
+
context "post /contract" do
|
14
|
+
should "return the pass attribute as false if the contract is not loaded" do
|
15
|
+
contract_name = "Do Not Exists"
|
16
|
+
file_name = "file_name"
|
17
|
+
Contracts.stubs(:load).with(ARGV[0]).returns(file_name)
|
18
|
+
Contracts.stubs(:is_empty?).returns(true)
|
19
|
+
output = "Contract Name is either nil or not valid."
|
20
|
+
response_json = '{"pass":"false","data":{}}'
|
21
|
+
|
22
|
+
post "/contract", params = {:contract_name => "Do Not Exists"}
|
23
|
+
|
24
|
+
assert last_response.ok?
|
25
|
+
assert_true last_response.body.include?("<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>")
|
26
|
+
|
27
|
+
end
|
28
|
+
should "return the pass attribute as false if the contract is loaded but requested contract is not valid" do
|
29
|
+
contract_name = "Do Not Exists"
|
30
|
+
file_name = "file_name"
|
31
|
+
Contracts.stubs(:load).with(ARGV[0]).returns(file_name)
|
32
|
+
Contracts.stubs(:is_empty?).returns(false)
|
33
|
+
Contracts.stubs(:contains?).with(contract_name).returns(false)
|
34
|
+
output = "Contract Name is either nil or not valid."
|
35
|
+
response_json = '{"pass":"false","data":{}}'
|
36
|
+
|
37
|
+
post "/contract", params = {:contract_name => "Do Not Exists"}
|
38
|
+
|
39
|
+
assert last_response.ok?
|
40
|
+
assert last_response.body.include?("<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>")
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
should "not return pass attribute as false if the specificed contract do not exist but CONTACT_MANGER is initialized" do
|
45
|
+
contract_name = "Do Not Exists"
|
46
|
+
file_name = "file_name"
|
47
|
+
Contracts.stubs(:load).with(ARGV[0]).returns(file_name)
|
48
|
+
Contracts.stubs(:contains?).with(contract_name).returns(false)
|
49
|
+
output = "Contract Name is either nil or not valid."
|
50
|
+
response_json = '{"pass":"false","data":{}}'
|
51
|
+
|
52
|
+
post "/contract", params = {:contract_name => "Do Not Exists"}
|
53
|
+
|
54
|
+
assert last_response.ok?
|
55
|
+
assert last_response.body.include?("<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>")
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
should "return the raw output from the executed contract" do
|
61
|
+
command = "a"
|
62
|
+
dir = "/taas/executiondir"
|
63
|
+
response_json = '{"pass":"true","data":{"params1":"value1","params2":"value2"}'
|
64
|
+
output = "All files and dir<TaaS Response Start>#{response_json}<TaaS Response Complete>"
|
65
|
+
contract_name = "Contract Exists"
|
66
|
+
params = {"contract_name" => contract_name}
|
67
|
+
contract = Contract.new({})
|
68
|
+
file_name = "file_name"
|
69
|
+
Contracts.stubs(:load).with(ARGV[0]).returns(file_name)
|
70
|
+
Contracts.stubs(:is_empty?).returns(false)
|
71
|
+
Contracts.stubs(:contains?).with(contract_name).returns(true)
|
72
|
+
Contracts.stubs(:get_contract).with(contract_name).returns(contract)
|
73
|
+
Contract.any_instance.stubs(:command).with(params).returns(command)
|
74
|
+
Contract.any_instance.stubs(:value_of).with("dir").returns(dir)
|
75
|
+
CommandExecuter.stubs(:execute_command).with(dir,command).returns(output)
|
76
|
+
OutputParser.stubs(:parse_taas_output).with(output).returns(response_json)
|
77
|
+
|
78
|
+
post "/contract", params
|
79
|
+
|
80
|
+
assert last_response.ok?
|
81
|
+
assert last_response.body.include?("<TaaS-Server-Response><Taas-Output>#{output}</TaaS-Output><TaaS-Json>#{response_json}</TaaS-Json></TaaS-Server-Response>")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
context "get /" do
|
87
|
+
|
88
|
+
should "display the table version of the loaded Contracts" do
|
89
|
+
contract_name = "Do Not Exists"
|
90
|
+
file_name = "file_name_get"
|
91
|
+
Contracts.stubs(:load).with(ARGV[0]).returns(file_name)
|
92
|
+
Contracts.stubs(:get_all_contracts).returns({"c1" => {"command" => "one","dir"=>"pwd"},"c2" => {"command" => "two","dir"=>"pwd1"} })
|
93
|
+
|
94
|
+
get "/"
|
95
|
+
|
96
|
+
assert last_response.ok?
|
97
|
+
assert_true last_response.body.include?("command")
|
98
|
+
assert_true last_response.body.include?("c1")
|
99
|
+
assert_true last_response.body.include?("one")
|
100
|
+
assert_true last_response.body.include?("pwd")
|
101
|
+
assert_true last_response.body.include?("pwd")
|
102
|
+
assert_true last_response.body.include?("c2")
|
103
|
+
assert_true last_response.body.include?("two")
|
104
|
+
assert_true last_response.body.include?("pwd1")
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.join($PROJECT_ROOT, 'lib', 'taas_client')
|
2
|
+
require File.join($PROJECT_ROOT, 'test',"test_helper")
|
3
|
+
|
4
|
+
|
5
|
+
class TaaSClientTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
context "execute_contract" do
|
8
|
+
setup do
|
9
|
+
@taas_client = TaaSClient.new("http://taas-url.com/")
|
10
|
+
@params = {:contract_name => "create_xyz", :params => {:params_one => "one", :params_n => "params n"}}
|
11
|
+
@response_json = '"pass":"true","data":{}'
|
12
|
+
@hash = {:pass => true, :data => {}}
|
13
|
+
@output="This is a Dummy Output"
|
14
|
+
@server_output = "<TaaS-Server-Response><Taas-Output>#{@output}</TaaS-Output><TaaS-Json>#{@response_json}</TaaS-Json></TaaS-Server-Response>"
|
15
|
+
end
|
16
|
+
should "return hash and command output of server if failed is false" do
|
17
|
+
@taas_client.stubs(:request_taas_server).with(@params).returns(@server_output)
|
18
|
+
OutputParser.stubs(:valid_server_response?).with(@server_output).returns(true)
|
19
|
+
values = lambda {return @output,@hash}
|
20
|
+
OutputParser.stubs(:parse_server_output).with(@server_output).returns(values.call)
|
21
|
+
|
22
|
+
command_output, response_hash = @taas_client.execute_contract(@params)
|
23
|
+
|
24
|
+
assert_equal command_output,@output
|
25
|
+
assert_equal response_hash, @hash
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
should "raise an error if validate_server returns false" do
|
30
|
+
@taas_client.stubs(:request_taas_server).with(@params).returns(@server_output)
|
31
|
+
OutputParser.stubs(:valid_server_response?).with(@server_output).returns(false)
|
32
|
+
|
33
|
+
assert_raise do
|
34
|
+
@taas_client.execute_contract(@params)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
context "request_taas_server" do
|
42
|
+
should "return the body of the taas server response" do
|
43
|
+
input_params = {:name => "taas"}
|
44
|
+
output_params = {"id"=>1, "json_response"=>{}}
|
45
|
+
taas_client = TaaSClient.new("http://localhost:4567/")
|
46
|
+
|
47
|
+
uri = URI.parse("http://localhost:4567/")
|
48
|
+
URI.stubs(:parse).with("http://localhost:4567/").returns(uri)
|
49
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
50
|
+
Net::HTTP.stubs(:new).with(uri.host,uri.port).returns(http)
|
51
|
+
stub_request = Net::HTTP::Post.new(uri.request_uri)
|
52
|
+
Net::HTTP::Post.stubs(:new).with(uri.request_uri).returns(stub_request)
|
53
|
+
stub_request.stubs(:set_form_data).with(input_params).returns(true)
|
54
|
+
stub_request.stubs(:read_timeout=).with(1000*10000).returns(true)
|
55
|
+
|
56
|
+
command_output = "This is command output"
|
57
|
+
response = "<Taas command output start>#{command_output}<Taas command output ends>{\"id\":1,\"json_response\":{}}"
|
58
|
+
http.stubs(:request).with(stub_request).returns(response)
|
59
|
+
response.stubs(:body).returns(response)
|
60
|
+
|
61
|
+
assert response,taas_client.request_taas_server(input_params)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,229 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: taas
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Anand Bagmar, Akash Mishra
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2013-04-03 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
+
none: false
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
hash: 3
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
requirement: *id001
|
31
|
+
prerelease: false
|
32
|
+
name: rake
|
33
|
+
type: :runtime
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
hash: 3
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
requirement: *id002
|
45
|
+
prerelease: false
|
46
|
+
name: sinatra
|
47
|
+
type: :runtime
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
requirement: *id003
|
59
|
+
prerelease: false
|
60
|
+
name: json
|
61
|
+
type: :runtime
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
requirement: *id004
|
73
|
+
prerelease: false
|
74
|
+
name: test-unit
|
75
|
+
type: :development
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirement: *id005
|
87
|
+
prerelease: false
|
88
|
+
name: mocha
|
89
|
+
type: :development
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
hash: 3
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
version: "0"
|
100
|
+
requirement: *id006
|
101
|
+
prerelease: false
|
102
|
+
name: shoulda
|
103
|
+
type: :development
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
requirement: *id007
|
115
|
+
prerelease: false
|
116
|
+
name: rack-test
|
117
|
+
type: :development
|
118
|
+
- !ruby/object:Gem::Dependency
|
119
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
hash: 3
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
128
|
+
requirement: *id008
|
129
|
+
prerelease: false
|
130
|
+
name: jeweler
|
131
|
+
type: :development
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
hash: 3
|
139
|
+
segments:
|
140
|
+
- 0
|
141
|
+
version: "0"
|
142
|
+
requirement: *id009
|
143
|
+
prerelease: false
|
144
|
+
name: pry
|
145
|
+
type: :development
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
hash: 3
|
153
|
+
segments:
|
154
|
+
- 0
|
155
|
+
version: "0"
|
156
|
+
requirement: *id010
|
157
|
+
prerelease: false
|
158
|
+
name: pry-nav
|
159
|
+
type: :development
|
160
|
+
description: "\"TaaS\" allows you to validate the integration across a variety of products via Test Automation - the \"correct\" way. TaaS uses a web service interface to run your end-2-end integration tests between two independent but related system. See the blog for more details: http://goo.gl/nVShb"
|
161
|
+
email:
|
162
|
+
- abagmar@gmail.com, akash.mishra20@gmail.com
|
163
|
+
executables: []
|
164
|
+
|
165
|
+
extensions: []
|
166
|
+
|
167
|
+
extra_rdoc_files:
|
168
|
+
- LICENSE.txt
|
169
|
+
- README.rdoc
|
170
|
+
files:
|
171
|
+
- Gemfile
|
172
|
+
- Gemfile.lock
|
173
|
+
- LICENSE.txt
|
174
|
+
- README.rdoc
|
175
|
+
- Rakefile
|
176
|
+
- VERSION
|
177
|
+
- lib/helper/command_executer.rb
|
178
|
+
- lib/helper/contract.rb
|
179
|
+
- lib/helper/contracts.rb
|
180
|
+
- lib/helper/output_parser.rb
|
181
|
+
- lib/helper/parameter_factory.rb
|
182
|
+
- lib/server.rb
|
183
|
+
- lib/taas.rb
|
184
|
+
- lib/taas/version.rb
|
185
|
+
- lib/taas_client.rb
|
186
|
+
- taas.gemspec
|
187
|
+
- test/helper/command_executer_test.rb
|
188
|
+
- test/helper/contract_test.rb
|
189
|
+
- test/helper/contracts_test.rb
|
190
|
+
- test/helper/output_parser_test.rb
|
191
|
+
- test/helper/parameter_factory_test.rb
|
192
|
+
- test/server_test.rb
|
193
|
+
- test/taas_client_test.rb
|
194
|
+
- test/test_helper.rb
|
195
|
+
homepage: http://github.com/anandbagmar/taas
|
196
|
+
licenses:
|
197
|
+
- Apache 2.0
|
198
|
+
post_install_message:
|
199
|
+
rdoc_options: []
|
200
|
+
|
201
|
+
require_paths:
|
202
|
+
- lib
|
203
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
hash: 3
|
209
|
+
segments:
|
210
|
+
- 0
|
211
|
+
version: "0"
|
212
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
|
+
none: false
|
214
|
+
requirements:
|
215
|
+
- - ">="
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
hash: 3
|
218
|
+
segments:
|
219
|
+
- 0
|
220
|
+
version: "0"
|
221
|
+
requirements: []
|
222
|
+
|
223
|
+
rubyforge_project: taas
|
224
|
+
rubygems_version: 1.8.24
|
225
|
+
signing_key:
|
226
|
+
specification_version: 3
|
227
|
+
summary: TaaS
|
228
|
+
test_files: []
|
229
|
+
|