webex_xml_api 0.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 +7 -0
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +1 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +16 -0
- data/.simplecov +1 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +94 -0
- data/Rakefile +7 -0
- data/certs/erolms.pem +21 -0
- data/lib/webex_xml_api.rb +11 -0
- data/lib/webex_xml_api/common.rb +52 -0
- data/lib/webex_xml_api/exceptions.rb +21 -0
- data/lib/webex_xml_api/meeting/create_meeting.rb +326 -0
- data/lib/webex_xml_api/meeting/del_meeting.rb +44 -0
- data/lib/webex_xml_api/meeting/get_meeting.rb +44 -0
- data/lib/webex_xml_api/meeting/getjoinurl_meeting.rb +45 -0
- data/lib/webex_xml_api/security_context.rb +43 -0
- data/lib/webex_xml_api/user/get_user.rb +43 -0
- data/lib/webex_xml_api/version.rb +3 -0
- data/spec/fixtures/meeting_create_meeting_request.xml +9 -0
- data/spec/fixtures/meeting_create_meeting_response_bad.xml +12 -0
- data/spec/fixtures/meeting_create_meeting_response_good.xml +12 -0
- data/spec/fixtures/meeting_del_meeting_request.xml +9 -0
- data/spec/fixtures/meeting_del_meeting_response_bad.xml +12 -0
- data/spec/fixtures/meeting_del_meeting_response_good.xml +12 -0
- data/spec/fixtures/meeting_get_meeting_request.xml +9 -0
- data/spec/fixtures/meeting_get_meeting_response_bad.xml +12 -0
- data/spec/fixtures/meeting_get_meeting_response_good.xml +12 -0
- data/spec/fixtures/meeting_getjoinurl_meeting_request.xml +9 -0
- data/spec/fixtures/meeting_getjoinurl_meeting_response_bad.xml +12 -0
- data/spec/fixtures/meeting_getjoinurl_meeting_response_good.xml +12 -0
- data/spec/fixtures/user_get_user_request.xml +9 -0
- data/spec/fixtures/user_get_user_response_bad.xml +12 -0
- data/spec/fixtures/user_get_user_response_good.xml +12 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/webex_xml_api/common_spec.rb +7 -0
- data/spec/webex_xml_api/exceptions_spec.rb +54 -0
- data/spec/webex_xml_api/meeting/create_meeting_spec.rb +131 -0
- data/spec/webex_xml_api/meeting/del_meeting_spec.rb +85 -0
- data/spec/webex_xml_api/meeting/get_meeting_spec.rb +85 -0
- data/spec/webex_xml_api/meeting/getjoinurl_meeting_spec.rb +87 -0
- data/spec/webex_xml_api/security_context_spec.rb +60 -0
- data/spec/webex_xml_api/user/get_user_spec.rb +82 -0
- data/spec/webex_xml_api_spec.rb +7 -0
- data/webex_xml_api.gemspec +32 -0
- metadata +249 -0
- metadata.gz.sig +1 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WebexXmlApi::Error do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe '#ancestors' do
|
7
|
+
subject { super().ancestors }
|
8
|
+
it { is_expected.to include(StandardError) }
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'raises an error' do
|
12
|
+
it 'with message' do
|
13
|
+
expect { raise WebexXmlApi::Error, 'this message exactly' }
|
14
|
+
.to raise_error('this message exactly')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe WebexXmlApi::NotEnoughArguments do
|
19
|
+
describe '#ancestors' do
|
20
|
+
subject { super().ancestors }
|
21
|
+
it { is_expected.to include(WebexXmlApi::Error) }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'raises an error' do
|
25
|
+
it 'with message' do
|
26
|
+
expect { raise WebexXmlApi::NotEnoughArguments, 'this message exactly' }
|
27
|
+
.to raise_error('this message exactly')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe WebexXmlApi::RequestFailed do
|
33
|
+
describe '#ancestors' do
|
34
|
+
subject { super().ancestors }
|
35
|
+
it { is_expected.to include(WebexXmlApi::Error) }
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'raises an error' do
|
39
|
+
before(:each) do
|
40
|
+
@resp = {}
|
41
|
+
@resp[:code] = '999'
|
42
|
+
@resp[:text] = 'Error text'
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'returns a response object and error message' do
|
46
|
+
expect { raise WebexXmlApi::RequestFailed.new(@resp), 'this message' }
|
47
|
+
.to raise_error { |error|
|
48
|
+
expect(error.message).to eql('this message')
|
49
|
+
expect(error.response).to eql(@resp)
|
50
|
+
}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WebexXmlApi::Meeting::CreateMeeting do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'creates new security_context' do
|
8
|
+
sm = subject.new(site_name: 'test')
|
9
|
+
expect(sm.security_context).to be
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#to_xml' do
|
14
|
+
it 'raises a NotEnoughArguments exception if arguments missing' do
|
15
|
+
sm = subject.new(site_name: 'test')
|
16
|
+
expect { sm.to_xml }
|
17
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments,
|
18
|
+
'Meeting::CreateMeeting')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns formatted XML text' do
|
22
|
+
expected = file_fixture('meeting_create_meeting_request.xml')
|
23
|
+
sm = subject.new(site_name: 'test', webex_id: '123456', password: 'test')
|
24
|
+
sm.conf_name = 'Test-Meeting via XML API'
|
25
|
+
sm.start_date = '07/30/2016 15:00:00'
|
26
|
+
sm.duration = '60'
|
27
|
+
expect(sm.to_xml).to eql(expected)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#valid?' do
|
32
|
+
it 'fails if required fields are missing' do
|
33
|
+
sm = subject.new
|
34
|
+
expect(sm.valid?).to be_falsey
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'succeeds if all required parameters are set' do
|
38
|
+
sm = subject.new
|
39
|
+
sm.conf_name = 'Test-Meeting via XML API'
|
40
|
+
sm.start_date = '07/30/2016 15:00:00'
|
41
|
+
sm.duration = '60'
|
42
|
+
expect(sm.valid?).to be_truthy
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#send_request' do
|
47
|
+
it 'raises a NotEnoughArguments exception for CreateMeeting' do
|
48
|
+
sm = subject.new(site_name: 'test')
|
49
|
+
expect { sm.send_request }
|
50
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments,
|
51
|
+
'Meeting::CreateMeeting')
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'raises a NotEnoughArguments exception for SecurityContext' do
|
55
|
+
sm = subject.new(site_name: 'test')
|
56
|
+
sm.conf_name = 'Test-Meeting via XML API'
|
57
|
+
sm.start_date = '07/30/2016 15:00:00'
|
58
|
+
sm.duration = '60'
|
59
|
+
expect { sm.send_request }
|
60
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'SecurityContext')
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'raises a RequestFailed exception with error message' do
|
64
|
+
sm = subject.new(site_name: 'test', webex_id: 'test', password: 'test')
|
65
|
+
sm.conf_name = 'Test-Meeting via XML API'
|
66
|
+
sm.start_date = '07/30/2016 15:00:00'
|
67
|
+
sm.duration = '60'
|
68
|
+
bad_reply = file_fixture('meeting_create_meeting_response_bad.xml')
|
69
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
70
|
+
.to_return(bad_reply)
|
71
|
+
expect { sm.send_request }
|
72
|
+
.to raise_error { |error|
|
73
|
+
expect(error.message)
|
74
|
+
.to eql('Error 060026: Meeting password must not be null')
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns Response bodyContent as hash' do
|
79
|
+
sm = subject.new(site_name: 'test', webex_id: 'test', password: 'test')
|
80
|
+
sm.conf_name = 'Test-Meeting via XML API'
|
81
|
+
sm.start_date = '07/30/2016 15:00:00'
|
82
|
+
sm.duration = '60'
|
83
|
+
good_reply = file_fixture('meeting_create_meeting_response_good.xml')
|
84
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
85
|
+
.to_return(good_reply)
|
86
|
+
ret = sm.send_request
|
87
|
+
expect(ret).to be
|
88
|
+
expect(ret.key?('iCalendarURL')).to be_truthy
|
89
|
+
expect(ret['meetingkey']).to eql('123456789')
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#getters_and_setters' do
|
94
|
+
it 'sets and reads instance variables' do
|
95
|
+
sm = subject.new
|
96
|
+
expect(sm.conf_name = 'tst').to eql(sm.conf_name)
|
97
|
+
expect(sm.agenda = 'tst').to eql(sm.agenda)
|
98
|
+
expect(sm.meeting_password = 'tst').to eql(sm.meeting_password)
|
99
|
+
expect(sm.start_date = 'tst').to eql(sm.start_date)
|
100
|
+
expect(sm.duration = 'tst').to eql(sm.duration)
|
101
|
+
expect(sm.open_time = 'tst').to eql(sm.open_time)
|
102
|
+
expect(sm.join_teleconf_before_host = 'tst')
|
103
|
+
.to eql(sm.join_teleconf_before_host)
|
104
|
+
expect(sm.first_attendee_as_presenter = 'tst')
|
105
|
+
.to eql(sm.first_attendee_as_presenter)
|
106
|
+
expect(sm.telephony_support = 'tst').to eql(sm.telephony_support)
|
107
|
+
expect(sm.intl_local_call_in = 'tst').to eql(sm.intl_local_call_in)
|
108
|
+
expect(sm.teleconf_location = 'tst').to eql(sm.teleconf_location)
|
109
|
+
expect(sm.is_mp_audio = 'tst').to eql(sm.is_mp_audio)
|
110
|
+
expect(sm.enable_chat = 'tst').to eql(sm.enable_chat)
|
111
|
+
expect(sm.enable_audio_video = 'tst').to eql(sm.enable_audio_video)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#start_date' do
|
116
|
+
it 'converts DateTime to formatted string' do
|
117
|
+
sm = subject.new
|
118
|
+
expected = '07/29/2016 16:00:00'
|
119
|
+
input = DateTime.new(2016, 7, 29, 16, 0, 0)
|
120
|
+
sm.start_date = input
|
121
|
+
expect(sm.start_date).to eql(expected)
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'passes string without conversion' do
|
125
|
+
sm = subject.new
|
126
|
+
expected = '07/29/2016 16:59:59'
|
127
|
+
sm.start_date = expected
|
128
|
+
expect(sm.start_date).to eql(expected)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WebexXmlApi::Meeting::DelMeeting do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'creates attr_accessors and sets variables' do
|
8
|
+
dm = subject.new(site_name: 'test', meeting_key: '123456789')
|
9
|
+
expect(dm.meeting_key).to eql('123456789')
|
10
|
+
expect(dm.security_context).to be
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'ignores invalid parameters' do
|
14
|
+
dm = subject.new(meeting_key: '123456789', invalid_param: 'test')
|
15
|
+
expect(dm.meeting_key).to eql('123456789')
|
16
|
+
expect(dm).not_to respond_to(:invalid_param)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#to_xml' do
|
21
|
+
it 'raises a NotEnoughArguments exception if arguments missing' do
|
22
|
+
dm = subject.new(site_name: 'test')
|
23
|
+
expect { dm.to_xml }
|
24
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'Meeting::DelMeeting')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns formatted XML text' do
|
28
|
+
expected = file_fixture('meeting_del_meeting_request.xml')
|
29
|
+
dm = subject.new(site_name: 'test', webex_id: '123456', password: 'test',
|
30
|
+
meeting_key: '123456789')
|
31
|
+
expect(dm.to_xml).to eql(expected)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#valid?' do
|
36
|
+
it 'fails if meeting_key is missing' do
|
37
|
+
dm = subject.new
|
38
|
+
expect(dm.valid?).to be_falsey
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'succeeds if all required parameters are set' do
|
42
|
+
dm = subject.new(meeting_key: '123456789')
|
43
|
+
expect(dm.valid?).to be_truthy
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#send_request' do
|
48
|
+
it 'raises a NotEnoughArguments exception for DelMeeting' do
|
49
|
+
dm = subject.new(site_name: 'test')
|
50
|
+
expect { dm.send_request }
|
51
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'Meeting::DelMeeting')
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'raises a NotEnoughArguments exception for SecurityContext' do
|
55
|
+
dm = subject.new(site_name: 'test', meeting_key: '123456789')
|
56
|
+
expect { dm.send_request }
|
57
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'SecurityContext')
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'raises a RequestFailed exception with error message' do
|
61
|
+
dm = subject.new(site_name: 'test', webex_id: 'test', password: 'test',
|
62
|
+
meeting_key: '987654321')
|
63
|
+
bad_reply = file_fixture('meeting_del_meeting_response_bad.xml')
|
64
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
65
|
+
.to_return(bad_reply)
|
66
|
+
expect { dm.send_request }
|
67
|
+
.to raise_error { |error|
|
68
|
+
expect(error.message)
|
69
|
+
.to eql('Error 060001: Corresponding Meeting not found')
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'returns Response bodyContent as hash' do
|
74
|
+
dm = subject.new(site_name: 'test', webex_id: 'test', password: 'test',
|
75
|
+
meeting_key: '123456789')
|
76
|
+
good_reply = file_fixture('meeting_del_meeting_response_good.xml')
|
77
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
78
|
+
.to_return(good_reply)
|
79
|
+
ret = dm.send_request
|
80
|
+
expect(ret).to be
|
81
|
+
expect(ret.key?('iCalendarURL')).to be_truthy
|
82
|
+
expect(ret['iCalendarURL'].key?('host')).to be_truthy
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WebexXmlApi::Meeting::GetMeeting do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'creates attr_accessors and sets variables' do
|
8
|
+
gm = subject.new(site_name: 'test', meeting_key: '123456789')
|
9
|
+
expect(gm.meeting_key).to eql('123456789')
|
10
|
+
expect(gm.security_context).to be
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'ignores invalid parameters' do
|
14
|
+
gm = subject.new(meeting_key: '123456789', invalid_param: 'test')
|
15
|
+
expect(gm.meeting_key).to eql('123456789')
|
16
|
+
expect(gm).not_to respond_to(:invalid_param)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#to_xml' do
|
21
|
+
it 'raises a NotEnoughArguments exception if arguments missing' do
|
22
|
+
gm = subject.new(site_name: 'test')
|
23
|
+
expect { gm.to_xml }
|
24
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'Meeting::GetMeeting')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns formatted XML text' do
|
28
|
+
expected = file_fixture('meeting_get_meeting_request.xml')
|
29
|
+
gm = subject.new(site_name: 'test', webex_id: '123456', password: 'test',
|
30
|
+
meeting_key: '123456789')
|
31
|
+
expect(gm.to_xml).to eql(expected)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#valid?' do
|
36
|
+
it 'fails if meeting_key is missing' do
|
37
|
+
gm = subject.new
|
38
|
+
expect(gm.valid?).to be_falsey
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'succeeds if all required parameters are set' do
|
42
|
+
gm = subject.new(meeting_key: '123456789')
|
43
|
+
expect(gm.valid?).to be_truthy
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#send_request' do
|
48
|
+
it 'raises a NotEnoughArguments exception for GetMeeting' do
|
49
|
+
gm = subject.new(site_name: 'test')
|
50
|
+
expect { gm.send_request }
|
51
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'Meeting::GetMeeting')
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'raises a NotEnoughArguments exception for SecurityContext' do
|
55
|
+
gm = subject.new(site_name: 'test', meeting_key: '123456789')
|
56
|
+
expect { gm.send_request }
|
57
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'SecurityContext')
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'raises a RequestFailed exception with error message' do
|
61
|
+
gm = subject.new(site_name: 'test', webex_id: 'test', password: 'test',
|
62
|
+
meeting_key: '987654321')
|
63
|
+
bad_reply = file_fixture('meeting_get_meeting_response_bad.xml')
|
64
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
65
|
+
.to_return(bad_reply)
|
66
|
+
expect { gm.send_request }
|
67
|
+
.to raise_error { |error|
|
68
|
+
expect(error.message)
|
69
|
+
.to eql('Error 060001: Corresponding Meeting not found')
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'returns Response bodyContent as hash' do
|
74
|
+
gm = subject.new(site_name: 'test', webex_id: 'test', password: 'test',
|
75
|
+
meeting_key: '123456789')
|
76
|
+
good_reply = file_fixture('meeting_get_meeting_response_good.xml')
|
77
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
78
|
+
.to_return(good_reply)
|
79
|
+
ret = gm.send_request
|
80
|
+
expect(ret).to be
|
81
|
+
expect(ret.key?('meetingkey')).to be_truthy
|
82
|
+
expect(ret['hostKey']).to eql('123456')
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WebexXmlApi::Meeting::GetjoinurlMeeting do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'creates attr_accessors and sets variables' do
|
8
|
+
gjum = subject.new(site_name: 'test', session_key: '123456789')
|
9
|
+
expect(gjum.session_key).to eql('123456789')
|
10
|
+
expect(gjum.security_context).to be
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'ignores invalid parameters' do
|
14
|
+
gjum = subject.new(session_key: '123456789', invalid_param: 'test')
|
15
|
+
expect(gjum.session_key).to eql('123456789')
|
16
|
+
expect(gjum).not_to respond_to(:invalid_param)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#to_xml' do
|
21
|
+
it 'raises a NotEnoughArguments exception if arguments missing' do
|
22
|
+
gjum = subject.new(site_name: 'test')
|
23
|
+
expect { gjum.to_xml }
|
24
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments,
|
25
|
+
'Meeting::GetjoinurlMeeting')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns formatted XML text' do
|
29
|
+
expected = file_fixture('meeting_getjoinurl_meeting_request.xml')
|
30
|
+
gjum = subject.new(site_name: 'test', webex_id: '123456',
|
31
|
+
password: 'test', session_key: '123456789')
|
32
|
+
expect(gjum.to_xml).to eql(expected)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#valid?' do
|
37
|
+
it 'fails if session_key is missing' do
|
38
|
+
gjum = subject.new
|
39
|
+
expect(gjum.valid?).to be_falsey
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'succeeds if all required parameters are set' do
|
43
|
+
gjum = subject.new(session_key: '123456789')
|
44
|
+
expect(gjum.valid?).to be_truthy
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#send_request' do
|
49
|
+
it 'raises a NotEnoughArguments exception for GetjoinurlMeeting' do
|
50
|
+
gjum = subject.new(site_name: 'test')
|
51
|
+
expect { gjum.send_request }
|
52
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments,
|
53
|
+
'Meeting::GetjoinurlMeeting')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'raises a NotEnoughArguments exception for SecurityContext' do
|
57
|
+
gjum = subject.new(site_name: 'test', session_key: '123456789')
|
58
|
+
expect { gjum.send_request }
|
59
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'SecurityContext')
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'raises a RequestFailed exception with error message' do
|
63
|
+
gjum = subject.new(site_name: 'test', webex_id: 'test', password: 'test',
|
64
|
+
session_key: '987654321')
|
65
|
+
bad_reply = file_fixture('meeting_getjoinurl_meeting_response_bad.xml')
|
66
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
67
|
+
.to_return(bad_reply)
|
68
|
+
expect { gjum.send_request }
|
69
|
+
.to raise_error { |error|
|
70
|
+
expect(error.message)
|
71
|
+
.to eql('Error 060001: Corresponding Meeting not found')
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'returns Response bodyContent as hash' do
|
76
|
+
gjum = subject.new(site_name: 'test', webex_id: 'test', password: 'test',
|
77
|
+
session_key: '123456789')
|
78
|
+
good_reply = file_fixture('meeting_getjoinurl_meeting_response_good.xml')
|
79
|
+
stub_request(:post, 'https://test.webex.com/WBXService/XMLService')
|
80
|
+
.to_return(good_reply)
|
81
|
+
ret = gjum.send_request
|
82
|
+
expect(ret).to be
|
83
|
+
expect(ret.key?('joinMeetingURL')).to be_truthy
|
84
|
+
expect(ret.key?('inviteMeetingURL')).to be_truthy
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WebexXmlApi::SecurityContext do
|
4
|
+
subject { described_class }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'creates attr_accessors and sets variables' do
|
8
|
+
sc = subject.new(site_name: 'test', site_id: '123456')
|
9
|
+
expect(sc.site_name).to eql('test')
|
10
|
+
expect(sc.site_id).to eql('123456')
|
11
|
+
expect(sc.email).to be_nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'ignores invalid parameters' do
|
15
|
+
sc = subject.new(site_name: 'test', invalid_param: 'test')
|
16
|
+
expect(sc.site_name).to eql('test')
|
17
|
+
expect(sc).not_to respond_to(:invalid_param)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#to_xml' do
|
22
|
+
it 'raises a NotEnoughArguments exception if arguments missing' do
|
23
|
+
sc = subject.new(site_name: 'test')
|
24
|
+
expect { sc.to_xml }
|
25
|
+
.to raise_error(WebexXmlApi::NotEnoughArguments, 'SecurityContext')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns formatted XML text' do
|
29
|
+
expected = "<header>\n <securityContext>\n"
|
30
|
+
expected += " <webExID>test</webExID>\n"
|
31
|
+
expected += " <password>test</password>\n"
|
32
|
+
expected += " <siteName>test</siteName>\n"
|
33
|
+
expected += " </securityContext>\n</header>\n"
|
34
|
+
sc = subject.new(site_name: 'test', webex_id: 'test', password: 'test')
|
35
|
+
expect(sc.to_xml).to eql(expected)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#valid?' do
|
40
|
+
it 'fails if site_name is missing' do
|
41
|
+
sc = subject.new(webex_id: 'test', password: 'test')
|
42
|
+
expect(sc.valid?).to be_falsey
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'fails if webex_id is missing' do
|
46
|
+
sc = subject.new(site_name: 'test', session_ticket: 'test')
|
47
|
+
expect(sc.valid?).to be_falsey
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'fails if password or session_ticket are missing' do
|
51
|
+
sc = subject.new(site_name: 'test', webex_id: 'test')
|
52
|
+
expect(sc.valid?).to be_falsey
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'succeeds if all required parameters are set' do
|
56
|
+
sc = subject.new(site_name: 'test', webex_id: 'test', password: 'test')
|
57
|
+
expect(sc.valid?).to be_truthy
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|