intercom-rails 0.2.24 → 0.2.25
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.
- data/README.mdown +50 -12
- data/Rakefile +3 -11
- data/lib/intercom-rails/auto_include_filter.rb +2 -2
- data/lib/intercom-rails/config.rb +6 -6
- data/lib/intercom-rails/custom_data_helper.rb +1 -1
- data/lib/intercom-rails/import.rb +6 -6
- data/lib/intercom-rails/proxy.rb +9 -4
- data/lib/intercom-rails/proxy/company.rb +3 -3
- data/lib/intercom-rails/script_tag_helper.rb +2 -2
- data/lib/intercom-rails/version.rb +1 -1
- data/lib/rails/generators/intercom/config/config_generator.rb +4 -4
- data/lib/rails/generators/intercom/config/intercom.rb.erb +12 -12
- metadata +75 -47
- checksums.yaml +0 -7
- data/test/action_controller_test_setup.rb +0 -29
- data/test/import_test_setup.rb +0 -84
- data/test/intercom-rails/auto_include_filter_test.rb +0 -187
- data/test/intercom-rails/config_test.rb +0 -79
- data/test/intercom-rails/import_network_test.rb +0 -122
- data/test/intercom-rails/import_unit_test.rb +0 -125
- data/test/intercom-rails/proxy/company_test.rb +0 -46
- data/test/intercom-rails/proxy/user_test.rb +0 -143
- data/test/intercom-rails/script_tag_helper_test.rb +0 -30
- data/test/intercom-rails/script_tag_test.rb +0 -110
- data/test/test_setup.rb +0 -51
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/string/output_safety'
|
2
|
-
require 'test_setup'
|
3
|
-
|
4
|
-
class ScriptTagHelperTest < MiniTest::Unit::TestCase
|
5
|
-
|
6
|
-
include IntercomRails::ScriptTagHelper
|
7
|
-
|
8
|
-
def test_delegates_to_script_tag_generate
|
9
|
-
delegated = false
|
10
|
-
IntercomRails::ScriptTag.stub(:generate) {
|
11
|
-
delegated = true
|
12
|
-
}
|
13
|
-
|
14
|
-
intercom_script_tag({})
|
15
|
-
assert(delegated, "should delegate to ScriptTag#generate")
|
16
|
-
ensure
|
17
|
-
IntercomRails::ScriptTag.rspec_reset
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_sets_instance_variable
|
21
|
-
fake_action_view = fake_action_view_class.new
|
22
|
-
obj = Object.new
|
23
|
-
|
24
|
-
fake_action_view.instance_variable_set(:@controller, obj)
|
25
|
-
|
26
|
-
fake_action_view.intercom_script_tag({})
|
27
|
-
assert_equal obj.instance_variable_get(IntercomRails::SCRIPT_TAG_HELPER_CALLED_INSTANCE_VARIABLE), true
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/string/output_safety'
|
2
|
-
require 'active_support/time'
|
3
|
-
require 'test_setup'
|
4
|
-
|
5
|
-
class ScriptTagTest < MiniTest::Unit::TestCase
|
6
|
-
|
7
|
-
include InterTest
|
8
|
-
include IntercomRails
|
9
|
-
|
10
|
-
def setup
|
11
|
-
super
|
12
|
-
IntercomRails.config.app_id = 'script_tag_test'
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_output_is_html_safe?
|
16
|
-
assert_equal true, ScriptTag.generate({}).html_safe?
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_converts_times_to_unix_timestamps
|
20
|
-
time = Time.new(1993,02,13)
|
21
|
-
top_level_time = ScriptTag.new(:user_details => {:created_at => time})
|
22
|
-
assert_equal time.to_i, top_level_time.intercom_settings[:created_at]
|
23
|
-
|
24
|
-
now = Time.now
|
25
|
-
nested_time = ScriptTag.new(:user_details => {:custom_data => {"something" => now}})
|
26
|
-
assert_equal now.to_i, nested_time.intercom_settings[:custom_data]["something"]
|
27
|
-
|
28
|
-
utc_time = Time.utc(2013,04,03)
|
29
|
-
time_zone = ActiveSupport::TimeZone.new('London')
|
30
|
-
time_with_zone = ActiveSupport::TimeWithZone.new(utc_time, time_zone)
|
31
|
-
time_from_time_with_zone = ScriptTag.new(:user_details => {:created_at => time_with_zone})
|
32
|
-
assert_equal utc_time.to_i, time_from_time_with_zone.intercom_settings[:created_at]
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_strips_out_nil_entries_for_standard_attributes
|
36
|
-
%w(name email user_id).each do |standard_attribute|
|
37
|
-
with_value = ScriptTag.new(:user_details => {standard_attribute => 'value'})
|
38
|
-
assert_equal with_value.intercom_settings[standard_attribute], 'value'
|
39
|
-
|
40
|
-
with_nil_value = ScriptTag.new(:user_details => {standard_attribute.to_sym => 'value'})
|
41
|
-
assert with_nil_value.intercom_settings.has_key?(standard_attribute.to_sym), "should strip :#{standard_attribute} when nil"
|
42
|
-
|
43
|
-
with_nil_value = ScriptTag.new(:user_details => {standard_attribute => 'value'})
|
44
|
-
assert with_nil_value.intercom_settings.has_key?(standard_attribute), "should strip #{standard_attribute} when nil"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_secure_mode_with_email
|
49
|
-
script_tag = ScriptTag.new(:user_details => {:email => 'ciaran@intercom.io'}, :secret => 'abcdefgh')
|
50
|
-
assert_equal OpenSSL::HMAC.hexdigest("sha256", 'abcdefgh', 'ciaran@intercom.io'), script_tag.intercom_settings[:user_hash]
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_secure_mode_with_user_id
|
54
|
-
script_tag = ScriptTag.new(:user_details => {:user_id => '1234'}, :secret => 'abcdefgh')
|
55
|
-
assert_equal OpenSSL::HMAC.hexdigest("sha256", 'abcdefgh', '1234'), script_tag.intercom_settings[:user_hash]
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_secure_mode_with_email_and_user_id
|
59
|
-
script_tag = ScriptTag.new(:user_details => {:user_id => '1234', :email => 'ciaran@intercom.io'}, :secret => 'abcdefgh')
|
60
|
-
assert_equal OpenSSL::HMAC.hexdigest("sha256", 'abcdefgh', '1234'), script_tag.intercom_settings[:user_hash]
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_secure_mode_with_secret_from_config
|
64
|
-
IntercomRails.config.api_secret = 'abcd'
|
65
|
-
script_tag = ScriptTag.new(:user_details => {:email => 'ben@intercom.io'})
|
66
|
-
assert_equal OpenSSL::HMAC.hexdigest("sha256", 'abcd', 'ben@intercom.io'), script_tag.intercom_settings[:user_hash]
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_secure_mode_chooses_passed_secret_over_config
|
70
|
-
IntercomRails.config.api_secret = 'abcd'
|
71
|
-
script_tag = ScriptTag.new(:user_details => {:email => 'ben@intercom.io'}, :secret => '1234')
|
72
|
-
assert_equal OpenSSL::HMAC.hexdigest("sha256", '1234', 'ben@intercom.io'), script_tag.intercom_settings[:user_hash]
|
73
|
-
script_tag = ScriptTag.new(:user_details => {:user_id => 5678}, :secret => '1234')
|
74
|
-
assert_equal OpenSSL::HMAC.hexdigest("sha256", '1234', '5678'), script_tag.intercom_settings[:user_hash]
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_inbox_default_style
|
78
|
-
IntercomRails.config.inbox.style = :default
|
79
|
-
script_tag = ScriptTag.new
|
80
|
-
expected_widget_settings= {'activator' => '#IntercomDefaultWidget'}
|
81
|
-
assert_equal expected_widget_settings, script_tag.intercom_settings['widget']
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_inbox_custom_style
|
85
|
-
IntercomRails.config.inbox.style = :custom
|
86
|
-
script_tag = ScriptTag.new
|
87
|
-
expected_widget_settings = {'activator' => '#Intercom'}
|
88
|
-
assert_equal expected_widget_settings, script_tag.intercom_settings['widget']
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_company_discovery_and_inclusion
|
92
|
-
IntercomRails.config.company.current = Proc.new { @app }
|
93
|
-
object_with_app_instance_variable = Object.new
|
94
|
-
object_with_app_instance_variable.instance_eval do
|
95
|
-
@app = dummy_company
|
96
|
-
end
|
97
|
-
|
98
|
-
script_tag = ScriptTag.new(:controller => object_with_app_instance_variable,
|
99
|
-
:find_current_company_details => true)
|
100
|
-
expected_company = {'id' => '6', 'name' => 'Intercom'}
|
101
|
-
assert_equal expected_company, script_tag.intercom_settings[:company]
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_escapes_html_attributes
|
105
|
-
nasty_email = "</script><script>alert('sup?');</script>"
|
106
|
-
script_tag = ScriptTag.new(:user_details => {:email => nasty_email})
|
107
|
-
assert !script_tag.output.include?(nasty_email), "script tag included"
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
data/test/test_setup.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'intercom-rails'
|
2
|
-
require 'minitest/autorun'
|
3
|
-
require 'rspec/mocks'
|
4
|
-
require 'pry'
|
5
|
-
|
6
|
-
def dummy_user(options = {})
|
7
|
-
user = Struct.new(:email, :name).new
|
8
|
-
user.email = options[:email] || 'ben@intercom.io'
|
9
|
-
user.name = options[:name] || 'Ben McRedmond'
|
10
|
-
user
|
11
|
-
end
|
12
|
-
|
13
|
-
def dummy_company(options = {})
|
14
|
-
company = Struct.new(:id, :name).new
|
15
|
-
company.id = options[:id] || '6'
|
16
|
-
company.name = options[:name] || 'Intercom'
|
17
|
-
company
|
18
|
-
end
|
19
|
-
|
20
|
-
def fake_action_view_class
|
21
|
-
klass = Class.new(ActionView::Base)
|
22
|
-
klass.class_eval do
|
23
|
-
include IntercomRails::ScriptTagHelper
|
24
|
-
attr_reader :controller
|
25
|
-
end
|
26
|
-
klass
|
27
|
-
end
|
28
|
-
|
29
|
-
class Object
|
30
|
-
# any_instance.rspec_reset does not work
|
31
|
-
def self.unstub_all_instance_methods
|
32
|
-
public_instance_methods.each do |method|
|
33
|
-
begin
|
34
|
-
self.any_instance.unstub(method)
|
35
|
-
rescue RSpec::Mocks::MockExpectationError
|
36
|
-
next
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
RSpec::Mocks::setup(Object.new)
|
43
|
-
|
44
|
-
module InterTest
|
45
|
-
|
46
|
-
def setup
|
47
|
-
IntercomRails::Config.reset!
|
48
|
-
super
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|