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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +87 -23
  3. data/app/models/referer_tracking/tracking.rb +53 -0
  4. data/db/migrate/20150424090312_log_and_status.rb +6 -0
  5. data/lib/referer_tracking.rb +51 -22
  6. data/lib/referer_tracking/active_record_extensions.rb +11 -0
  7. data/lib/referer_tracking/controller_addons.rb +57 -0
  8. data/lib/referer_tracking/sweeper.rb +4 -66
  9. data/lib/referer_tracking/version.rb +1 -1
  10. data/test/dummy/app/controllers/users_controller.rb +12 -0
  11. data/test/dummy/app/models/user.rb +4 -0
  12. data/test/dummy/config/environments/test.rb +6 -1
  13. data/test/dummy/config/initializers/referer_tracking.rb +0 -2
  14. data/test/dummy/config/routes.rb +4 -1
  15. data/test/dummy/db/development.sqlite3 +0 -0
  16. data/test/dummy/db/schema.rb +17 -15
  17. data/test/dummy/db/test.sqlite3 +0 -0
  18. data/test/dummy/log/development.log +8 -0
  19. data/test/dummy/log/test.log +28156 -281
  20. data/test/dummy/tmp/cache/assets/test/sprockets/2cd8dbafa2066abde725994dae1058c3 +0 -0
  21. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  22. data/test/dummy/tmp/cache/assets/test/sprockets/669c55c2bc3e16bcc6e4ca54b102fda6 +0 -0
  23. data/test/dummy/tmp/cache/assets/test/sprockets/e067a273d5fdb6cc978465b152e662b5 +0 -0
  24. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  25. data/test/dummy/tmp/cache/assets/test/sprockets/fd2dc9334cabdf1812653883c577dfaf +0 -0
  26. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0G3oFbqJ7eFUY0UdwEjScsfwwbPpWiWBNw09qdd1ohI.cache +0 -0
  27. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0Z6bW0B1kuGtkIeYr4ThAL4uqYBz_KTiRnIbWojB7Aw.cache +1 -0
  28. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1H1i5_RyMh4B7slWyR-5HmOLlYMLqwBoIHac9sf2UGU.cache +1 -0
  29. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2i17CO5DMhuAQ23V2NrBSC1m1qGbVEcfTQPOZvRGs8E.cache +1 -0
  30. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/46JXON6AslwNbbvz__9ddRiVifnFuk8ifD2rSIS85-M.cache +0 -0
  31. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4JY-SwetEJ9O6ZGcQcZ26z5Lwa71xMfRmfgrUMivfFY.cache +0 -0
  32. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/523-OCQbCRB1j_tlqIjEssUe6m7reS6feGOWn7hrV4c.cache +0 -0
  33. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8SS1Jdp7AgUHgLl0L-2n3KE2-WflAeaChclAGEW_SFM.cache +1 -0
  34. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8yLF7Pm-8w-1cv3HnmHv6MSOWaTEPh6hBWRdTY7eCrI.cache +1 -0
  35. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9rTAa3n4m_1tnYuo_PQBUe9AHWAx8DmbK07tjEDBJYk.cache +2 -0
  36. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Awt8aE1L6iJxPHDB19XLUcrdBHzK7yH-x57kv_NKojU.cache +0 -0
  37. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Bee-ZlOeMpd0qyQPbZ3i8ZoH7Yhw2coD8YL3-9GViAw.cache +0 -0
  38. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DQ-VfoAVjHpu1y8DR1HQVmz_IAVzAgEOv2UGjbvlMLM.cache +1 -0
  39. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EQ5-Zi3kqng0IGc-dOuC3Nb6AJ7itxt2EhoMRjAZM78.cache +0 -0
  40. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HBa9hNZdUCrVlnn4DcWwu8ujBPsPhHj-SzAxTHx3gyM.cache +0 -0
  41. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JoQJIRS5fitTPBwEToHFffx8wzQh1OGFAu5xDSz11I8.cache +0 -0
  42. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MTXn13WRB7BfO1V3dblDHLOM3_n2bwr2PxtPNg0eo9A.cache +0 -0
  43. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MVvZCkjLbPbkR9gt8wskucEPJHuRZbsq0WzftgYgBrs.cache +1 -0
  44. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NGMpC_EFlJjbA20OjGoJtJfynmG55lVXqEBQElL0J8c.cache +1 -0
  45. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NW6MHRYmTMyI512aPcOJ4s6tgW0o_sXXmgrqQfKzkSs.cache +1 -0
  46. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O2agJjKw-HXlfsSATA2_aeqgAYO4bWrWRd1bcTN5_C0.cache +1 -0
  47. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OVj6tY43u7jqUGurvVYkWx3HFRru4oH1hxmXKnz_itc.cache +1 -0
  48. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PWG7LBu6STtK0n1rFJDQjW5x3J7tQd_Ij06lNYAzym0.cache +1 -0
  49. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PghEL7Jal_M5xfjdzxnW-Jiq-6kt7W49FaF44yRK3Yk.cache +0 -0
  50. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RYnKHL96X2OWT7cQwEm1CEbN-kP9jamPCD8Viq5WOJs.cache +2 -0
  51. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RvE2VrcnvR4vet1dyPKMSOu-qTSXJUVbsONOudiUiqo.cache +0 -0
  52. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YhdJORPRV4WeWGbpN4lF7qM1JemsU0sSBBFSeCjK5Zk.cache +2 -0
  53. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_zleWcY3FPsUHamwtaWVGPFC2ZrfVEdPcPxtZ0ncAKQ.cache +0 -0
  54. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aOYT6AMsiiCTko9bck34eQ_cpji7JFJkcO6Gih7XwY0.cache +0 -0
  55. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e6QsN5AJT0NQ1szDvc8kkfCz6XVVjVWDNHKP6f0YoSo.cache +2 -0
  56. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/esK4x1b0AOlLi9q6KDmOPKMPG6uS7tF2XVFfrQpIgwU.cache +1 -0
  57. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fUBHMp2rRJ2R0D76_G51M7lBmOZpVQzuaSjbitW7IFc.cache +1 -0
  58. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gBSV6LbejlEAByktpuqDpXQOiHSTl-EHI5c0MW6-8rw.cache +1 -0
  59. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/guTw1gpaRgyeuxZQ3eQFePUZcp9d-v1IWXG5qm_PTGY.cache +0 -0
  60. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hM0aSE9SRyMgQSqQY_G3js1_4dSng4Q9vnWpgMqFWTc.cache +0 -0
  61. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hg6DQjmNFxgP1ABwg213wrPGMurhGbyC2SJWF_eR3EM.cache +1 -0
  62. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/i0po6m1De10_m-wY5hbOaMN1dZbKIitPo3bn9EcqeA4.cache +0 -0
  63. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/igBCEQJL_hNTNkZQWbXcg0FX23pPTcv61SiuP8sww4Q.cache +0 -0
  64. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/im21DLPpH4nyd4LX8cmORbNfg7jUx_PEXXMwJA87Qsw.cache +1 -0
  65. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/joYQeCzbCCq4TvDcSpRWsiaR0i4HVRDhLBrQOenKw_U.cache +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jpA0RKjvuqt6qEaIASWc8qU1VB0Aydp6JgbzLhpGUOQ.cache +1 -0
  67. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k__HZRe6MJEx_es4mae2UKNJ7S-xQjjtNvuWfURI2L8.cache +1 -0
  68. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kl1-ITbGxlNpIH_bdRiAd4APIX9fZOYgmo0XXZcrvgo.cache +1 -0
  69. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mUqHquf2Zmd8u6uiyK61Ezlu1TcpGRVaTOWUxxGEi1Q.cache +2 -0
  70. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n8Aje18PD8oQE5TPpOTUD3BGZ7_TmvPPZ5eXDXoq8Gg.cache +1 -0
  71. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ngUc-SbI6D2rZ8MAICdvGgIewOpQ-2Pl0CILWKGcq3U.cache +0 -0
  72. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pwDXjciqVi1_CS4MlD2TH1ZqbzXchkMonNpsttR96Vk.cache +1 -0
  73. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qkq4_FDzkYw-Jgf-PQ1QvZRMOcpJieAhpakErII07uI.cache +2 -0
  74. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qmTv4Or54pJag3e-RuC8J8YBw5WvkzqP36yA1qF7brA.cache +0 -0
  75. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r6gN_QsTAf7c1o4Cst-frjvGHokmbxsEOdSr4mkMEJI.cache +1 -0
  76. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/reN5Eb8r7-aFzpa3gnf0d-hIULaqBhZbU3j6bHL8c54.cache +1 -0
  77. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ss0roaA9M5TQHC9lcaT0WzZ401TWw-pTCBcrTYorKrU.cache +1 -0
  78. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tZ-5zRkNGhZpjLydDPN14TgvqrG-sRsmhjHmD16K9w4.cache +0 -0
  79. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uAeR8lWRY18fsV62fVeVlDfQL-0svUgCWxUntrKiscM.cache +1 -0
  80. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ut0rmLnfJ-Ischq127ylQ8-6EKVPTiko_mqVVAuMli8.cache +0 -0
  81. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vXSDU5apajRzjlgKITJW6ww-R5nViNgTca-WgN2rQjA.cache +1 -0
  82. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v_Ilb0G5vj-RNZGvNkGntio2WXLwx0dLgXj22KrEF1A.cache +1 -0
  83. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xE2R25fLVYnFI2W6I4LvT03gascYQsI-YR4dr_274d8.cache +0 -0
  84. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xyZgV6TicjUr8zQ2arynATHycCL5HEg4v44PTplSlCE.cache +1 -0
  85. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y9ZtIMFclPh-m6WSjAOTLR1Oz8oUv8IF4DdJDKgCgDE.cache +0 -0
  86. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zhLZKiMTXH3IgicVp2uI18ziLOLaV51MjYysWkjSLrw.cache +0 -0
  87. data/test/integration/referer_tracking/has_tracking_test.rb +31 -0
  88. data/test/integration/referer_tracking/referer_session_test.rb +42 -27
  89. data/test/test_helper.rb +1 -0
  90. data/test/tracking_test.rb +70 -0
  91. metadata +143 -9
  92. data/app/models/referer_tracking/referer_tracking.rb +0 -16
  93. data/test/referer_tracking_test.rb +0 -7
@@ -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
@@ -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
@@ -0,0 +1,2 @@
1
+ "%����͹mm�
2
+ a�l�|a56���v�6}��(&5
@@ -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
@@ -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
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"mfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery.js;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"mfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery.js;TT
@@ -0,0 +1,2 @@
1
+ "%�=h�C-�\h?u�A��)zڭa�!o
2
+ �ЋI
@@ -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��:�
@@ -0,0 +1 @@
1
+ "%����"m�J���S��E�j!�/�d�]�/[���
@@ -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
@@ -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,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"qfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery_ujs.js;TT
@@ -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
@@ -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
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"qfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery_ujs.js;TT
@@ -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
@@ -0,0 +1 @@
1
+ "%��)��~&�mP�C?��EF@ �'���|k��
@@ -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
@@ -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
@@ -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 File.dirname(__FILE__) + '/../../test_helper'
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::RefererTracking.count
45
+ @original_count = RefererTracking::Tracking.count
47
46
 
48
- post 'users', {:user => {:name => 'test 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::RefererTracking.count, "did not create referer tracking"
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::RefererTracking.order(:created_at).last
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::RefererTracking.count, "should not create RefererTracking on normal save"
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::RefererTracking.any_instance.stubs(:save).raises(Exception)
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 "should try to make urls parseable before saving" do
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::RefererTracking.first.cookie_referer_url
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
- resulted_url = RefererTracking::RefererTracking.first.cookie_referer_url
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
@@ -3,6 +3,7 @@ ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
+ require "mocha/setup"
6
7
 
7
8
  Rails.backtrace_cleaner.remove_silencers!
8
9
 
@@ -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