Ifd_Automation 2.2 → 2.3
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 +4 -4
- data/lib/Ifd_Automation/REST_steps.rb +66 -81
- data/lib/Ifd_Automation/SOAP_steps.rb +18 -4
- data/lib/Ifd_Automation/dynamic_store_vavue_steps.rb +1 -1
- data/lib/Ifd_Automation/version.rb +1 -1
- data/lib/helper/core.rb +8 -4
- data/project/features/step_definitions/lib_steps/test.rb +2 -2
- data/project/features/support/env.rb +4 -1
- data/project/features/support/hooks.rb +13 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53904b49fcb6b5c053dea1040b8aa2c48e110be7
|
4
|
+
data.tar.gz: cc7f0b2f3a1f8dec98bab1dcdf9b40bcd998de3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 417b97c43287525ac30ef2ac0bf2da2161cd9d62452ebbc62fe38a292754f00a89e121f21b8a40f3ed90b94ab345e63d67689394b39555e88d8b8671cefb532e
|
7
|
+
data.tar.gz: d5144b28aa8e82422525dc49092ed265582d47cf129842aede166a68f1a46f1603d7b758c1559768cb7b561def11773ab5aea86a4a154cf7fc1e261454a573e3
|
@@ -1,105 +1,90 @@
|
|
1
1
|
require_relative 'require_libs'
|
2
2
|
require 'httparty'
|
3
|
-
|
4
|
-
url = check_dynamic_value(url)
|
5
|
-
puts "\n REST url: #{url}"
|
6
|
-
$RESTresult = HTTParty.get url, timeout: 180_000
|
7
|
-
end
|
8
|
-
|
9
|
-
When /^I send a REST POST request to "([^"]*)"$/ do |url|
|
10
|
-
url = check_dynamic_value(url)
|
11
|
-
puts "\n url: #{url}"
|
12
|
-
$RESTresult = HTTParty.post url, timeout: 180_000
|
13
|
-
end
|
14
|
-
|
15
|
-
When /^I send a REST POST request to "(.*?)" with file "(.*?)"$/ do |url, file|
|
16
|
-
url = check_dynamic_value(url)
|
17
|
-
file = bind_with_dyn_vars(file)
|
18
|
-
puts "\n POST url: #{url}"
|
19
|
-
data = File.read($test_data_dir + file)
|
20
|
-
$RESTresult = HTTParty.post url, {:body => data, :timeout => 180000}
|
21
|
-
# puts $result.response.body.to_s
|
22
|
-
end
|
3
|
+
require 'jsonpath'
|
23
4
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# puts $result.response.body.to_s
|
29
|
-
end
|
30
|
-
|
31
|
-
When /^I send a REST PUT request to "(.*?)" with file "(.*?)"$/ do |url, file|
|
32
|
-
url = check_dynamic_value(url)
|
33
|
-
file = bind_with_dyn_vars(file)
|
34
|
-
puts "\n url: #{url}"
|
35
|
-
data = File.read($test_data_dir + file)
|
36
|
-
$RESTresult = HTTParty.put url, body: data, timeout: 180_000
|
37
|
-
# puts $result.response.body.to_s
|
38
|
-
end
|
5
|
+
Given /^I set headers:$/ do |data|
|
6
|
+
unless data.hashes.empty?
|
7
|
+
data = data.hashes[0]
|
8
|
+
data = JSON.parse(data) unless data.is_a? Hash
|
39
9
|
|
40
|
-
|
41
|
-
|
10
|
+
data.each_pair do |k, v|
|
11
|
+
data[k] = check_dynamic_value(v)
|
12
|
+
end
|
13
|
+
@header = data
|
14
|
+
end
|
15
|
+
p "HEADER: #{@header}"
|
42
16
|
end
|
43
17
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
data[k] = bind_with_dyn_vars(v)
|
18
|
+
When /^I send a REST (GET|PUT|POST|DELETE) request (?:for|to) "([^"]*)"(?: with the following:)?$/ do |*args|
|
19
|
+
request_type = args.shift.downcase
|
20
|
+
url = check_dynamic_value(args.shift)
|
21
|
+
put_log "Request URL: #{url}"
|
22
|
+
json_payload = args.shift
|
23
|
+
if json_payload
|
24
|
+
payload = Hash.new
|
25
|
+
JSON.parse(json_payload).each do |k1, v1|
|
26
|
+
payload[check_dynamic_value(k1)] = check_dynamic_value(v1)
|
27
|
+
end
|
28
|
+
payload = payload.to_json
|
56
29
|
end
|
30
|
+
put_log "Data Body from #{request_type} method: #{payload}"
|
57
31
|
|
58
|
-
|
32
|
+
if (payload.nil? && request_type == 'get' && @header.nil?)
|
33
|
+
@response = Request.get(url)
|
34
|
+
elsif (payload.nil? && request_type == 'get')
|
35
|
+
@response = Request.get(url, {headers: @header})
|
36
|
+
elsif (payload.nil? && request_type == 'delete' && @header.nil?)
|
37
|
+
@response = Request.delete(url)
|
38
|
+
elsif (payload.nil? && request_type == 'delete')
|
39
|
+
@response = Request.delete(url, {headers: @header})
|
40
|
+
elsif (payload && request_type == 'get' && @header.nil?)
|
41
|
+
@response = Request.get(url, {body: payload})
|
42
|
+
elsif (payload && request_type == 'get')
|
43
|
+
@response = Request.get(url, {body: payload, headers: @header})
|
44
|
+
elsif (payload && request_type == 'post' && @header.nil?)
|
45
|
+
@response = Request.get(url, {body: payload})
|
46
|
+
elsif (payload && request_type == 'post')
|
47
|
+
@response = Request.post(url, {body: payload, headers: @header})
|
48
|
+
elsif (payload && request_type == 'put' && @header.nil?)
|
49
|
+
@response = Request.put(url, {body: payload})
|
50
|
+
elsif (payload && request_type == 'put')
|
51
|
+
@response = Request.put(url, {body: payload, headers: @header})
|
52
|
+
end
|
59
53
|
end
|
60
54
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
$RESTresult = HTTParty.delete url, timeout: 180_000
|
65
|
-
# puts $result.response.body.to_s
|
55
|
+
Then /^I store the REST result at node "(.*)" as "(.*)"$/ do |json_path, var_name|
|
56
|
+
$context_value = JsonPath.new(json_path).on(@response.body).to_a.map(&:to_s)[0]
|
57
|
+
set_var(var_name, '$context_value')
|
66
58
|
end
|
67
59
|
|
68
|
-
|
69
|
-
|
60
|
+
When /^I print the result of REST request$/ do
|
61
|
+
puts "REST RESULT code: #{getRestResult.code}"
|
62
|
+
puts "REST RESULT body: #{getRestResult.body}"
|
70
63
|
end
|
71
64
|
|
72
65
|
Then /^I should see REST response code "([^"]*)"$/ do |code|
|
73
|
-
|
66
|
+
Assertion.assert_string_equal(code, getRestResult.code.to_s)
|
74
67
|
end
|
75
68
|
|
76
|
-
# Example
|
77
|
-
# Then the JSON response should be:
|
78
|
-
# """
|
79
|
-
# {
|
80
|
-
# "test" : "anh pham"
|
81
|
-
# }
|
82
|
-
# """
|
83
69
|
Then /^the JSON response should be:$/ do |json|
|
84
|
-
|
85
|
-
|
70
|
+
Assertion.assert_string_equal(json, getRestResult.body.to_s)
|
71
|
+
end
|
86
72
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
# assert_equal actual, response
|
93
|
-
end
|
73
|
+
# Example
|
74
|
+
# Then the JSON response at node "$..id" should have "1"
|
75
|
+
Then /^the JSON response at node "(.*)" should have "(.*)"$/ do |json_path, expected|
|
76
|
+
result = JsonPath.new(json_path).on(getRestResult.body).to_a.map(&:to_s)
|
77
|
+
Assertion.assert_string_equal(expected, result[0])
|
94
78
|
end
|
95
79
|
|
80
|
+
class Request
|
81
|
+
include HTTParty
|
82
|
+
default_options.update(verify: false)
|
83
|
+
end
|
96
84
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
json = JSON.parse($RESTresult.body)
|
101
|
-
results = JsonPath.new(json_path).on(json).to_a.map(&:to_s)
|
102
|
-
if self.respond_to?(:expect)
|
103
|
-
expect(results).not_to be_empty
|
85
|
+
def getRestResult
|
86
|
+
if @response.nil?
|
87
|
+
p "WARNING***: MISSING STEPS: Please send a REST request to get response first."
|
104
88
|
end
|
89
|
+
@response
|
105
90
|
end
|
@@ -31,24 +31,38 @@ When /^I send SOAP request with operation name "(.*)" and following data:$/ do |
|
|
31
31
|
end
|
32
32
|
|
33
33
|
Then /^the status code should be "(.*)"$/ do |status|
|
34
|
-
Assertion.assert_string_equal(
|
34
|
+
Assertion.assert_string_equal(get_soap_response.http.code, status.to_i)
|
35
35
|
end
|
36
36
|
|
37
37
|
|
38
38
|
# Example
|
39
39
|
# Then the SOAP response node should have "$..response_text" with text "Email Domain Not Found"
|
40
40
|
Then /^the SOAP response node should have "(.*?)" with text "(.*?)"$/ do |json_path, text|
|
41
|
-
json =
|
41
|
+
json = get_soap_response.body.to_json
|
42
42
|
results = JsonPath.new(json_path).on(json).to_a.map(&:to_s)
|
43
43
|
Assertion.assert_string_equal(text, results[0])
|
44
44
|
end
|
45
45
|
|
46
46
|
Then /^I print the SOAP response$/ do
|
47
|
-
p "SOAP RESPONSE: #{
|
47
|
+
p "SOAP RESPONSE: #{get_soap_response}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_soap_response
|
51
|
+
soap_response = @response
|
52
|
+
if soap_response.nil?
|
53
|
+
raise "ERROR***: MISSING STEPS: Please send SOAP request to get the response first."
|
54
|
+
else
|
55
|
+
soap_response
|
56
|
+
end
|
57
|
+
soap_response
|
48
58
|
end
|
49
59
|
|
50
60
|
def call_and_fail_gracefully(client, *args, &block)
|
51
|
-
client.
|
61
|
+
if client.nil?
|
62
|
+
raise "ERROR***: MISSING STEPS: Please run step to get operation list from WSDL first."
|
63
|
+
else
|
64
|
+
client.call(*args, &block)
|
65
|
+
end
|
52
66
|
rescue Savon::SOAPFault => e
|
53
67
|
puts e.message
|
54
68
|
end
|
data/lib/helper/core.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
def check_dynamic_value value
|
2
|
-
if value.
|
3
|
-
|
2
|
+
if !value.is_a? Fixnum
|
3
|
+
if value.include? "params="
|
4
|
+
resolve_params value
|
5
|
+
else
|
6
|
+
bind_with_dyn_vars value
|
7
|
+
end
|
4
8
|
else
|
5
|
-
|
9
|
+
value
|
6
10
|
end
|
7
11
|
end
|
8
12
|
|
@@ -23,7 +27,7 @@ end
|
|
23
27
|
|
24
28
|
#Print script log to console
|
25
29
|
def put_log str
|
26
|
-
|
30
|
+
p str if $_CFWEB['Print Log'] == true
|
27
31
|
end
|
28
32
|
|
29
33
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Given "I login to the page {string} with username {string} and password {string}" do |string, string2, string3|
|
2
2
|
steps %Q{
|
3
|
-
|
4
|
-
|
3
|
+
* I am on the "#{string}" page
|
4
|
+
* I click on "header.button_cookie"
|
5
5
|
* I click on "header.button_login"
|
6
6
|
* I set text on "login.textbox_username" with "#{string2}"
|
7
7
|
* I set text on "login.textbox_password" with "#{string3}"
|
@@ -12,8 +12,11 @@ require 'capybara/cucumber'
|
|
12
12
|
require 'cucumber'
|
13
13
|
require 'yaml'
|
14
14
|
require 'selenium-webdriver'
|
15
|
-
require 'Ifd_Automation'
|
15
|
+
# require 'Ifd_Automation'
|
16
16
|
|
17
|
+
require File.expand_path('../lib/Ifd_Automation/REST_steps.rb')
|
18
|
+
require File.expand_path('../lib/Ifd_Automation/dynamic_store_vavue_steps.rb')
|
19
|
+
require File.expand_path('../lib/Ifd_Automation/web_steps.rb')
|
17
20
|
|
18
21
|
if ENV["browser"].nil?
|
19
22
|
raise "ERROR***: MISSING BROWSER... Supported Browsers: Chrome/Firefox."
|
@@ -34,19 +34,19 @@ Before do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
After do |scenario|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
at_exit do
|
49
|
-
end
|
37
|
+
# After do |scenario|
|
38
|
+
# file_name = 'failed_%s.png' % rand(1000).to_s
|
39
|
+
# page.save_screenshot($screenshot+file_name) if scenario.failed?
|
40
|
+
# begin
|
41
|
+
# Capybara.page.driver.quit
|
42
|
+
# Capybara.send(:session_pool).delete_if { |key, value| key =~ /selenium/i }
|
43
|
+
# rescue StandardError => myStandardError
|
44
|
+
# put_log "\n>>> Error: #{myStandardError}"
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
#
|
48
|
+
# at_exit do
|
49
|
+
# end
|
50
50
|
|
51
51
|
AfterConfiguration do |config|
|
52
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Ifd_Automation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '2.
|
4
|
+
version: '2.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anh Pham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|