cucumber-mailcatcher 0.1
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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 77a8bcce717891fae6839e7f0c4812c16a1f2829
|
4
|
+
data.tar.gz: c368c81e98bcc771b5874964c5dd0f4b312e21c9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b7a4ee7939396498e9759d2f21dd4de1cfeadf16ee94170cd344629284cb133896a3a0f9fe1c8bcd0235d5a8a507e3b54e6afc9f32949e136a1562e92c351703
|
7
|
+
data.tar.gz: 77de4406d2e13080360ee0caa451274528e2fa6b7457e3e08064e91ab6b0f24c553177ddc23074176e3d9a9d8249fc33cc06c29ba7c4b6a146dd0e0a7dc723d7
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'jsonpath'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
require 'cucumber'
|
5
|
+
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
6
|
+
|
7
|
+
require 'cucumber/mailcatcher/http_client.rb'
|
8
|
+
|
9
|
+
module Cucumber
|
10
|
+
module Mailcatcher
|
11
|
+
def self.mailcatcher_steps
|
12
|
+
t = ["#{File.dirname(File.expand_path($0))}/../lib/#{FOLDER}",
|
13
|
+
"#{Gem.dir}/gems/#{NAME}-#{VERSION}/lib/#{FOLDER}"]
|
14
|
+
t.each {|i| return "#{i}/mailcatcher_steps.rb" if File.readable?(i) }
|
15
|
+
raise "both paths are invalid: #{t}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require "net/http"
|
2
|
+
require "net/https"
|
3
|
+
require "uri"
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module Cucumber
|
7
|
+
module Mailcatcher
|
8
|
+
|
9
|
+
class HttpClient
|
10
|
+
attr_accessor :server_url
|
11
|
+
|
12
|
+
def get_messages
|
13
|
+
do_get_json '/messages'
|
14
|
+
end
|
15
|
+
|
16
|
+
def get_messages_from_email email
|
17
|
+
messages = do_get_json '/messages'
|
18
|
+
|
19
|
+
messages.select { |item|
|
20
|
+
item if item["sender"].include?(email)
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_messages_to_email email
|
25
|
+
messages = do_get_json '/messages'
|
26
|
+
|
27
|
+
messages.select { |item|
|
28
|
+
item if item["recipients"].include?(email) || item["recipients"].include?('<' + email + '>')
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_messages_with_subject subject
|
33
|
+
messages = do_get_json '/messages'
|
34
|
+
|
35
|
+
messages.select { |item|
|
36
|
+
item if item["subject"].include?(subject)
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_messages_with_html_body body
|
41
|
+
messages = do_get_json '/messages'
|
42
|
+
|
43
|
+
messages.select { |item|
|
44
|
+
response = do_get "/messages/#{item['id']}.json.html"
|
45
|
+
item if response.code != '404' && response.body.include?(body)
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_messages_with_plain_body body
|
50
|
+
messages = do_get_json '/messages'
|
51
|
+
|
52
|
+
messages.select { |item|
|
53
|
+
response = do_get "/messages/#{item['id']}.json.plain"
|
54
|
+
item if response.code != '404' && response.body.include?(body)
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def delete_messages
|
59
|
+
do_delete '/messages'
|
60
|
+
true
|
61
|
+
end
|
62
|
+
|
63
|
+
def do_get relative_url
|
64
|
+
uri = URI("#{@server_url}#{relative_url}")
|
65
|
+
Net::HTTP.get_response(uri)
|
66
|
+
end
|
67
|
+
|
68
|
+
def do_get_json relative_url
|
69
|
+
JSON.load((do_get relative_url).body )
|
70
|
+
end
|
71
|
+
|
72
|
+
def do_delete relative_url
|
73
|
+
uri = URI("#{@server_url}#{relative_url}")
|
74
|
+
|
75
|
+
request = Net::HTTP.new(uri.host,uri.port)
|
76
|
+
request.delete(uri.path).code
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Given(/^I should receive "([0-9])" email from "([^"]*)"/) do |count, address|
|
2
|
+
messages = subject.get_messages_from_email address
|
3
|
+
expect(messages.length).to be count
|
4
|
+
end
|
5
|
+
|
6
|
+
Given(/^I should receive "([0-9])" email sent to "([^"]*)"/) do |count, address|
|
7
|
+
messages = subject.get_messages_to_email address
|
8
|
+
expect(messages.length).to be count
|
9
|
+
end
|
10
|
+
|
11
|
+
Given(/^I should receive "([0-9])" email with subject "([^"]*)"/) do |count, subject|
|
12
|
+
messages = subject.get_messages_with_subject subject
|
13
|
+
expect(messages.length).to be count
|
14
|
+
end
|
15
|
+
|
16
|
+
Given(/^I should receive "([0-9])" email with a html body containing "([^"]*)"/) do |count, body|
|
17
|
+
messages = subject.get_messages_with_html_body body
|
18
|
+
expect(messages.length).to be count
|
19
|
+
end
|
20
|
+
|
21
|
+
Given(/^I should receive "([0-9])" email with a plain body containing "([^"]*)"/) do |count, body|
|
22
|
+
messages = subject.get_messages_with_plain_body body
|
23
|
+
expect(messages.length).to be count
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cucumber-mailcatcher
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nic Jackson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cucumber
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.3.10
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.3.10
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rspec-expectations
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.3'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 3.3.1
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3.3'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 3.3.1
|
53
|
+
description: Some simple cucumber steps to allow behavioural testing with the Mailcatcher
|
54
|
+
mock SMTP server
|
55
|
+
email: jackson.nic@gmail.com
|
56
|
+
executables: []
|
57
|
+
extensions: []
|
58
|
+
extra_rdoc_files: []
|
59
|
+
files:
|
60
|
+
- lib/cucumber/mailcatcher.rb
|
61
|
+
- lib/cucumber/mailcatcher/http_client.rb
|
62
|
+
- lib/cucumber/mailcatcher/mailcatcher_steps.rb
|
63
|
+
- lib/cucumber/mailcatcher/version.rb
|
64
|
+
homepage: https://github.com/nicholasjackson/cucumber-mailcatcher
|
65
|
+
licenses:
|
66
|
+
- MIT
|
67
|
+
metadata: {}
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
requirements: []
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 2.2.2
|
85
|
+
signing_key:
|
86
|
+
specification_version: 4
|
87
|
+
summary: Cucumber steps for Mailcatcher mock SMTP server
|
88
|
+
test_files: []
|