webspicy 0.20.8 → 0.20.13
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/webspicy/configuration/scope.rb +1 -1
- data/lib/webspicy/specification.rb +5 -1
- data/lib/webspicy/tester.rb +2 -0
- data/lib/webspicy/tester/fakesendgrid.rb +39 -0
- data/lib/webspicy/tester/fakesendgrid/email.rb +31 -0
- data/lib/webspicy/tester/fakeses/email.rb +6 -3
- data/lib/webspicy/tester/reporter.rb +1 -0
- data/lib/webspicy/tester/reporter/exceptions.rb +3 -1
- data/lib/webspicy/tester/reporter/junit_xml_file.rb +151 -0
- data/lib/webspicy/tester/reporter/progress.rb +1 -1
- data/lib/webspicy/tester/reporter/summary.rb +1 -1
- data/lib/webspicy/tester/result.rb +1 -0
- data/lib/webspicy/version.rb +1 -1
- data/lib/webspicy/web/specification.rb +1 -1
- data/spec/unit/configuration/scope/test_each_specification.rb +2 -2
- data/spec/unit/tester/fakesendgrid/test_email.rb +51 -0
- data/spec/unit/tester/fakeses/test_email.rb +21 -4
- data/spec/unit/tester/fakesmtp/test_email.rb +2 -2
- data/tasks/test.rake +5 -1
- metadata +34 -20
- data/bin/sandr +0 -14
- data/bin/search +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01b2fecc83c9d660dc6eba242b306e965196a6ecf9ad12b9b0e5929d9394e1ab
|
4
|
+
data.tar.gz: 16e008749db41f89755e9c0cc65457e438383044aaf54c6e171fc565b2da8ba0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f7a18cbbfead965fefc954c07ea8ebb2d91e60cfd0e72c2658ec5e7c5c1425b6d9f0c8e2d3c09e7b3399697ab299c36f9873e1837422f785e96e1a298cccfaa
|
7
|
+
data.tar.gz: 12377e4af44a7b6d65c6daf3c83a41d1201ec3deab8922343b25f8f6483f07fb997dca45ed6e3fbc243c5f869c915642a7e6a867bf90dc0e5f8bae5fda7fb726
|
@@ -22,7 +22,7 @@ module Webspicy
|
|
22
22
|
def _each_specification_file(config, apply_filter = true)
|
23
23
|
folder = config.folder
|
24
24
|
world = config.folder/"world"
|
25
|
-
fs = folder.glob("**/*.yml").reject{|f| f.to_s.start_with?(world.to_s) }
|
25
|
+
fs = folder.glob("**/*.{yml, yaml}").reject{|f| f.to_s.start_with?(world.to_s) }
|
26
26
|
fs = fs.sort
|
27
27
|
fs = fs.select(&to_filter_proc(config.file_filter)) if apply_filter
|
28
28
|
fs.each do |file|
|
@@ -14,6 +14,10 @@ module Webspicy
|
|
14
14
|
@location = Path(location)
|
15
15
|
end
|
16
16
|
|
17
|
+
def relative_location
|
18
|
+
@location && @location.relative_to(config.folder)
|
19
|
+
end
|
20
|
+
|
17
21
|
def locate(relative_path)
|
18
22
|
file = @location.parent/relative_path
|
19
23
|
raise "File not found: #{file}" unless file.exists?
|
@@ -21,7 +25,7 @@ module Webspicy
|
|
21
25
|
end
|
22
26
|
|
23
27
|
def name
|
24
|
-
@raw[:name]
|
28
|
+
@raw[:name] || relative_location || "Unnamed"
|
25
29
|
end
|
26
30
|
|
27
31
|
def services
|
data/lib/webspicy/tester.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Webspicy
|
2
|
+
class Tester
|
3
|
+
class Fakesendgrid
|
4
|
+
include Webspicy::Support::World::Item
|
5
|
+
|
6
|
+
DEFAULT_OPTIONS = {
|
7
|
+
endpoint: "http://fakesendgrid"
|
8
|
+
}
|
9
|
+
|
10
|
+
def initialize(options = {})
|
11
|
+
@options = DEFAULT_OPTIONS.merge(options)
|
12
|
+
end
|
13
|
+
attr_reader :options
|
14
|
+
|
15
|
+
def endpoint
|
16
|
+
options[:endpoint]
|
17
|
+
end
|
18
|
+
|
19
|
+
def clear!
|
20
|
+
res = HTTP.delete("#{endpoint}/api/mails")
|
21
|
+
end
|
22
|
+
|
23
|
+
def emails
|
24
|
+
res = HTTP.get("#{endpoint}/api/mails")
|
25
|
+
JSON.parse(res.body).map{|data| Email.new(data) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def emails_count
|
29
|
+
emails.length
|
30
|
+
end
|
31
|
+
|
32
|
+
def last_email
|
33
|
+
emails.first
|
34
|
+
end
|
35
|
+
|
36
|
+
end # class Fakesendgrid
|
37
|
+
end # class Tester
|
38
|
+
end # module Webspicy
|
39
|
+
require_relative 'fakesendgrid/email'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Webspicy
|
2
|
+
class Tester
|
3
|
+
class Fakesendgrid
|
4
|
+
class Email
|
5
|
+
|
6
|
+
def initialize(data)
|
7
|
+
@data = data
|
8
|
+
end
|
9
|
+
attr_reader :data
|
10
|
+
|
11
|
+
def from
|
12
|
+
@from ||= data['from']['name'] ?
|
13
|
+
"#{data['from']['name']} <#{data['from']['email']}>" :
|
14
|
+
data['from']['email']
|
15
|
+
end
|
16
|
+
|
17
|
+
def to
|
18
|
+
@to ||= data["personalizations"]
|
19
|
+
.select{|h| h.key? "to" }
|
20
|
+
.map{|(h)| h["to"] }
|
21
|
+
.map{|(h)| h["email"] }
|
22
|
+
end
|
23
|
+
|
24
|
+
def subject
|
25
|
+
@subject ||= data["subject"]
|
26
|
+
end
|
27
|
+
|
28
|
+
end # class Email
|
29
|
+
end # class Fakesendgrid
|
30
|
+
end # class Tester
|
31
|
+
end # module Webspicy
|
@@ -9,7 +9,10 @@ module Webspicy
|
|
9
9
|
attr_reader :data
|
10
10
|
|
11
11
|
def from
|
12
|
-
|
12
|
+
rx = /^From:\s*(.*)$/
|
13
|
+
raw_data
|
14
|
+
.each_line
|
15
|
+
.find{|l| l =~ rx }[rx, 1].strip
|
13
16
|
end
|
14
17
|
|
15
18
|
def to
|
@@ -18,14 +21,14 @@ module Webspicy
|
|
18
21
|
.select{|(k,v)|
|
19
22
|
k =~ /Destinations.member/
|
20
23
|
}
|
21
|
-
.map{|(k,v)| v }
|
24
|
+
.map{|(k,v)| v.strip }
|
22
25
|
end
|
23
26
|
|
24
27
|
def subject
|
25
28
|
rx = /^Subject:\s*(.*)$/
|
26
29
|
raw_data
|
27
30
|
.each_line
|
28
|
-
.find{|l| l =~ rx }[rx, 1]
|
31
|
+
.find{|l| l =~ rx }[rx, 1].strip
|
29
32
|
end
|
30
33
|
|
31
34
|
def raw_data
|
@@ -15,7 +15,7 @@ module Webspicy
|
|
15
15
|
@spec_file_errors << spec_file_error_line(spec_file, e)
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def test_case_done
|
19
19
|
@failed_results << result unless result.success?
|
20
20
|
end
|
21
21
|
|
@@ -24,6 +24,8 @@ module Webspicy
|
|
24
24
|
report_failed_results
|
25
25
|
end
|
26
26
|
|
27
|
+
private
|
28
|
+
|
27
29
|
def report_spec_file_errors
|
28
30
|
return if spec_file_errors.empty?
|
29
31
|
io.puts
|
@@ -0,0 +1,151 @@
|
|
1
|
+
module Webspicy
|
2
|
+
class Tester
|
3
|
+
class Reporter
|
4
|
+
class JunitXmlFile < Reporter
|
5
|
+
|
6
|
+
TPL = <<~XML
|
7
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
8
|
+
<testsuites
|
9
|
+
disabled="{{counts.disabled}}"
|
10
|
+
errors="{{counts.errors}}"
|
11
|
+
failures="{{counts.failures}}"
|
12
|
+
tests="{{counts.total}}"
|
13
|
+
time="{{time}}s"
|
14
|
+
>
|
15
|
+
{{#testsuites}}
|
16
|
+
<testsuite
|
17
|
+
name="{{name}}"
|
18
|
+
tests="{{counts.total}}"
|
19
|
+
errors="{{counts.errors}}"
|
20
|
+
failures="{{counts.failures}}"
|
21
|
+
time="{{time}}s"
|
22
|
+
>
|
23
|
+
{{#testcases}}
|
24
|
+
<testcase
|
25
|
+
name="{{name}}"
|
26
|
+
assertions="{{assert}}"
|
27
|
+
classname="{{classname}}"
|
28
|
+
status=""
|
29
|
+
time="{{time}}s"
|
30
|
+
>
|
31
|
+
{{#errors}}
|
32
|
+
<error
|
33
|
+
message="{{message}}"
|
34
|
+
type="{{type}}"
|
35
|
+
></error>
|
36
|
+
{{/errors}}
|
37
|
+
{{#failures}}
|
38
|
+
<failure
|
39
|
+
message="{{message}}"
|
40
|
+
type="{{type}}"
|
41
|
+
></failure>
|
42
|
+
{{/failures}}
|
43
|
+
</testcase>
|
44
|
+
{{/testcases}}
|
45
|
+
</testsuite>
|
46
|
+
{{/testsuites}}
|
47
|
+
</testsuites>
|
48
|
+
XML
|
49
|
+
|
50
|
+
def initialize(path_or_io = STDOUT)
|
51
|
+
@path_or_io = path_or_io
|
52
|
+
path_or_io.parent.mkdir_p if path_or_io.is_a?(Path)
|
53
|
+
end
|
54
|
+
|
55
|
+
attr_reader :template_data, :timer_all, :timer_specification, :timer_testcase
|
56
|
+
|
57
|
+
def before_all
|
58
|
+
@timer_all = Time.now
|
59
|
+
@template_data = OpenStruct.new({
|
60
|
+
counts: Hash.new{|h,k| h[k] = 0 },
|
61
|
+
testsuites: []
|
62
|
+
})
|
63
|
+
end
|
64
|
+
|
65
|
+
def after_all
|
66
|
+
template_data.time = Time.now - timer_all
|
67
|
+
end
|
68
|
+
|
69
|
+
def before_specification
|
70
|
+
@timer_specification = Time.now
|
71
|
+
template_data.testsuites << OpenStruct.new({
|
72
|
+
:name => specification.name,
|
73
|
+
:counts => Hash.new{|h,k| h[k] = 0 },
|
74
|
+
:testcases => []
|
75
|
+
})
|
76
|
+
end
|
77
|
+
|
78
|
+
def specification_done
|
79
|
+
template_data.testsuites[-1].time = Time.now - timer_specification
|
80
|
+
end
|
81
|
+
|
82
|
+
def spec_file_error(e)
|
83
|
+
template_data.testsuites[-1].testcases << OpenStruct.new({
|
84
|
+
:name => "Specification can be loaded",
|
85
|
+
:assert => 1,
|
86
|
+
:classname => "Webspicy.Specification",
|
87
|
+
:failures => [],
|
88
|
+
:errors => [OpenStruct.new({
|
89
|
+
:type => e.class,
|
90
|
+
:message => e.message
|
91
|
+
})]
|
92
|
+
})
|
93
|
+
end
|
94
|
+
|
95
|
+
def before_test_case
|
96
|
+
@timer_testcase = Time.now
|
97
|
+
template_data.testsuites[-1].testcases << OpenStruct.new({
|
98
|
+
:name => test_case.description,
|
99
|
+
:assert => test_case.assert.length,
|
100
|
+
:classname => test_case.class.name.to_s.gsub(/::/, "."),
|
101
|
+
:failures => [],
|
102
|
+
:errors => [],
|
103
|
+
})
|
104
|
+
template_data.counts[:total] += 1
|
105
|
+
template_data.testsuites[-1].counts[:total] += 1
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_case_done
|
109
|
+
template_data.testsuites[-1].testcases[-1].time = Time.now - timer_testcase
|
110
|
+
end
|
111
|
+
|
112
|
+
def check_failure(check, ex)
|
113
|
+
template_data.testsuites[-1].testcases[-1].failures << OpenStruct.new({
|
114
|
+
:type => check.class.name,
|
115
|
+
:message => ex.message
|
116
|
+
})
|
117
|
+
template_data.counts[:failures] += 1
|
118
|
+
template_data.testsuites[-1].counts[:failures] += 1
|
119
|
+
end
|
120
|
+
|
121
|
+
def check_error(check, ex)
|
122
|
+
template_data.testsuites[-1].testcases[-1].errors << OpenStruct.new({
|
123
|
+
:type => check.class.name,
|
124
|
+
:message => ex.message
|
125
|
+
})
|
126
|
+
template_data.counts[:errors] += 1
|
127
|
+
template_data.testsuites[-1].counts[:errors] += 1
|
128
|
+
end
|
129
|
+
|
130
|
+
def report
|
131
|
+
require 'mustache'
|
132
|
+
with_io do |io|
|
133
|
+
io << Mustache.render(TPL, template_data)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
private
|
138
|
+
|
139
|
+
def with_io(&bl)
|
140
|
+
case io = @path_or_io
|
141
|
+
when IO, StringIO
|
142
|
+
bl.call(io)
|
143
|
+
else
|
144
|
+
Path(io).open('w', &bl)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
end # class JunitXmlFile
|
149
|
+
end # class Reporter
|
150
|
+
end # class Tester
|
151
|
+
end # module Webspicy
|
data/lib/webspicy/version.rb
CHANGED
@@ -18,7 +18,7 @@ module Webspicy
|
|
18
18
|
}
|
19
19
|
|
20
20
|
it 'returns all files' do
|
21
|
-
expect(subject.size).to eql(restful_folder.glob('**/*.yml').size)
|
21
|
+
expect(subject.size).to eql(restful_folder.glob('**/*.{yml, yaml}').size)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -59,7 +59,7 @@ module Webspicy
|
|
59
59
|
}
|
60
60
|
|
61
61
|
it 'returns all files' do
|
62
|
-
expect(subject.size).to eql(restful_folder.glob('**/*.yml').size)
|
62
|
+
expect(subject.size).to eql(restful_folder.glob('**/*.{yml, yaml}').size)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'webspicy/tester/fakesendgrid'
|
3
|
+
module Webspicy
|
4
|
+
class Tester
|
5
|
+
class Fakesendgrid
|
6
|
+
describe Email do
|
7
|
+
|
8
|
+
DATA = JSON.parse <<~J
|
9
|
+
{
|
10
|
+
"datetime": "2021-06-02T15:29:27.161Z",
|
11
|
+
"from": {
|
12
|
+
"email": "info@mydomain.be",
|
13
|
+
"name": "Foo Bar"
|
14
|
+
},
|
15
|
+
"subject": "Hello World",
|
16
|
+
"personalizations": [
|
17
|
+
{
|
18
|
+
"to": [
|
19
|
+
{
|
20
|
+
"email": "support@mydomain.fr"
|
21
|
+
}
|
22
|
+
]
|
23
|
+
}
|
24
|
+
],
|
25
|
+
"content": [
|
26
|
+
{
|
27
|
+
"value": "test",
|
28
|
+
"type": "text/plain"
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"value": "test <b>test</b> test",
|
32
|
+
"type": "text/html"
|
33
|
+
}
|
34
|
+
]
|
35
|
+
}
|
36
|
+
J
|
37
|
+
|
38
|
+
subject{
|
39
|
+
Email.new(DATA)
|
40
|
+
}
|
41
|
+
|
42
|
+
it 'works as expected' do
|
43
|
+
expect(subject.from).to eql("Foo Bar <info@mydomain.be>")
|
44
|
+
expect(subject.to).to eql(["support@mydomain.fr"])
|
45
|
+
expect(subject.subject).to eql("Hello World")
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -6,9 +6,26 @@ module Webspicy
|
|
6
6
|
describe Email do
|
7
7
|
|
8
8
|
DATA = Base64.encode64 <<~J
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Content-Type: multipart/alternative;
|
10
|
+
boundary="--_NmP-d246fd025a6652c9-Part_1"
|
11
|
+
From: Webspicy <noreply@webspicy.io>
|
12
|
+
To: david.parloir@gmail.com
|
13
|
+
Subject: Hey world, hello!
|
14
|
+
Message-ID: <2421bae3-9c42-7988-23b4-b1f6168130c9@webspicy.io>
|
15
|
+
Date: Thu, 24 Jun 2021 13:45:16 +0000
|
16
|
+
MIME-Version: 1.0
|
17
|
+
|
18
|
+
----_NmP-d246fd025a6652c9-Part_1
|
19
|
+
Content-Type: text/plain; charset=utf-8
|
20
|
+
Content-Transfer-Encoding: 7bit
|
21
|
+
|
22
|
+
Hello world, in a text version
|
23
|
+
----_NmP-d246fd025a6652c9-Part_1
|
24
|
+
Content-Type: text/html; charset=utf-8
|
25
|
+
Content-Transfer-Encoding: 7bit
|
26
|
+
|
27
|
+
Hello world, in an html version
|
28
|
+
----_NmP-d246fd025a6652c9-Part_1--
|
12
29
|
J
|
13
30
|
|
14
31
|
DATA = JSON.parse <<~J
|
@@ -29,7 +46,7 @@ module Webspicy
|
|
29
46
|
}
|
30
47
|
|
31
48
|
it 'works as expected' do
|
32
|
-
expect(subject.from).to eql("noreply@webspicy.io")
|
49
|
+
expect(subject.from).to eql("Webspicy <noreply@webspicy.io>")
|
33
50
|
expect(subject.to).to eql(["someone@world.com"])
|
34
51
|
expect(subject.subject).to eql("Hey world, hello!")
|
35
52
|
end
|
@@ -15,7 +15,7 @@ module Webspicy
|
|
15
15
|
},
|
16
16
|
{
|
17
17
|
"key": "from",
|
18
|
-
"line": "From:
|
18
|
+
"line": "From: Webspicy <noreply@webspicy.io>"
|
19
19
|
},
|
20
20
|
{
|
21
21
|
"key": "reply-to",
|
@@ -82,7 +82,7 @@ module Webspicy
|
|
82
82
|
}
|
83
83
|
|
84
84
|
it 'works as expected' do
|
85
|
-
expect(subject.from).to eql("
|
85
|
+
expect(subject.from).to eql("Webspicy <noreply@webspicy.io>")
|
86
86
|
expect(subject.to).to eql(["support@mydomain.fr"])
|
87
87
|
expect(subject.subject).to eql("Hello World")
|
88
88
|
end
|
data/tasks/test.rake
CHANGED
@@ -5,8 +5,12 @@ namespace :test do
|
|
5
5
|
|
6
6
|
desc "Runs unit tests on the library itself"
|
7
7
|
RSpec::Core::RakeTask.new(:unit) do |t|
|
8
|
+
require 'path'
|
9
|
+
root_folder = Path.dir.parent
|
10
|
+
test_results = root_folder/"test-results"
|
11
|
+
puts (test_results/"unit-tests.xml").inspect
|
8
12
|
t.pattern = "spec/unit/**/test_*.rb"
|
9
|
-
t.rspec_opts = ["-Ilib", "-Ispec/unit", "--color", "--backtrace", "--format=progress"]
|
13
|
+
t.rspec_opts = ["-Ilib", "-Ispec/unit", "--color", "--backtrace", "--format=progress", "--format RspecJunitFormatter", "--out #{test_results}/unit-tests.xml"]
|
10
14
|
end
|
11
15
|
tests << :unit
|
12
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webspicy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernard Lambeau
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -98,16 +98,16 @@ dependencies:
|
|
98
98
|
name: http
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 4.4.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 4.4.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: path
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,22 +126,22 @@ dependencies:
|
|
126
126
|
name: rack-robustness
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 1.1.0
|
132
129
|
- - "~>"
|
133
130
|
- !ruby/object:Gem::Version
|
134
131
|
version: '1.1'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 1.1.0
|
135
135
|
type: :runtime
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- - ">="
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: 1.1.0
|
142
139
|
- - "~>"
|
143
140
|
- !ruby/object:Gem::Version
|
144
141
|
version: '1.1'
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 1.1.0
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: mustermann
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,11 +198,23 @@ dependencies:
|
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
200
|
version: 0.8.2
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: mustache
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '1.0'
|
208
|
+
type: :runtime
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '1.0'
|
201
215
|
description: Webspicy helps testing web services as software operation black boxes
|
202
216
|
email: blambeau@gmail.com
|
203
217
|
executables:
|
204
|
-
- sandr
|
205
|
-
- search
|
206
218
|
- webspicy
|
207
219
|
extensions: []
|
208
220
|
extra_rdoc_files: []
|
@@ -210,8 +222,6 @@ files:
|
|
210
222
|
- Gemfile
|
211
223
|
- README.md
|
212
224
|
- Rakefile
|
213
|
-
- bin/sandr
|
214
|
-
- bin/search
|
215
225
|
- bin/webspicy
|
216
226
|
- doc/1-black-box-scene.md
|
217
227
|
- doc/2-black-box-testing.md
|
@@ -251,6 +261,8 @@ files:
|
|
251
261
|
- lib/webspicy/tester/assertions.rb
|
252
262
|
- lib/webspicy/tester/client.rb
|
253
263
|
- lib/webspicy/tester/failure.rb
|
264
|
+
- lib/webspicy/tester/fakesendgrid.rb
|
265
|
+
- lib/webspicy/tester/fakesendgrid/email.rb
|
254
266
|
- lib/webspicy/tester/fakeses.rb
|
255
267
|
- lib/webspicy/tester/fakeses/email.rb
|
256
268
|
- lib/webspicy/tester/fakesmtp.rb
|
@@ -263,6 +275,7 @@ files:
|
|
263
275
|
- lib/webspicy/tester/reporter/exceptions.rb
|
264
276
|
- lib/webspicy/tester/reporter/file_progress.rb
|
265
277
|
- lib/webspicy/tester/reporter/file_summary.rb
|
278
|
+
- lib/webspicy/tester/reporter/junit_xml_file.rb
|
266
279
|
- lib/webspicy/tester/reporter/progress.rb
|
267
280
|
- lib/webspicy/tester/reporter/success_or_not.rb
|
268
281
|
- lib/webspicy/tester/reporter/summary.rb
|
@@ -312,6 +325,7 @@ files:
|
|
312
325
|
- spec/unit/support/world/fixtures/yaml.yml
|
313
326
|
- spec/unit/support/world/test_world.rb
|
314
327
|
- spec/unit/test_configuration.rb
|
328
|
+
- spec/unit/tester/fakesendgrid/test_email.rb
|
315
329
|
- spec/unit/tester/fakeses/test_email.rb
|
316
330
|
- spec/unit/tester/fakesmtp/test_email.rb
|
317
331
|
- spec/unit/tester/test_asserter.rb
|
@@ -326,7 +340,7 @@ homepage: http://github.com/enspirit/webspicy
|
|
326
340
|
licenses:
|
327
341
|
- MIT
|
328
342
|
metadata: {}
|
329
|
-
post_install_message:
|
343
|
+
post_install_message:
|
330
344
|
rdoc_options: []
|
331
345
|
require_paths:
|
332
346
|
- lib
|
@@ -341,8 +355,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
355
|
- !ruby/object:Gem::Version
|
342
356
|
version: '0'
|
343
357
|
requirements: []
|
344
|
-
rubygems_version: 3.
|
345
|
-
signing_key:
|
358
|
+
rubygems_version: 3.2.15
|
359
|
+
signing_key:
|
346
360
|
specification_version: 4
|
347
361
|
summary: Webspicy helps testing web services as software operation black boxes!
|
348
362
|
test_files: []
|
data/bin/sandr
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'path'
|
3
|
-
|
4
|
-
def sandr(file)
|
5
|
-
file.write file.read.gsub(ARGV[0], ARGV[1])
|
6
|
-
end
|
7
|
-
|
8
|
-
Path.dir.parent.glob("lib/**/*.rb") do |file|
|
9
|
-
sandr(file)
|
10
|
-
end
|
11
|
-
|
12
|
-
Path.dir.parent.glob("spec/**/*.rb") do |file|
|
13
|
-
sandr(file)
|
14
|
-
end
|
data/bin/search
DELETED