مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-11-30 21:32:30 +00:00
initial test suite
هذا الالتزام موجود في:
5
Gemfile
5
Gemfile
@@ -40,6 +40,9 @@ group :development, :test do
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem 'web-console'
|
||||
gem 'annotate'
|
||||
gem 'rspec'
|
||||
gem 'rspec-rails'
|
||||
gem "factory_girl_rails", "~> 4.0"
|
||||
gem "database_cleaner"
|
||||
end
|
||||
|
||||
39
Gemfile.lock
39
Gemfile.lock
@@ -88,12 +88,18 @@ GEM
|
||||
hashie (~> 3.0)
|
||||
httparty (~> 0.10)
|
||||
json (~> 1.0)
|
||||
debug_inspector (0.0.2)
|
||||
database_cleaner (1.5.3)
|
||||
deep_merge (1.1.1)
|
||||
diff-lcs (1.3)
|
||||
dynamic_form (1.1.4)
|
||||
encrypto_signo (1.0.0)
|
||||
erubis (2.7.0)
|
||||
execjs (2.7.0)
|
||||
factory_girl (4.8.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.8.0)
|
||||
factory_girl (~> 4.8.0)
|
||||
railties (>= 3.0.0)
|
||||
faraday (0.9.2)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
foreman (0.82.0)
|
||||
@@ -168,6 +174,27 @@ GEM
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rake (11.3.0)
|
||||
rspec (3.5.0)
|
||||
rspec-core (~> 3.5.0)
|
||||
rspec-expectations (~> 3.5.0)
|
||||
rspec-mocks (~> 3.5.0)
|
||||
rspec-core (3.5.4)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-expectations (3.5.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-mocks (3.5.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-rails (3.5.2)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 3.5.0)
|
||||
rspec-expectations (~> 3.5.0)
|
||||
rspec-mocks (~> 3.5.0)
|
||||
rspec-support (~> 3.5.0)
|
||||
rspec-support (3.5.0)
|
||||
sass (3.4.22)
|
||||
sass-rails (5.0.6)
|
||||
railties (>= 4.0.0, < 6)
|
||||
@@ -197,11 +224,6 @@ GEM
|
||||
uglifier (3.0.2)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
useragent (0.16.8)
|
||||
web-console (3.3.1)
|
||||
actionview (>= 5.0)
|
||||
activemodel (>= 5.0)
|
||||
debug_inspector
|
||||
railties (>= 5.0)
|
||||
websocket-driver (0.6.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.2)
|
||||
@@ -223,8 +245,10 @@ DEPENDENCIES
|
||||
clockwork
|
||||
coffee-rails (~> 4.2)
|
||||
createsend (~> 4.0)
|
||||
database_cleaner
|
||||
dynamic_form
|
||||
encrypto_signo
|
||||
factory_girl_rails (~> 4.0)
|
||||
foreman
|
||||
gelf
|
||||
haml
|
||||
@@ -242,12 +266,13 @@ DEPENDENCIES
|
||||
nio4r
|
||||
puma (~> 3.0)
|
||||
rails (= 5.0.2)
|
||||
rspec
|
||||
rspec-rails
|
||||
sass-rails (~> 5.0)
|
||||
secure_headers
|
||||
sentry-raven
|
||||
turbolinks (~> 5)
|
||||
uglifier (>= 1.3.0)
|
||||
web-console
|
||||
|
||||
BUNDLED WITH
|
||||
1.14.6
|
||||
|
||||
14
spec/app/models/organization_spec.rb
Normal file
14
spec/app/models/organization_spec.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Organization do
|
||||
|
||||
context "model" do
|
||||
subject(:organization) { create(:organization) }
|
||||
|
||||
it "should have a UUID" do
|
||||
expect(organization.uuid).to be_a String
|
||||
expect(organization.uuid.length).to eq 36
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
36
spec/app/models/user_spec.rb
Normal file
36
spec/app/models/user_spec.rb
Normal file
@@ -0,0 +1,36 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe User do
|
||||
|
||||
context "model" do
|
||||
subject(:user) { create(:user) }
|
||||
|
||||
it "should have a UUID" do
|
||||
expect(user.uuid).to be_a String
|
||||
expect(user.uuid.length).to eq 36
|
||||
end
|
||||
end
|
||||
|
||||
context ".authenticate" do
|
||||
it "should not authenticate users with invalid emails" do
|
||||
expect { User.authenticate('nothing@nothing.com', 'hello') }.to raise_error(Postal::Errors::AuthenticationError) do |e|
|
||||
expect(e.error).to eq 'InvalidEmailAddress'
|
||||
end
|
||||
end
|
||||
|
||||
it "should not authenticate users with invalid passwords" do
|
||||
user = create(:user)
|
||||
expect { User.authenticate(user.email_address, 'hello') }.to raise_error(Postal::Errors::AuthenticationError) do |e|
|
||||
expect(e.error).to eq 'InvalidPassword'
|
||||
end
|
||||
end
|
||||
|
||||
it "should authenticate valid users" do
|
||||
user = create(:user)
|
||||
auth_user = nil
|
||||
expect { auth_user = User.authenticate(user.email_address, 'passw0rd') }.to_not raise_error
|
||||
expect(auth_user).to eq user
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
19
spec/config/fast_server.cert
Normal file
19
spec/config/fast_server.cert
Normal file
@@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC/zCCAeegAwIBAgIBADANBgkqhkiG9w0BAQsFADBDMQswCQYDVQQGEwJHQjEQ
|
||||
MA4GA1UECgwHRGVmYXVsdDEQMA4GA1UECwwHRGVmYXVsdDEQMA4GA1UEAwwHZGVm
|
||||
YXVsdDAeFw0xNzA1MDgxMzM2MDBaFw0yNzA1MDYxMzM2MDBaMEMxCzAJBgNVBAYT
|
||||
AkdCMRAwDgYDVQQKDAdEZWZhdWx0MRAwDgYDVQQLDAdEZWZhdWx0MRAwDgYDVQQD
|
||||
DAdkZWZhdWx0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA18zeoKrM
|
||||
m9dlvu5l3k57ocbtB5PKm1fWcUg6XSl4Wtk+Tf9TQx8wuwjEwRvqGdgP9KWtazdW
|
||||
2eN9z9lmHd3GnC3inmw7UcSkGkeEUQrwbkjihoKAgEpLBNmJoaMWatbdvcgkBvKs
|
||||
WUg8J4g7yRdX5jWGa0f9Ok0jfYYNQwPZ1iugD9ayBcovvvCX3Xm2oeKCjBeqjejS
|
||||
wlv1KdYmHQ2AduIx/s9+vxdWtnllqbJ+v60+WqVzwxxJWE4P+kJb+vNbgZ01xFGX
|
||||
vljT/DzosDVR4OYBI5IumOYwuDz91FY/K9Yi+7QKfI7tq7y9ZKYJQSqZxpnOw2gn
|
||||
qZuC/ReCBw/wlwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQDHEE35sCpFivcVFoVC
|
||||
Y7q7u2PhHofjhi1pqPRnZOtiVIYr9xXAe+pTlcv+K9Kc0IenaADEnra0wM0i5imp
|
||||
b3ObQ0CyRCyKKVbU8t74RYo6K3klZnru61YWte0MdsBFYwYTSAZzK9l+5EICyX1l
|
||||
KYcXIGgdZJddU7GQ4EASh1BTB7qDQ7GOQRlY1uTyVd+74WdfUez8A6FgRGnx/RRD
|
||||
0u/l+K8+JIaqgSU1+ZlxPw+KpHUPJhoTikZapyKgaINBoLfyuVd4svf4HsJzjwcj
|
||||
w8CL5sPAdN8iLeDVkHemX/Tcl4CdWVBodb3Wiqcq7DgTVY2alDNMjCo9YvzuAPVL
|
||||
99W3
|
||||
-----END CERTIFICATE-----
|
||||
27
spec/config/fast_server.key
Normal file
27
spec/config/fast_server.key
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEA18zeoKrMm9dlvu5l3k57ocbtB5PKm1fWcUg6XSl4Wtk+Tf9T
|
||||
Qx8wuwjEwRvqGdgP9KWtazdW2eN9z9lmHd3GnC3inmw7UcSkGkeEUQrwbkjihoKA
|
||||
gEpLBNmJoaMWatbdvcgkBvKsWUg8J4g7yRdX5jWGa0f9Ok0jfYYNQwPZ1iugD9ay
|
||||
BcovvvCX3Xm2oeKCjBeqjejSwlv1KdYmHQ2AduIx/s9+vxdWtnllqbJ+v60+WqVz
|
||||
wxxJWE4P+kJb+vNbgZ01xFGXvljT/DzosDVR4OYBI5IumOYwuDz91FY/K9Yi+7QK
|
||||
fI7tq7y9ZKYJQSqZxpnOw2gnqZuC/ReCBw/wlwIDAQABAoIBADj2T/GTBA1Czw2V
|
||||
+fezObkbPCfa4AkfJ3Chgx5iOu2oGGUYN08pZYCJMP5UMvf9a0DFlsANTHSZMvVx
|
||||
Sh4qEynYhtAQe5v6zuJM7GVEAPDrdjfRLMAwXBr8nPK4jMtIyiE1OiVHWyz5/z7k
|
||||
G/vZmI8go8mfp/0CrZKNluSQmKiKQPS1rkDXiVBkF7ifFO6j34IjnihgWsc2W/CL
|
||||
Wvehfe6RmCK+KfEDREpTSw2/VFuqn4j2FYK8PpweAAJwVWtGGuDB9QSPkKT8WSgK
|
||||
yZFVW3d+aouBfduHKcja/ccmrGhmBhni80lTjUxakzK7Hw4SKmNTV1FPNfJsE1ez
|
||||
zPqs8tkCgYEA/a0yBSFuwaLGuwpmchjH32bcq+TR7qNaCAfv07pL7aQXd7nSjDuU
|
||||
Lz/ohveubizhdsl32kJQBuPNuYeLXxhsulxCumS3tfN31/J4IYU2BXNB20mhKSkP
|
||||
APneQfc5SS2T3cOdd5hUgsFlSAU2KtWC/qSrXSpR0kEyCGLbOrctJnUCgYEA2cbd
|
||||
R8QOFzMBpz5Dl3DtFc3qzAyw2lS1m6Nlus3zMxNwX0Diaw9eyiZKOxjNBwN8uQa6
|
||||
hOf944go2MmEmdRILWiV7lXt1ML5/fD/Kf2n15TI+xl4maETNGtxPMlZs158xsRR
|
||||
g4qUvRufZp03V3Cu1e9HrypElw9D6K1lv7DvkVsCgYAvxM53gt0tX26WyBWUhLAW
|
||||
lHMXd2ZEzsPkYUI7F4i2vkChDf/k4k88OoeZ6sgQ/SiTyspj8jrJoVobBrgq9xl6
|
||||
WmdCXDbv72Hw6zrN7RzIF/Udyxaq/o1RvLuqplhGPGvsxapAXBIF8U8WKc0ScdRS
|
||||
CUYvrAluU1KNm7f2rYm2BQKBgEEliUqPrrtn6cWzDZs/D91m9SdHYJxfnNhLQAJq
|
||||
26ba2NHV4iWuumd0nt4g5CyF8YiUJ7XchInNUJLRbdZqt5DF6ZwbnoL4NLqvnlVc
|
||||
aRpHivv6uaYTlmAnB//sJ+ZNjLwVPGFCUo5jtgKHY2fH8LVU2DfhSBV8Xo87V+XJ
|
||||
M1FjAoGAEIkg3M/rRku0SMaT0LofchABhW1RXYwBUqUsb4TUF2fdm5iESRg1wP2g
|
||||
kvMe6394KFseK4/OG2SZf69bMeUbdwi+LA8krIKj4CFhgjdG0Xs4j/POWqCExNDC
|
||||
pAwJbJcn3o/RSGwIl4fO0o0JwJe8//269pklRQ5CrZt3+LSxy/E=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
27
spec/config/lets_encrypt.pem
Normal file
27
spec/config/lets_encrypt.pem
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAvbtEZ/TZPqMZmbNJH8trasoYkuzkLSsiGBAmKWDw/V3xVkMX
|
||||
JSY+MYRv6NlKKXZg6SYoZVU8DvxCvUQstJDU+CYHUfQtBthQaWGzh5XdAmjTtb+6
|
||||
UTyI5UtrwbzWHPgUrwHtN/QpBGsan6A2ASbP5R+HxuUTjzvkMc6otyvdjO+86jSt
|
||||
mFxGoJXmQSyyGATjMBnhTCPUNjqOI13qgwWgh0beCY2+m78URbJ60NHg+UOBOIUx
|
||||
Z1e0jY0YCRxb+CuTiBgbBCS3JNlze7JTwLXDgXunV2OPUBA5qd2+4eGsaSzeGxMi
|
||||
HZaat/Pcn11PEZBEYMuEr2bGb9ANxSzzN4+NKwIDAQABAoIBAQCTH1qdDfVDp++b
|
||||
CrZCTFfgOBQ0IjORfufyJtugrIZSwfz5Og8BhJUnip3Ivm3Olvfw8uDSKvTmXeBW
|
||||
qT3NSp2KStrURvZ/X0+DV/qBwcjeLHE2dxTAF6PDwecuFQMm9Yv8ZQ8Qm2kO/wpn
|
||||
CzG1VOZSsk90AIBZSkTaBnk3iHFE7e66Ru3AVNdFOkn45W459IeZRsh7FnrLG4r4
|
||||
3ko/07+e1Eb82mgnan3iyMrHYW+PACzcP/GjIJ2Xh3e39IexXeEsp8qkAbUsv0xx
|
||||
lt1QL22Xi6gRc2GMv+GNIi84FfnJ6P/ju3dVuHiShFncM2zM5cc9snOHaayePyT6
|
||||
HVVySp0JAoGBAPDJmdd/01W91KcmzZ59N7+uhSMhfvxvZE/fpq1dEwtTIREUW6sL
|
||||
J7yfJA9KSm+SsOpy6NOG/caWACz+lPZX67Ju4eIO6aiIV5Tj3g8SvdMNvj4a6gfz
|
||||
lMg7eDtiuk4AeFQroPqmo+IPMd2ia4N6OOIOt5XzaoTHl7wdIrMTFbb/AoGBAMm3
|
||||
6E7DMR/dcUpe9bOrOtPA8MtGVxhMhR6AR7fpQtFRcjmpOnQnio5EASvOM4tAN/H0
|
||||
DB5tyuQ9JzHmvH5tENdwXZLnPBvnKl4OobZqaX7SWQA1inb71fr1pjp8rzceABjZ
|
||||
pFJ3/esN5VJw+f3DTjw8HbBkHZBtvbNNPin/5LXVAoGBAKq698dSjoHcQR1oKSG4
|
||||
vb+/Og3H4WeSgDkWZvPD7A36mpamrbzhAwL+gC4LSi5EgActBSN/MxANKgC9Xtgx
|
||||
TSFO+AE2+7yRODCNRdXAPzKYKw2UPd73esZjTIQnI9zM/oUIDnPLlqZiicQSN1OZ
|
||||
ZR38u3WqjBur/k3XBtScsqf3AoGAGA3VJudByWH3q32tYPJvPmcIj8Tgh+ZADYYQ
|
||||
h07Kh/llXJjgfo9kh1h2p0mcfeN3iGOoukwvYI4mSV4RZiYNVxNwJR9r3IvxUmv+
|
||||
Pqlr0RK2SD8aNtwLBTUb0Gej4TeznUL+xFLItanfibgtJ2SNxMMKa0lU+S8M6v+w
|
||||
BQQdus0CgYBu+21HRlcgTr47TtNlCUP1fCPgkpJXj72P8WBVvJnVi8JjIX++PtcR
|
||||
QwxJpPxX9MsQiD/2oziEb/pXDrNytuezDwGsNrRmrVpgorL3lXaLi571AjY7urrq
|
||||
/0ZT4OPIP+Em1F9ugh+u/XxOedLwmcwzz3VmKCYfSJzcQQ3jU8njjA==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
49
spec/config/postal.yml
Normal file
49
spec/config/postal.yml
Normal file
@@ -0,0 +1,49 @@
|
||||
web:
|
||||
host: postal.example.com
|
||||
protocol: https
|
||||
|
||||
fast_server:
|
||||
enabled: false
|
||||
bind_address:
|
||||
|
||||
general:
|
||||
use_ip_pools: false
|
||||
|
||||
main_db:
|
||||
host: 127.0.0.1
|
||||
username: root
|
||||
password:
|
||||
database: postal_test
|
||||
|
||||
message_db:
|
||||
host: 127.0.0.1
|
||||
username: root
|
||||
password:
|
||||
prefix: postal_test
|
||||
|
||||
rabbitmq:
|
||||
host: 127.0.0.1
|
||||
username: guest
|
||||
password: guest
|
||||
vhost:
|
||||
|
||||
dns:
|
||||
mx_records:
|
||||
- mx.postal.example.com
|
||||
smtp_server_hostname: postal.example.com
|
||||
spf_include: spf.postal.example.com
|
||||
return_path: rp.postal.example.com
|
||||
route_domain: routes.postal.example.com
|
||||
track_domain: track.postal.example.com
|
||||
|
||||
smtp:
|
||||
host: 127.0.0.1
|
||||
port: 2525
|
||||
username:
|
||||
password:
|
||||
from_name: Postal
|
||||
from_address: postal@yourdomain.com
|
||||
|
||||
rails:
|
||||
environment: test
|
||||
secret_key: c3ed0d4723a5d08f8cdb03571ddec8366da74db114f5419187343632e9c0c0110da177c0cf79e6605a4ccfff6f2d9e716d99b6525401ad9c181466b57a1901ffeacb023d05c9ce69838dd826f54e29c846e9e3231697c6749648a9c706df20b50bec1d7ef81b0dbd91410b314c44a4c0cf74741df2de9f5bb144026a6f99954c
|
||||
15
spec/config/signing.key
Normal file
15
spec/config/signing.key
Normal file
@@ -0,0 +1,15 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXgIBAAKBgQC/Af1LGsg/xdpdLjIaxVhQm3qjKNrWQh+divUV9eLCFta/s5Qs
|
||||
Axs2+jf40IjpORn9507mtFwNPcauNyfUH7/bNxfAb65L3c2GWxVu/Cp4tg9yYVpz
|
||||
9vvNEsQh/AWrhjrFcc1DpyWUFeY80ASBHGAJQe1y+iFMQVQAJzXcyUNwJwIDAQAB
|
||||
AoGAMcDj6J9WT/5KjgENfhmvknedb0iiEDNzJsdeZdUBtwrZ719oljpM6XouADrZ
|
||||
nt6H3bJVxBRw8eYIjbLCRifrAkv0dmFOPbrZBd8q7bFSRlyc5OeD6aKLW95szrpx
|
||||
AnAEPb1ojfvOAyAA2407GZjuPQrRjncT1tZx56xwIU2n0DECQQD6b1wtad+akE0k
|
||||
ry54Wd/iaaM/pguh2dUyphDrCKzQ3fFeLw0WPe/j+f5hLcXaWNJWiOwa+MPUpEnE
|
||||
B1SCA7O/AkEAw0CRZp+smFD2clPDiGtNbXW1ZF2TzLZhHzntYv3KpCqzJna8vx+I
|
||||
gwXCUrnleMRJdDV+mWvlptDDJOAi2Oe9mQJBAMjTwpyceXbOXz6ayO40TGiZhBNH
|
||||
ia56LBDYwVppc4RvZt67Zog+lQBB+q9dcHtfnRVN6eDbOtdsA8eShT9ZzqsCQQCe
|
||||
uTJ6FnucJtTxA58EmxYKUZHv0RKBbBFv7QtJWb8NzZhtQEEXrW6v9FKQJYahsg90
|
||||
ZLhRyCCch0DcDUjGwzyhAkEAh8CC37iLLBCHpxxrsQ/l+/c9TX0c+PbcZSRrZ54X
|
||||
l3yZis66MmhaOaeKVQ7rY+hS9/v+PHBY4HCpCkqjYV/bIQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
32
spec/factories/organization_factory.rb
Normal file
32
spec/factories/organization_factory.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: organizations
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# uuid :string(255)
|
||||
# name :string(255)
|
||||
# permalink :string(255)
|
||||
# time_zone :string(255)
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# ip_pool_id :integer
|
||||
# owner_id :integer
|
||||
# deleted_at :datetime
|
||||
# suspended_at :datetime
|
||||
# suspension_reason :string(255)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_organizations_on_permalink (permalink)
|
||||
# index_organizations_on_uuid (uuid)
|
||||
#
|
||||
|
||||
FactoryGirl.define do
|
||||
|
||||
factory :organization do
|
||||
name "Acme Inc"
|
||||
sequence(:permalink) { |n| "org#{n}" }
|
||||
association :owner, :factory => :user
|
||||
end
|
||||
|
||||
end
|
||||
36
spec/factories/user_factory.rb
Normal file
36
spec/factories/user_factory.rb
Normal file
@@ -0,0 +1,36 @@
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: users
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# uuid :string(255)
|
||||
# first_name :string(255)
|
||||
# last_name :string(255)
|
||||
# email_address :string(255)
|
||||
# password_digest :string(255)
|
||||
# time_zone :string(255)
|
||||
# email_verification_token :string(255)
|
||||
# email_verified_at :datetime
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# password_reset_token :string(255)
|
||||
# password_reset_token_valid_until :datetime
|
||||
# admin :boolean default(FALSE)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_users_on_email_address (email_address)
|
||||
# index_users_on_uuid (uuid)
|
||||
#
|
||||
|
||||
FactoryGirl.define do
|
||||
|
||||
factory :user do
|
||||
first_name "John"
|
||||
last_name "Doe"
|
||||
password "passw0rd"
|
||||
email_verified_at Time.now
|
||||
sequence(:email_address) { |n| "user#{n}@example.com" }
|
||||
end
|
||||
|
||||
end
|
||||
7
spec/lib/postal/message_parser_spec.rb
Normal file
7
spec/lib/postal/message_parser_spec.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Postal::MessageParser do
|
||||
it "should be true" do
|
||||
expect(Rails.env).to eq 'test'
|
||||
end
|
||||
end
|
||||
26
spec/rails_helper.rb
Normal file
26
spec/rails_helper.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
ENV['POSTAL_CONFIG_ROOT'] = File.expand_path('../config', __FILE__)
|
||||
|
||||
require File.expand_path('../../config/environment', __FILE__)
|
||||
require 'rspec/rails'
|
||||
require 'spec_helper'
|
||||
require 'factory_girl'
|
||||
require 'database_cleaner'
|
||||
|
||||
FACTORIES_EXCLUDED_FROM_LINT = []
|
||||
Dir[File.expand_path('../factories/*.rb', __FILE__)].each { |f| require f }
|
||||
|
||||
ActiveRecord::Migration.maintain_test_schema!
|
||||
RSpec.configure do |config|
|
||||
config.use_transactional_fixtures = true
|
||||
config.infer_spec_type_from_file_location!
|
||||
config.include FactoryGirl::Syntax::Methods
|
||||
|
||||
config.before(:suite) do
|
||||
begin
|
||||
DatabaseCleaner.start
|
||||
FactoryGirl.lint(FactoryGirl.factories.select { |f| !FACTORIES_EXCLUDED_FROM_LINT.include?(f.name.to_sym) })
|
||||
ensure
|
||||
DatabaseCleaner.clean
|
||||
end
|
||||
end
|
||||
end
|
||||
11
spec/spec_helper.rb
Normal file
11
spec/spec_helper.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
RSpec.configure do |config|
|
||||
config.color = true
|
||||
|
||||
config.expect_with :rspec do |expectations|
|
||||
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
||||
end
|
||||
|
||||
config.mock_with :rspec do |mocks|
|
||||
mocks.verify_partial_doubles = true
|
||||
end
|
||||
end
|
||||
المرجع في مشكلة جديدة
حظر مستخدم