referer_tracking 4.0.1 → 4.1.0
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/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
|