referer_tracking 4.0.1 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +87 -23
- data/app/models/referer_tracking/tracking.rb +53 -0
- data/db/migrate/20150424090312_log_and_status.rb +6 -0
- data/lib/referer_tracking.rb +51 -22
- data/lib/referer_tracking/active_record_extensions.rb +11 -0
- data/lib/referer_tracking/controller_addons.rb +57 -0
- data/lib/referer_tracking/sweeper.rb +4 -66
- data/lib/referer_tracking/version.rb +1 -1
- data/test/dummy/app/controllers/users_controller.rb +12 -0
- data/test/dummy/app/models/user.rb +4 -0
- data/test/dummy/config/environments/test.rb +6 -1
- data/test/dummy/config/initializers/referer_tracking.rb +0 -2
- data/test/dummy/config/routes.rb +4 -1
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +17 -15
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +8 -0
- data/test/dummy/log/test.log +28156 -281
- data/test/dummy/tmp/cache/assets/test/sprockets/2cd8dbafa2066abde725994dae1058c3 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/669c55c2bc3e16bcc6e4ca54b102fda6 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/e067a273d5fdb6cc978465b152e662b5 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/fd2dc9334cabdf1812653883c577dfaf +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0G3oFbqJ7eFUY0UdwEjScsfwwbPpWiWBNw09qdd1ohI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0Z6bW0B1kuGtkIeYr4ThAL4uqYBz_KTiRnIbWojB7Aw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1H1i5_RyMh4B7slWyR-5HmOLlYMLqwBoIHac9sf2UGU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2i17CO5DMhuAQ23V2NrBSC1m1qGbVEcfTQPOZvRGs8E.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/46JXON6AslwNbbvz__9ddRiVifnFuk8ifD2rSIS85-M.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4JY-SwetEJ9O6ZGcQcZ26z5Lwa71xMfRmfgrUMivfFY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/523-OCQbCRB1j_tlqIjEssUe6m7reS6feGOWn7hrV4c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8SS1Jdp7AgUHgLl0L-2n3KE2-WflAeaChclAGEW_SFM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8yLF7Pm-8w-1cv3HnmHv6MSOWaTEPh6hBWRdTY7eCrI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9rTAa3n4m_1tnYuo_PQBUe9AHWAx8DmbK07tjEDBJYk.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Awt8aE1L6iJxPHDB19XLUcrdBHzK7yH-x57kv_NKojU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Bee-ZlOeMpd0qyQPbZ3i8ZoH7Yhw2coD8YL3-9GViAw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DQ-VfoAVjHpu1y8DR1HQVmz_IAVzAgEOv2UGjbvlMLM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EQ5-Zi3kqng0IGc-dOuC3Nb6AJ7itxt2EhoMRjAZM78.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HBa9hNZdUCrVlnn4DcWwu8ujBPsPhHj-SzAxTHx3gyM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JoQJIRS5fitTPBwEToHFffx8wzQh1OGFAu5xDSz11I8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MTXn13WRB7BfO1V3dblDHLOM3_n2bwr2PxtPNg0eo9A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MVvZCkjLbPbkR9gt8wskucEPJHuRZbsq0WzftgYgBrs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NGMpC_EFlJjbA20OjGoJtJfynmG55lVXqEBQElL0J8c.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NW6MHRYmTMyI512aPcOJ4s6tgW0o_sXXmgrqQfKzkSs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O2agJjKw-HXlfsSATA2_aeqgAYO4bWrWRd1bcTN5_C0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OVj6tY43u7jqUGurvVYkWx3HFRru4oH1hxmXKnz_itc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PWG7LBu6STtK0n1rFJDQjW5x3J7tQd_Ij06lNYAzym0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PghEL7Jal_M5xfjdzxnW-Jiq-6kt7W49FaF44yRK3Yk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RYnKHL96X2OWT7cQwEm1CEbN-kP9jamPCD8Viq5WOJs.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RvE2VrcnvR4vet1dyPKMSOu-qTSXJUVbsONOudiUiqo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YhdJORPRV4WeWGbpN4lF7qM1JemsU0sSBBFSeCjK5Zk.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_zleWcY3FPsUHamwtaWVGPFC2ZrfVEdPcPxtZ0ncAKQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aOYT6AMsiiCTko9bck34eQ_cpji7JFJkcO6Gih7XwY0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e6QsN5AJT0NQ1szDvc8kkfCz6XVVjVWDNHKP6f0YoSo.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/esK4x1b0AOlLi9q6KDmOPKMPG6uS7tF2XVFfrQpIgwU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fUBHMp2rRJ2R0D76_G51M7lBmOZpVQzuaSjbitW7IFc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gBSV6LbejlEAByktpuqDpXQOiHSTl-EHI5c0MW6-8rw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/guTw1gpaRgyeuxZQ3eQFePUZcp9d-v1IWXG5qm_PTGY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hM0aSE9SRyMgQSqQY_G3js1_4dSng4Q9vnWpgMqFWTc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hg6DQjmNFxgP1ABwg213wrPGMurhGbyC2SJWF_eR3EM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/i0po6m1De10_m-wY5hbOaMN1dZbKIitPo3bn9EcqeA4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/igBCEQJL_hNTNkZQWbXcg0FX23pPTcv61SiuP8sww4Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/im21DLPpH4nyd4LX8cmORbNfg7jUx_PEXXMwJA87Qsw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/joYQeCzbCCq4TvDcSpRWsiaR0i4HVRDhLBrQOenKw_U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jpA0RKjvuqt6qEaIASWc8qU1VB0Aydp6JgbzLhpGUOQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k__HZRe6MJEx_es4mae2UKNJ7S-xQjjtNvuWfURI2L8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kl1-ITbGxlNpIH_bdRiAd4APIX9fZOYgmo0XXZcrvgo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mUqHquf2Zmd8u6uiyK61Ezlu1TcpGRVaTOWUxxGEi1Q.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n8Aje18PD8oQE5TPpOTUD3BGZ7_TmvPPZ5eXDXoq8Gg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ngUc-SbI6D2rZ8MAICdvGgIewOpQ-2Pl0CILWKGcq3U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pwDXjciqVi1_CS4MlD2TH1ZqbzXchkMonNpsttR96Vk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qkq4_FDzkYw-Jgf-PQ1QvZRMOcpJieAhpakErII07uI.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qmTv4Or54pJag3e-RuC8J8YBw5WvkzqP36yA1qF7brA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r6gN_QsTAf7c1o4Cst-frjvGHokmbxsEOdSr4mkMEJI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/reN5Eb8r7-aFzpa3gnf0d-hIULaqBhZbU3j6bHL8c54.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ss0roaA9M5TQHC9lcaT0WzZ401TWw-pTCBcrTYorKrU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tZ-5zRkNGhZpjLydDPN14TgvqrG-sRsmhjHmD16K9w4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uAeR8lWRY18fsV62fVeVlDfQL-0svUgCWxUntrKiscM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ut0rmLnfJ-Ischq127ylQ8-6EKVPTiko_mqVVAuMli8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vXSDU5apajRzjlgKITJW6ww-R5nViNgTca-WgN2rQjA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v_Ilb0G5vj-RNZGvNkGntio2WXLwx0dLgXj22KrEF1A.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xE2R25fLVYnFI2W6I4LvT03gascYQsI-YR4dr_274d8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xyZgV6TicjUr8zQ2arynATHycCL5HEg4v44PTplSlCE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y9ZtIMFclPh-m6WSjAOTLR1Oz8oUv8IF4DdJDKgCgDE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zhLZKiMTXH3IgicVp2uI18ziLOLaV51MjYysWkjSLrw.cache +0 -0
- data/test/integration/referer_tracking/has_tracking_test.rb +31 -0
- data/test/integration/referer_tracking/referer_session_test.rb +42 -27
- data/test/test_helper.rb +1 -0
- data/test/tracking_test.rb +70 -0
- metadata +143 -9
- data/app/models/referer_tracking/referer_tracking.rb +0 -16
- data/test/referer_tracking_test.rb +0 -7
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%X�p5����9~]~BK�����s��}^���%
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/scaffold.css?type=text/css&pipeline=self&id=4b58d31b40a4e647d64f9e335a16a8420088145db3f94283fade801308d6fccb:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/users.js?type=application/javascript&pipeline=self&id=dd8635d01d2a16bae80cc009881d7230ed060381678722d58f145c114d1222d7:ET
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%�2r*�������3�z���4����f#G�
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&id=1ef49bbc37f56f9833ce1c170bd926404828891df170ed7d38974ffe19c2e0f3:ET
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&id=9fff6c6a32759b605670e289204c7dcebcf06da5b037b6e169951b25e74f51da:ET
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��) `���kupwU�w�t�H^WL�J�j
|
@@ -0,0 +1 @@
|
|
1
|
+
"%֧�NTZq�בH�L��#p3��Jg!��)
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��B�����șo�$'�A�d��L���xR�U
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=201a80fa0c7af9b424d927da388446b161f955a83a9e5e73e8175f126a609783:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/scaffold.css?type=text/css&pipeline=self&id=01a20573ab8fd49c5d549e7d1c030f32dd56149f204e6bfce0fcaf0f4bdeb8aa:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/users.css?type=text/css&pipeline=self&id=348b814d5c81e12430139198fef08a6a56802c87ed3dea45de372162700ec101:ET
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/users.js?type=application/javascript&pipeline=self&id=6b6bb109cf11f76ce6a7207aeb6c2ad47c41d0165314e5c5265ff55f5545917a:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
"%u�0b��^�#�ߜj�E�b��/��e�=
|
@@ -0,0 +1 @@
|
|
1
|
+
"%9�#�U�-���Jnݶ�W��Gx5>T�u�\x��:�
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%����"m�J���S��E�j!�/�d�]�/[���
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/users.css?type=text/css&pipeline=self&id=ebde941bd6993cde0de0ce8bf4803c7ce4c33e836b28cfd7f40073613dd5a7dc:ET
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery.js?type=application/javascript&pipeline=self&id=9fb6e73d08ad1da139a394028dcc88f21252d2e941861b54920bf8b325634630:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=ab338b2d585dabf3fac146a8888f4e3d5fba2f78a8d1306a565c277606ae3fbf:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery_ujs.js?type=application/javascript&pipeline=self&id=a9cd4c4a302b11ccd2836b90ec1c19322c7d4cc772ec3697a44a5105e3360d9e:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery.js?type=application/javascript&pipeline=self&id=a998d8e6a97b5e3e58e1896b2b512dec0c08ecd6ae9ef89f479a323032439a01:ET
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&id=c13db5b816ec7eb1935d8c4e4937b3f632613124164e65b9fe238f211b2cabd6:ET
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery_ujs.js?type=application/javascript&pipeline=self&id=b0a84b9f9a4978eef599f8b71dd21032b44520fdd85fb3a78057c73eea5477f4:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
"%����r���7-���>j��7؝o�7�a>�
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=2ac9adb17a163c69fb378e89be68cfd755fe843abf3a3f68b0c5e831176ed780:ET
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��)��~&�mP�C?��EF@�'���|k��
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=d5820b6a64b00abb7d753822fd3fdffd950a6e89761b6c49d7ab08c34bf5ac77:ET
|
@@ -0,0 +1 @@
|
|
1
|
+
"%��A�I8���߅�u7�!��H���j���\��|x
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&id=b6d449d19b675a595fcaaf7240aa270ef4e7719283fab02c6290c9c34a86c0d2:ET
|
Binary file
|
Binary file
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "./test/test_helper"
|
2
|
+
|
3
|
+
class HasTrackingTest < ActionDispatch::IntegrationTest
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
test "should be ok to access tracking through user" do
|
7
|
+
u = User.first
|
8
|
+
u.create_tracking
|
9
|
+
u.tracking_add_log_line('should not error even if nil')
|
10
|
+
u.tracking_update_status('active')
|
11
|
+
|
12
|
+
assert_equal 2, u.tracking.log.lines.count
|
13
|
+
assert_equal 'active', u.tracking.status
|
14
|
+
end
|
15
|
+
|
16
|
+
test "should not error on nils" do
|
17
|
+
u = User.first
|
18
|
+
assert_nil u.tracking
|
19
|
+
u.tracking_add_log_line('should not error even if nil')
|
20
|
+
end
|
21
|
+
|
22
|
+
test "should not remove tracking even when removing trackable" do
|
23
|
+
u = User.first
|
24
|
+
tracking = u.create_tracking
|
25
|
+
u.destroy
|
26
|
+
assert RefererTracking::Tracking.where(:id => tracking.id).exists?
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
end
|
31
|
+
|
@@ -1,5 +1,4 @@
|
|
1
|
-
require
|
2
|
-
#require 'test_helper'
|
1
|
+
require "./test/test_helper"
|
3
2
|
|
4
3
|
class RefererSessionTest < ActionDispatch::IntegrationTest
|
5
4
|
fixtures :all
|
@@ -9,7 +8,7 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
|
|
9
8
|
end
|
10
9
|
|
11
10
|
test "should save referer to session" do
|
12
|
-
get 'users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
11
|
+
get '/users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
13
12
|
assert_response :success
|
14
13
|
|
15
14
|
ref = session["referer_tracking"]
|
@@ -20,11 +19,11 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
|
|
20
19
|
end
|
21
20
|
|
22
21
|
test "should not update session in second requests" do
|
23
|
-
get 'users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
22
|
+
get '/users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
24
23
|
assert_response :success
|
25
24
|
|
26
25
|
user = User.first
|
27
|
-
get "users/#{user.id}", {}, {"HTTP_REFERER" => "second_url"}
|
26
|
+
get "/users/#{user.id}", {}, {"HTTP_REFERER" => "second_url"}
|
28
27
|
|
29
28
|
ref = session["referer_tracking"]
|
30
29
|
assert_equal @referer, ref[:session_referer_url], "should not touch referer_url"
|
@@ -37,26 +36,26 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
|
|
37
36
|
test "should be able to save models and safe referer_tracking at the same" do
|
38
37
|
RefererTracking.save_cookies = true
|
39
38
|
|
40
|
-
get 'users', {'gclib' => 'some_keyword', 'password' => 'secret', 'more' => 'things'}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
39
|
+
get '/users', {'gclib' => 'some_keyword', 'password' => 'secret', 'more' => 'things'}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
41
40
|
|
42
41
|
assert !cookies['ref_track'].blank?, "should set tracking cookie"
|
43
42
|
cookie_arr = cookies['ref_track'].split("|||")
|
44
43
|
assert_equal 4, cookie_arr.length
|
45
44
|
|
46
|
-
@original_count = RefererTracking::
|
45
|
+
@original_count = RefererTracking::Tracking.count
|
47
46
|
|
48
|
-
post 'users', {:user => {:name =>
|
47
|
+
post '/users', {:user => {:name => (@name_test = "test name #{rand(9999999)}")}},
|
49
48
|
{"HTTP_USER_AGENT" => (@user_agent = "som user agent"),
|
50
49
|
"HTTP_REFERER" => (@current_request_referer = "localhost.inv/request_from_this_page")}
|
51
50
|
|
52
|
-
assert_equal @original_count + 1, RefererTracking::
|
51
|
+
assert_equal @original_count + 1, RefererTracking::Tracking.count, "did not create referer tracking"
|
53
52
|
|
54
53
|
ref_session = session["referer_tracking"]
|
55
54
|
assert_equal "http://www.example.com/users?gclib=some_keyword&pass=xxxx&more=things", ref_session[:session_first_url]
|
56
55
|
|
57
|
-
ref_track = RefererTracking::
|
58
|
-
|
56
|
+
ref_track = RefererTracking::Tracking.order(:created_at).last
|
59
57
|
assert !ref_track.blank?, "did not create ref tracking"
|
58
|
+
|
60
59
|
assert_equal @referer, ref_track.session_referer_url
|
61
60
|
assert_equal ref_session[:session_first_url], ref_track.session_first_url
|
62
61
|
|
@@ -77,37 +76,38 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
|
|
77
76
|
assert !ref_track.session_id.blank?
|
78
77
|
assert !YAML::load(ref_track.cookies_yaml)["_dummy_session"].blank?, "should have saved the cookies in yaml"
|
79
78
|
|
80
|
-
user = User.where(:name => 'test name').first
|
81
79
|
|
80
|
+
user = User.where(:name => @name_test).first
|
81
|
+
assert user, "Problem in test controller, did not create user right way"
|
82
|
+
assert_equal user, ref_track.trackable, "should be connected to created user"
|
82
83
|
assert_equal user.id, ref_track.trackable.id, "models didn't match from ref_track.trackable"
|
83
|
-
|
84
|
-
assert_equal user.referer_tracking.id, ref_track.id, "models didn't match from user.referer_tracking"
|
84
|
+
assert_equal user.tracking.id, ref_track.id, "models didn't match from user.referer_tracking"
|
85
85
|
|
86
|
-
put "users/#{user.id}", {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
|
87
|
-
assert_equal @original_count + 1, RefererTracking::
|
86
|
+
put "/users/#{user.id}", {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
|
87
|
+
assert_equal @original_count + 1, RefererTracking::Tracking.count, "should not create RefererTracking on normal save"
|
88
88
|
|
89
89
|
end
|
90
90
|
|
91
91
|
|
92
92
|
test "error in sweeper should not result error in response" do
|
93
|
-
get 'users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
93
|
+
get '/users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
|
94
94
|
|
95
|
-
RefererTracking::
|
95
|
+
RefererTracking::Tracking.any_instance.stubs(:save).raises(Exception)
|
96
96
|
|
97
|
-
post 'users', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
|
97
|
+
post '/users', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
|
98
98
|
|
99
99
|
assert_response :redirect
|
100
100
|
end
|
101
101
|
|
102
|
-
test "
|
102
|
+
test "be ok when url size limit is between encoded chars" do
|
103
103
|
RefererTracking.set_referer_cookies_ref_url_max_length = 50
|
104
104
|
referer_url = "http://test.xd/?url=http%3A%2F%2Ftest.inv%2Ftest%2Ftest"
|
105
|
-
parseable_url = "http://test.xd/?url=http%3A%2F%2Ftest.inv%2Ftest"
|
106
|
-
get 'users', {}, {"HTTP_REFERER" => referer_url}
|
105
|
+
parseable_url = "http://test.xd/?url=http%3A%2F%2Ftest.inv%2Ftest%2" # first 50 chars, ending %2
|
106
|
+
get '/users', {}, {"HTTP_REFERER" => referer_url}
|
107
107
|
assert_response :success
|
108
108
|
|
109
|
-
post 'users', {}
|
110
|
-
resulted_url = RefererTracking::
|
109
|
+
post '/users', {}
|
110
|
+
resulted_url = RefererTracking::Tracking.first.cookie_referer_url
|
111
111
|
|
112
112
|
assert_equal parseable_url, resulted_url, "should have a parseable referer url"
|
113
113
|
end
|
@@ -115,14 +115,29 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
|
|
115
115
|
test "should stop trying and return the original if url appears unparseable" do
|
116
116
|
RefererTracking.set_referer_cookies_ref_url_max_length = 50
|
117
117
|
original_url = "http\im_actually€Not-Aparseable&URL%"
|
118
|
-
get 'users', {}, {"HTTP_REFERER" => original_url}
|
118
|
+
get '/users', {}, {"HTTP_REFERER" => original_url}
|
119
119
|
assert_response :success
|
120
120
|
|
121
|
-
post 'users', {}
|
122
|
-
|
121
|
+
post '/users', {}
|
122
|
+
assert_equal 1, RefererTracking::Tracking.count, "should create one item"
|
123
|
+
resulted_url = RefererTracking::Tracking.first.cookie_referer_url
|
123
124
|
|
124
125
|
assert_equal original_url, resulted_url, "should return the original url when unparseable"
|
125
126
|
end
|
126
127
|
|
128
|
+
test "custom referer_tracking save work and still should save only one item per request asdf" do
|
129
|
+
RefererTracking.save_cookies = true
|
130
|
+
|
131
|
+
post '/users/create_with_custom_saving', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
|
132
|
+
assert_equal 1, RefererTracking::Tracking.count, "should create one item"
|
133
|
+
end
|
134
|
+
|
135
|
+
test "custom referer_tracking save should not save if item itself is not saved" do
|
136
|
+
RefererTracking.save_cookies = true
|
137
|
+
|
138
|
+
post '/users/build_without_saving', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
|
139
|
+
assert_equal 0, RefererTracking::Tracking.count, "should create one item"
|
140
|
+
end
|
141
|
+
|
127
142
|
end
|
128
143
|
|
data/test/test_helper.rb
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
require "./test/test_helper"
|
2
|
+
|
3
|
+
class TrackingTest < ActiveSupport::TestCase
|
4
|
+
test "module test" do
|
5
|
+
assert_kind_of Module, RefererTracking
|
6
|
+
end
|
7
|
+
|
8
|
+
test "first_url_combined should return cookie url if given" do
|
9
|
+
rt = RefererTracking::Tracking.new
|
10
|
+
rt.session_first_url = 'session_url'
|
11
|
+
assert_equal 'session_url', rt.first_url_combined
|
12
|
+
rt.cookie_first_url = 'cookie_url'
|
13
|
+
assert_equal 'cookie_url', rt.first_url_combined
|
14
|
+
end
|
15
|
+
|
16
|
+
test "add_log_line should work ok" do
|
17
|
+
rt = RefererTracking::Tracking.create
|
18
|
+
|
19
|
+
rt.add_log_line 'first_line'
|
20
|
+
|
21
|
+
rt.add_log_line "second\nline"
|
22
|
+
|
23
|
+
assert (log = RefererTracking::Tracking.last.log)
|
24
|
+
assert_equal 2, log.to_s.lines.count
|
25
|
+
assert_match /#{Date.today.to_s(:db)}.*: first_line$/, log.lines.first
|
26
|
+
assert_match /#{Date.today.to_s(:db)}.*: second line/, log.lines.last
|
27
|
+
end
|
28
|
+
|
29
|
+
test "status_without_save" do
|
30
|
+
rt_created = RefererTracking::Tracking.create
|
31
|
+
rt_created.update_status 'active'
|
32
|
+
assert !rt_created.changed?
|
33
|
+
rt_created.status = 'new_status'
|
34
|
+
assert rt_created.changed?
|
35
|
+
end
|
36
|
+
|
37
|
+
test "status change" do
|
38
|
+
rt_created = RefererTracking::Tracking.create
|
39
|
+
rt_created.update_status 'active'
|
40
|
+
|
41
|
+
rt = RefererTracking::Tracking.last
|
42
|
+
assert_equal 'active', rt.status
|
43
|
+
assert_equal 1, rt.log.lines.count
|
44
|
+
assert_match /#{Date.today.to_s(:db)}.*: status active$/, rt.log
|
45
|
+
|
46
|
+
rt.update_status 'active'
|
47
|
+
assert_equal 1, rt.log.lines.count, "should not alter anything if status stays the same"
|
48
|
+
end
|
49
|
+
|
50
|
+
test "get_log_lines" do
|
51
|
+
rt_created = RefererTracking::Tracking.create
|
52
|
+
rt_created.status = 'active'
|
53
|
+
rt_created.add_log_line 'first_line common'
|
54
|
+
rt_created.add_log_line 'second_line common'
|
55
|
+
rt_created.add_log_line 'third thing'
|
56
|
+
|
57
|
+
rt = RefererTracking::Tracking.last
|
58
|
+
|
59
|
+
match_arr = rt.get_log_lines(/second/)
|
60
|
+
assert_equal 1, match_arr.size
|
61
|
+
result_line = match_arr.first
|
62
|
+
assert result_line.first > 10.seconds.ago && result_line.first < Time.now
|
63
|
+
assert result_line.last
|
64
|
+
|
65
|
+
match_arr = rt.get_log_lines(/common/)
|
66
|
+
assert_equal 2, match_arr.size
|
67
|
+
assert_equal 'first_line common', match_arr.first.last
|
68
|
+
assert_equal 'second_line common', match_arr.last.last
|
69
|
+
end
|
70
|
+
end
|