adobe_connect 1.0.0 → 1.0.2
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/adobe_connect.gemspec +1 -1
- data/lib/adobe_connect.rb +5 -0
- data/lib/adobe_connect/acl_field.rb +60 -0
- data/lib/adobe_connect/base.rb +128 -0
- data/lib/adobe_connect/group.rb +91 -0
- data/lib/adobe_connect/meeting.rb +99 -0
- data/lib/adobe_connect/meeting_folder.rb +12 -0
- data/lib/adobe_connect/param_formatter.rb +6 -0
- data/lib/adobe_connect/response.rb +5 -19
- data/lib/adobe_connect/service.rb +1 -1
- data/lib/adobe_connect/telephony_profile.rb +87 -0
- data/lib/adobe_connect/user.rb +21 -55
- data/lib/adobe_connect/version.rb +1 -1
- data/test/fixtures/acl_field_save_error.xml +6 -0
- data/test/fixtures/acl_field_save_success.xml +7 -0
- data/test/fixtures/acl_field_update_success.xml +7 -0
- data/test/fixtures/{log_in_success.xml → generic_success.xml} +0 -0
- data/test/fixtures/group_is_member.xml +13 -0
- data/test/fixtures/group_is_not_member.xml +5 -0
- data/test/fixtures/group_save_error.xml +6 -0
- data/test/fixtures/group_save_success.xml +9 -0
- data/test/fixtures/group_update_success.xml +9 -0
- data/test/fixtures/meeting_find_by_id_error.xml +4 -0
- data/test/fixtures/meeting_find_by_id_success.xml +16 -0
- data/test/fixtures/meeting_save_error.xml +6 -0
- data/test/fixtures/meeting_save_success.xml +11 -0
- data/test/fixtures/meeting_update_success.xml +11 -0
- data/test/fixtures/telephony_profile_info_success.xml +13 -0
- data/test/fixtures/telephony_profile_list_success.xml +16 -0
- data/test/fixtures/telephony_profile_save_error.xml +6 -0
- data/test/fixtures/telephony_profile_save_success.xml +7 -0
- data/test/fixtures/telephony_profile_update_success.xml +7 -0
- data/test/fixtures/user_update_success.xml +4 -0
- data/test/lib/adobe_connect/acl_field_test.rb +39 -0
- data/test/lib/adobe_connect/adobe_connect_base_tests.rb +121 -0
- data/test/lib/adobe_connect/config_test.rb +1 -1
- data/test/lib/adobe_connect/group_test.rb +77 -0
- data/test/lib/adobe_connect/meeting_folder_test.rb +3 -7
- data/test/lib/adobe_connect/meeting_test.rb +117 -0
- data/test/lib/adobe_connect/param_formatter_test.rb +1 -1
- data/test/lib/adobe_connect/response_test.rb +1 -1
- data/test/lib/adobe_connect/service_test.rb +5 -8
- data/test/lib/adobe_connect/telephony_profile_test.rb +41 -0
- data/test/lib/adobe_connect/user_test.rb +29 -84
- data/test/test_helper.rb +16 -0
- metadata +87 -28
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
class AdobeConnectAclFieldTest < AdobeConnectTestCase
|
4
|
+
|
5
|
+
include AdobeConnectBaseTests
|
6
|
+
|
7
|
+
AdobeConnect::Config.declare do
|
8
|
+
username 'test@example.com'
|
9
|
+
password 'pwd'
|
10
|
+
domain 'http://example.com'
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_attrs_does_not_contain_field_id_when_unpersisted
|
14
|
+
attrs = @connect_acl_field.attrs
|
15
|
+
|
16
|
+
assert !attrs.has_key?(:field_id)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_attrs_contain_field_id_when_persisted
|
20
|
+
@connect_acl_field.instance_variable_set(:@id, '54321')
|
21
|
+
|
22
|
+
attrs = @connect_acl_field.attrs
|
23
|
+
|
24
|
+
assert attrs.has_key?(:field_id)
|
25
|
+
assert_equal '54321', attrs[:field_id]
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
def obj_attrs
|
30
|
+
{ name: 'Phone', obj_type: 'principal' }
|
31
|
+
end
|
32
|
+
|
33
|
+
def obj_attrs_posted
|
34
|
+
{ :object_type => 'object-type-principal', :permission_id => 'manage',
|
35
|
+
:name => 'Phone', :field_type => 'text', :is_required => false,
|
36
|
+
:is_primary => true
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module AdobeConnectBaseTests
|
2
|
+
|
3
|
+
def setup
|
4
|
+
super
|
5
|
+
@ac_class = self.class.to_s.gsub(/^AdobeConnect/, '').gsub(/Test$/,'')
|
6
|
+
@obj_class = "AdobeConnect::#{@ac_class}".constantize
|
7
|
+
@connect_obj = @obj_class.new(obj_attrs)
|
8
|
+
self.instance_variable_set(:"@connect_#{@ac_class.underscore.downcase}", @connect_obj)
|
9
|
+
@method_prefix = @obj_class.config[:ac_method_prefix] || @obj_class.config[:ac_obj_type]
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_initialize_takes_a_hash_with_appropriate_keys
|
13
|
+
obj_attrs.each do |key, value|
|
14
|
+
assert_equal @connect_obj.send(key), value
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_save_persists_obj_to_connect_server
|
19
|
+
ac_response = mock_ac_response(responses[:save_success])
|
20
|
+
|
21
|
+
@connect_obj.service.expects(:"#{@method_prefix}_update").
|
22
|
+
with(obj_attrs_posted).
|
23
|
+
returns(ac_response)
|
24
|
+
|
25
|
+
assert @connect_obj.save
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_save_stores_the_obj_id_on_the_obj
|
29
|
+
ac_response = mock_ac_response(responses[:save_success])
|
30
|
+
|
31
|
+
@connect_obj.service.expects(:"#{@method_prefix}_update").
|
32
|
+
with(obj_attrs_posted).
|
33
|
+
returns(ac_response)
|
34
|
+
|
35
|
+
@connect_obj.save
|
36
|
+
|
37
|
+
assert_equal "26243", @connect_obj.id
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_save_returns_false_on_failure
|
41
|
+
response = mock_ac_response(responses[:save_error])
|
42
|
+
|
43
|
+
@connect_obj.service.
|
44
|
+
expects(:"#{@method_prefix}_update").
|
45
|
+
returns(response)
|
46
|
+
refute @connect_obj.save
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_save_stores_errors_on_failure
|
50
|
+
response = mock_ac_response(responses[:save_error])
|
51
|
+
|
52
|
+
@connect_obj.service.
|
53
|
+
expects(:"#{@method_prefix}_update").
|
54
|
+
returns(response)
|
55
|
+
@connect_obj.save
|
56
|
+
refute_equal 0, @connect_obj.errors.length
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_create_should_return_a_new_obj
|
60
|
+
@obj_class.any_instance.expects(:save).returns(true)
|
61
|
+
|
62
|
+
connect_obj = @obj_class.create(obj_attrs)
|
63
|
+
assert_instance_of @obj_class, connect_obj
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_should_update_obj
|
67
|
+
response = mock_ac_response(responses[:update_success])
|
68
|
+
|
69
|
+
@connect_obj.instance_variable_set(:@id, 26243)
|
70
|
+
|
71
|
+
@connect_obj.service.
|
72
|
+
expects(:"#{@method_prefix}_update").
|
73
|
+
returns(response)
|
74
|
+
|
75
|
+
assert @connect_obj.save
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_should_delete_obj
|
79
|
+
response = mock_ac_response(responses[:generic_success])
|
80
|
+
|
81
|
+
@connect_obj.service.
|
82
|
+
expects(:"#{@connect_obj.send(:delete_method_prefix)}_delete").
|
83
|
+
returns(response)
|
84
|
+
|
85
|
+
assert @connect_obj.delete
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_should_update_permissions_on_obj
|
89
|
+
response = mock_ac_response(responses[:generic_success])
|
90
|
+
|
91
|
+
@connect_obj.service.
|
92
|
+
expects(:permissions_update).
|
93
|
+
with(:acl_id => @connect_obj.id,
|
94
|
+
:principal_id => 123,
|
95
|
+
:permission_id =>'view').
|
96
|
+
returns(response)
|
97
|
+
|
98
|
+
assert @connect_obj.permissions_update(123, 'view')
|
99
|
+
end
|
100
|
+
|
101
|
+
private
|
102
|
+
def load_responses(responses)
|
103
|
+
responses.reduce({}) {|rsps, rsp|
|
104
|
+
rsps.merge(rsp => response_file(rsp.to_s))
|
105
|
+
}
|
106
|
+
end
|
107
|
+
|
108
|
+
def response_file(resp_name, prefix = nil)
|
109
|
+
prefix ||= @ac_class.underscore.downcase
|
110
|
+
File.read(
|
111
|
+
File.expand_path("../../fixtures/#{prefix}_#{resp_name}.xml",
|
112
|
+
File.dirname(__FILE__))
|
113
|
+
).gsub(/\n\s+/, '') #Strip indentation and new lines, they cause issues
|
114
|
+
end
|
115
|
+
|
116
|
+
def responses
|
117
|
+
@rsps ||= load_responses([:save_success, :save_error, :update_success]).
|
118
|
+
merge(:generic_success => response_file('success', 'generic'))
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
class AdobeConnectGroupTest < AdobeConnectTestCase
|
4
|
+
|
5
|
+
include AdobeConnectBaseTests
|
6
|
+
|
7
|
+
AdobeConnect::Config.declare do
|
8
|
+
username 'test@example.com'
|
9
|
+
password 'pwd'
|
10
|
+
domain 'http://example.com'
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_attrs_does_not_contain_principal_id_when_unpersisted
|
14
|
+
attrs = @connect_group.attrs
|
15
|
+
|
16
|
+
assert !attrs.has_key?(:principal_id)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_attrs_contain_principal_id_when_persisted
|
20
|
+
@connect_group.instance_variable_set(:@id, '54321')
|
21
|
+
|
22
|
+
attrs = @connect_group.attrs
|
23
|
+
|
24
|
+
assert attrs.has_key?(:principal_id)
|
25
|
+
assert_equal '54321', attrs[:principal_id]
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_add_member_to_group
|
29
|
+
response = mock_ac_response(responses[:generic_success])
|
30
|
+
|
31
|
+
@connect_group.service.
|
32
|
+
expects(:group_membership_update).
|
33
|
+
returns(response)
|
34
|
+
|
35
|
+
user_stub = mock
|
36
|
+
user_stub.expects(:id).returns(12345)
|
37
|
+
|
38
|
+
assert @connect_group.add_member(user_stub)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_user_is_member_of_group
|
42
|
+
response = mock_ac_response(responses[:is_member])
|
43
|
+
|
44
|
+
@connect_group.id = 12345
|
45
|
+
|
46
|
+
@connect_group.service.
|
47
|
+
expects(:principal_list).
|
48
|
+
returns(response)
|
49
|
+
|
50
|
+
assert @connect_group.is_member?('testuser@example.com')
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_user_is_not_member_of_group
|
54
|
+
response = mock_ac_response(responses[:is_not_member])
|
55
|
+
|
56
|
+
@connect_group.id = 12345
|
57
|
+
|
58
|
+
@connect_group.service.
|
59
|
+
expects(:principal_list).
|
60
|
+
returns(response)
|
61
|
+
|
62
|
+
refute @connect_group.is_member?('testuser@example.com')
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
def obj_attrs
|
67
|
+
{ name: 'Test group', description: 'This is for testing' }
|
68
|
+
end
|
69
|
+
|
70
|
+
def obj_attrs_posted
|
71
|
+
{ name: 'Test group', description: 'This is for testing', :type => 'group', :has_children => 1 }
|
72
|
+
end
|
73
|
+
|
74
|
+
def responses
|
75
|
+
super.merge(load_responses([:is_member, :is_not_member]))
|
76
|
+
end
|
77
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class AdobeConnectMeetingFolderTest <
|
3
|
+
class AdobeConnectMeetingFolderTest < AdobeConnectTestCase
|
4
4
|
|
5
5
|
AdobeConnect::Config.declare do
|
6
6
|
username 'test@example.com'
|
@@ -32,9 +32,7 @@ class AdobeConnectMeetingFolderTest < MiniTest::Unit::TestCase
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_find_returns_a_new_folder
|
35
|
-
|
36
|
-
response.expects(:body).returns(FOLDER_SUCCESS)
|
37
|
-
ac_response = AdobeConnect::Response.new(response)
|
35
|
+
ac_response = mock_ac_response(FOLDER_SUCCESS)
|
38
36
|
|
39
37
|
AdobeConnect::Service.any_instance.
|
40
38
|
expects(:request).
|
@@ -51,9 +49,7 @@ class AdobeConnectMeetingFolderTest < MiniTest::Unit::TestCase
|
|
51
49
|
end
|
52
50
|
|
53
51
|
def test_contents_returns_folder_contents
|
54
|
-
|
55
|
-
response.expects(:body).returns(FOLDER_CONTENTS)
|
56
|
-
ac_response = AdobeConnect::Response.new(response)
|
52
|
+
ac_response = mock_ac_response(FOLDER_CONTENTS)
|
57
53
|
@folder.service.expects(:sco_contents).returns(ac_response)
|
58
54
|
|
59
55
|
assert_equal @folder.contents.xpath('//sco').length, 10
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
class AdobeConnectMeetingTest < AdobeConnectTestCase
|
4
|
+
|
5
|
+
include AdobeConnectBaseTests
|
6
|
+
|
7
|
+
AdobeConnect::Config.declare do
|
8
|
+
username 'test@example.com'
|
9
|
+
password 'pwd'
|
10
|
+
domain 'http://example.com'
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_attrs_contain_type_and_folder_id_when_unpersisted
|
14
|
+
attrs = @connect_meeting.attrs
|
15
|
+
|
16
|
+
assert attrs.has_key?(:type)
|
17
|
+
assert attrs.has_key?(:folder_id)
|
18
|
+
assert !attrs.has_key?(:sco_id)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_attrs_contain_sco_id_when_persisted
|
22
|
+
@connect_meeting.instance_variable_set(:@id, '54321')
|
23
|
+
|
24
|
+
attrs = @connect_meeting.attrs
|
25
|
+
|
26
|
+
assert !attrs.has_key?(:folder_id)
|
27
|
+
assert attrs.has_key?(:sco_id)
|
28
|
+
assert_equal '54321', attrs[:sco_id]
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_find_by_id_should_return_existing_meeting
|
32
|
+
response = mock_ac_response(responses[:find_by_id_success])
|
33
|
+
AdobeConnect::Service.any_instance.expects(:sco_info).
|
34
|
+
with(:sco_id => '98765').
|
35
|
+
returns(response)
|
36
|
+
|
37
|
+
connect_meeting = AdobeConnect::Meeting.find_by_id('98765')
|
38
|
+
assert_instance_of AdobeConnect::Meeting, connect_meeting
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_find_by_id_should_return_nil_if_not_found
|
42
|
+
response = mock_ac_response(responses[:find_by_id_error])
|
43
|
+
AdobeConnect::Service.any_instance.expects(:sco_info).
|
44
|
+
with(:sco_id => '98765').
|
45
|
+
returns(response)
|
46
|
+
|
47
|
+
connect_meeting = AdobeConnect::Meeting.find_by_id('98765')
|
48
|
+
assert_nil connect_meeting
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_add_participant_to_meeting
|
52
|
+
response = mock_ac_response(responses[:generic_success])
|
53
|
+
|
54
|
+
AdobeConnect::Service.any_instance.
|
55
|
+
expects(:permissions_update).
|
56
|
+
with(:acl_id => @connect_meeting.id,
|
57
|
+
:principal_id => 123,
|
58
|
+
:permission_id =>'view').
|
59
|
+
returns(response)
|
60
|
+
|
61
|
+
assert @connect_meeting.add_participant(123)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_add_presenter_to_meeting
|
65
|
+
response = mock_ac_response(responses[:generic_success])
|
66
|
+
|
67
|
+
AdobeConnect::Service.any_instance.
|
68
|
+
expects(:permissions_update).
|
69
|
+
with(:acl_id => @connect_meeting.id,
|
70
|
+
:principal_id => 123,
|
71
|
+
:permission_id =>'mini-host').
|
72
|
+
returns(response)
|
73
|
+
|
74
|
+
assert @connect_meeting.add_presenter(123)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_add_host_to_meeting
|
78
|
+
response = mock_ac_response(responses[:generic_success])
|
79
|
+
|
80
|
+
AdobeConnect::Service.any_instance.
|
81
|
+
expects(:permissions_update).
|
82
|
+
with(:acl_id => @connect_meeting.id,
|
83
|
+
:principal_id => 123,
|
84
|
+
:permission_id =>'host').
|
85
|
+
returns(response)
|
86
|
+
|
87
|
+
assert @connect_meeting.add_host(123)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_remove_user_from_meeting
|
91
|
+
response = mock_ac_response(responses[:generic_success])
|
92
|
+
|
93
|
+
AdobeConnect::Service.any_instance.
|
94
|
+
expects(:permissions_update).
|
95
|
+
with(:acl_id => @connect_meeting.id,
|
96
|
+
:principal_id => 123,
|
97
|
+
:permission_id =>'remove').
|
98
|
+
returns(response)
|
99
|
+
|
100
|
+
assert @connect_meeting.remove_user(123)
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
def obj_attrs
|
105
|
+
{ description: 'This is an important meeting',
|
106
|
+
name: 'Important Meeting', folder_id: '12345' }
|
107
|
+
end
|
108
|
+
|
109
|
+
def obj_attrs_posted
|
110
|
+
{ date_end: nil, date_begin: nil, description: 'This is an important meeting',
|
111
|
+
name: 'Important Meeting', url_path: nil, type: 'meeting', folder_id: '12345' }
|
112
|
+
end
|
113
|
+
|
114
|
+
def responses
|
115
|
+
super.merge(load_responses([:find_by_id_success, :find_by_id_error]))
|
116
|
+
end
|
117
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class AdobeConnectParamFormatterTest <
|
3
|
+
class AdobeConnectParamFormatterTest < AdobeConnectTestCase
|
4
4
|
def setup
|
5
5
|
params = { :a => 1, :b => 'param value', 'dashed_value' => 3 }
|
6
6
|
@formatter = AdobeConnect::ParamFormatter.new(params)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require File.expand_path('../../test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
class AdobeConnectServiceTest <
|
3
|
+
class AdobeConnectServiceTest < AdobeConnectTestCase
|
4
4
|
|
5
|
-
LOGIN_SUCCESS = File.read(File.expand_path('../../fixtures/
|
5
|
+
LOGIN_SUCCESS = File.read(File.expand_path('../../fixtures/generic_success.xml', File.dirname(__FILE__)))
|
6
6
|
LOGIN_FAIL = File.read(File.expand_path('../../fixtures/log_in_fail.xml', File.dirname(__FILE__)))
|
7
7
|
|
8
8
|
def setup
|
@@ -24,9 +24,8 @@ class AdobeConnectServiceTest < MiniTest::Unit::TestCase
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_log_in_authenticates
|
27
|
-
response =
|
27
|
+
response = mock_response(LOGIN_SUCCESS)
|
28
28
|
response.expects(:fetch).with('set-cookie').returns('BREEZESESSION=12345')
|
29
|
-
response.expects(:body).returns(LOGIN_SUCCESS)
|
30
29
|
@service.client.stubs(:get).returns(response)
|
31
30
|
|
32
31
|
@service.log_in
|
@@ -34,9 +33,8 @@ class AdobeConnectServiceTest < MiniTest::Unit::TestCase
|
|
34
33
|
end
|
35
34
|
|
36
35
|
def test_log_in_creates_a_session
|
37
|
-
response =
|
36
|
+
response = mock_response(LOGIN_SUCCESS)
|
38
37
|
response.expects(:fetch).with('set-cookie').returns('BREEZESESSION=12345;HttpOnly;path=/')
|
39
|
-
response.expects(:body).returns(LOGIN_SUCCESS)
|
40
38
|
@service.client.stubs(:get).
|
41
39
|
with("/api/xml?action=login&login=name&password=password").
|
42
40
|
returns(response)
|
@@ -46,8 +44,7 @@ class AdobeConnectServiceTest < MiniTest::Unit::TestCase
|
|
46
44
|
end
|
47
45
|
|
48
46
|
def test_log_in_returns_false_on_failure
|
49
|
-
response =
|
50
|
-
response.expects(:body).returns(LOGIN_FAIL)
|
47
|
+
response = mock_response(LOGIN_FAIL)
|
51
48
|
@service.client.stubs(:get).returns(response)
|
52
49
|
|
53
50
|
refute @service.log_in
|