exchanger 0.1.3 → 0.1.4
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
- data/README.md +53 -0
- data/lib/exchanger.rb +2 -0
- data/lib/exchanger/elements/attendee.rb +4 -0
- data/lib/exchanger/elements/base_folder.rb +9 -0
- data/lib/exchanger/elements/calendar_item.rb +5 -0
- data/lib/exchanger/elements/calendar_view.rb +12 -0
- data/lib/exchanger/elements/item.rb +9 -0
- data/lib/exchanger/operations/create_item.rb +4 -2
- data/lib/exchanger/operations/find_item.rb +5 -1
- data/lib/exchanger/persistence.rb +4 -0
- data/lib/exchanger/version.rb +1 -1
- data/spec/cassettes/contact/destroy.yml +58 -0
- data/spec/cassettes/contact/destroy_setup.yml +61 -0
- data/spec/cassettes/contact/find.yml +119 -0
- data/spec/cassettes/contact/find_setup.yml +61 -0
- data/spec/cassettes/contact/save.yml +399 -0
- data/spec/cassettes/contact/save_cleanup.yml +58 -0
- data/spec/cassettes/folder/find_calendar.yml +60 -0
- data/spec/cassettes/folder/find_contacts.yml +60 -0
- data/spec/cassettes/folder/find_root.yml +60 -0
- data/spec/cassettes/folder/find_root_folders.yml +108 -0
- data/spec/cassettes/get_user_availability.yml +75 -0
- data/spec/cassettes/get_user_availability_default.yml +78 -0
- data/spec/cassettes/mailbox/search_test.yml +58 -0
- data/spec/cassettes/mailbox/search_test_members.yml +58 -0
- data/spec/config.yml +9 -6
- data/spec/config.yml.example +3 -3
- data/spec/exchanger/calendar_folder_spec.rb +13 -0
- data/spec/exchanger/calendar_item_spec.rb +13 -0
- data/spec/{client_spec.rb → exchanger/client_spec.rb} +1 -1
- data/spec/exchanger/contact_spec.rb +102 -0
- data/spec/exchanger/element_spec.rb +4 -0
- data/spec/{field_spec.rb → exchanger/field_spec.rb} +1 -1
- data/spec/exchanger/folder_spec.rb +17 -0
- data/spec/exchanger/get_user_availability_spec.rb +46 -0
- data/spec/exchanger/mailbox_spec.rb +18 -0
- data/spec/fixtures/get_user_availability.yml +4 -0
- data/spec/fixtures/get_user_availability.yml.example +3 -3
- data/spec/spec_helper.rb +18 -1
- metadata +91 -69
- data/spec/calendar_item_spec.rb +0 -26
- data/spec/contact_spec.rb +0 -67
- data/spec/element_spec.rb +0 -4
- data/spec/folder_spec.rb +0 -13
- data/spec/get_user_availability_spec.rb +0 -44
- data/spec/mailbox_spec.rb +0 -9
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n
|
9
|
+
\ <soap:Body>\n <ResolveNames xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"
|
10
|
+
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\" ReturnFullContactData=\"true\">\n
|
11
|
+
\ <UnresolvedEntry>test</UnresolvedEntry>\n </ResolveNames>\n </soap:Body>\n</soap:Envelope>\n"
|
12
|
+
headers:
|
13
|
+
Soapaction:
|
14
|
+
- http://schemas.microsoft.com/exchange/services/2006/messages/ResolveNames
|
15
|
+
Content-Type:
|
16
|
+
- text/xml; charset=utf-8
|
17
|
+
Authorization:
|
18
|
+
- Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
|
19
|
+
response:
|
20
|
+
status:
|
21
|
+
code: 200
|
22
|
+
message: OK
|
23
|
+
headers:
|
24
|
+
Cache-Control:
|
25
|
+
- private
|
26
|
+
Transfer-Encoding:
|
27
|
+
- chunked
|
28
|
+
Content-Type:
|
29
|
+
- text/xml; charset=utf-8
|
30
|
+
Server:
|
31
|
+
- Microsoft-IIS/7.5
|
32
|
+
Requestid:
|
33
|
+
- cdb57036-f54d-425e-9c5f-b250b6ec9b03
|
34
|
+
Set-Cookie:
|
35
|
+
- exchangecookie=bb7d6333d15c4304a021f3518b6604ed; expires=Fri, 11-Oct-2013
|
36
|
+
19:30:41 GMT; path=/; HttpOnly
|
37
|
+
X-Aspnet-Version:
|
38
|
+
- 2.0.50727
|
39
|
+
X-Powered-By:
|
40
|
+
- ASP.NET
|
41
|
+
X-Diaginfo:
|
42
|
+
- AMSPRD0710CA016
|
43
|
+
Date:
|
44
|
+
- Thu, 11 Oct 2012 19:30:40 GMT
|
45
|
+
body:
|
46
|
+
encoding: US-ASCII
|
47
|
+
string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
|
48
|
+
MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
|
49
|
+
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
|
50
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
|
51
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:ResolveNamesResponse
|
52
|
+
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:ResolveNamesResponseMessage
|
53
|
+
ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:ResolutionSet
|
54
|
+
TotalItemsInView="1" IncludesLastItemInRange="true"><t:Resolution><t:Mailbox><t:Name>Test</t:Name><t:EmailAddress>test@ebeigarts.onmicrosoft.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>PublicDL</t:MailboxType></t:Mailbox><t:Contact><t:DisplayName>Test</t:DisplayName><t:EmailAddresses><t:Entry
|
55
|
+
Key="EmailAddress1">SMTP:test@ebeigarts.onmicrosoft.com</t:Entry></t:EmailAddresses><t:ContactSource>ActiveDirectory</t:ContactSource></t:Contact></t:Resolution></m:ResolutionSet></m:ResolveNamesResponseMessage></m:ResponseMessages></m:ResolveNamesResponse></s:Body></s:Envelope>
|
56
|
+
http_version:
|
57
|
+
recorded_at: Thu, 11 Oct 2012 19:30:41 GMT
|
58
|
+
recorded_with: VCR 2.2.5
|
@@ -0,0 +1,58 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n
|
9
|
+
\ <soap:Body>\n <ExpandDL xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"
|
10
|
+
xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\">\n <Mailbox>\n
|
11
|
+
\ <t:EmailAddress>test@ebeigarts.onmicrosoft.com</t:EmailAddress>\n
|
12
|
+
\ </Mailbox>\n </ExpandDL>\n </soap:Body>\n</soap:Envelope>\n"
|
13
|
+
headers:
|
14
|
+
Soapaction:
|
15
|
+
- http://schemas.microsoft.com/exchange/services/2006/messages/ExpandDL
|
16
|
+
Content-Type:
|
17
|
+
- text/xml; charset=utf-8
|
18
|
+
Authorization:
|
19
|
+
- Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 200
|
23
|
+
message: OK
|
24
|
+
headers:
|
25
|
+
Cache-Control:
|
26
|
+
- private
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Content-Type:
|
30
|
+
- text/xml; charset=utf-8
|
31
|
+
Server:
|
32
|
+
- Microsoft-IIS/7.5
|
33
|
+
Requestid:
|
34
|
+
- 07e73549-a5eb-4f7c-9710-b0f866ca8fef
|
35
|
+
Set-Cookie:
|
36
|
+
- exchangecookie=e40c63c5baf54c49abe8502dae797546; expires=Fri, 11-Oct-2013
|
37
|
+
19:30:41 GMT; path=/; HttpOnly
|
38
|
+
X-Aspnet-Version:
|
39
|
+
- 2.0.50727
|
40
|
+
X-Powered-By:
|
41
|
+
- ASP.NET
|
42
|
+
X-Diaginfo:
|
43
|
+
- AMSPRD0710CA001
|
44
|
+
Date:
|
45
|
+
- Thu, 11 Oct 2012 19:30:41 GMT
|
46
|
+
body:
|
47
|
+
encoding: US-ASCII
|
48
|
+
string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
|
49
|
+
MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
|
50
|
+
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
|
51
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
|
52
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:ExpandDLResponse
|
53
|
+
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:ExpandDLResponseMessage
|
54
|
+
ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:DLExpansion
|
55
|
+
TotalItemsInView="1" IncludesLastItemInRange="true"><t:Mailbox><t:Name>ebeigarts</t:Name><t:EmailAddress>ebeigarts@ebeigarts.onmicrosoft.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></m:DLExpansion></m:ExpandDLResponseMessage></m:ResponseMessages></m:ExpandDLResponse></s:Body></s:Envelope>
|
56
|
+
http_version:
|
57
|
+
recorded_at: Thu, 11 Oct 2012 19:30:41 GMT
|
58
|
+
recorded_with: VCR 2.2.5
|
data/spec/config.yml
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
endpoint: https://email.tieto.com/EWS/Exchange.asmx
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
# endpoint: https://email.tieto.com/EWS/Exchange.asmx
|
2
|
+
# username: rails_tests
|
3
|
+
# password: Latvia567
|
4
|
+
# debug: false
|
5
|
+
|
6
|
+
endpoint: https://amsprd0710.outlook.com/EWS/Exchange.asmx
|
7
|
+
username: ebeigarts@ebeigarts.onmicrosoft.com
|
8
|
+
password: Ky5kimP6S6iHA
|
9
|
+
debug: true
|
data/spec/config.yml.example
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
endpoint: https://
|
2
|
-
username:
|
3
|
-
password:
|
1
|
+
endpoint: https://amsprd0710.outlook.com/EWS/Exchange.asmx
|
2
|
+
username: ebeigarts@ebeigarts.onmicrosoft.com
|
3
|
+
password: hidden
|
4
4
|
debug: true
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Exchanger::CalendarFolder do
|
4
|
+
before do
|
5
|
+
@folder = VCR.use_cassette('folder/find_calendar') do
|
6
|
+
Exchanger::Folder.find(:calendar)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return calendar folder" do
|
11
|
+
@folder.class.should == Exchanger::CalendarFolder
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Exchanger::CalendarItem do
|
4
|
+
before do
|
5
|
+
@folder = VCR.use_cassette('folder/find_calendar') do
|
6
|
+
Exchanger::Folder.find(:calendar)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ".find" do
|
11
|
+
it "should find by id"
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Exchanger::Contact do
|
4
|
+
before do
|
5
|
+
@folder = VCR.use_cassette('folder/find_contacts') do
|
6
|
+
Exchanger::Folder.find(:contacts)
|
7
|
+
end
|
8
|
+
@contact = Exchanger::Contact.new
|
9
|
+
@contact.parent_folder_id = @folder.folder_id
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#save" do
|
13
|
+
after do
|
14
|
+
if @contact.persisted?
|
15
|
+
VCR.use_cassette("contact/save_cleanup") do
|
16
|
+
@contact.destroy
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should create and update contact" do
|
22
|
+
VCR.use_cassette("contact/save") do
|
23
|
+
prev_items_size = @folder.items.size
|
24
|
+
@contact.given_name = "Edgars"
|
25
|
+
@contact.surname = "Beigarts"
|
26
|
+
@contact.nickname = "EBEI"
|
27
|
+
@contact.complete_name = \
|
28
|
+
Exchanger::CompleteName.new(:first_name => "Edgars", :last_name => "Beigarts") # read only
|
29
|
+
@contact.physical_addresses = [
|
30
|
+
Exchanger::PhysicalAddress.new(:key => "Business", :city => "Riga", :street => "Brivibas iela 1", :state => ""),
|
31
|
+
Exchanger::PhysicalAddress.new(:key => "Home", :city => "Riga", :street => "Brivibas iela 2")
|
32
|
+
]
|
33
|
+
@contact.email_addresses = [
|
34
|
+
Exchanger::EmailAddress.new(:key => "EmailAddress1", :text => "edgars.beigarts@tieto.com")
|
35
|
+
]
|
36
|
+
@contact.should be_changed
|
37
|
+
@contact.save
|
38
|
+
@contact.should_not be_new_record
|
39
|
+
@contact.should_not be_changed
|
40
|
+
@contact.reload
|
41
|
+
@contact.nickname.should == "EBEI"
|
42
|
+
@contact.physical_addresses.size.should == 2
|
43
|
+
@contact.physical_addresses[0].key.should == "Business"
|
44
|
+
@contact.physical_addresses[0].city.should == "Riga"
|
45
|
+
@contact.physical_addresses[1].key.should == "Home"
|
46
|
+
@contact.physical_addresses[1].city.should == "Riga"
|
47
|
+
@contact.email_addresses.size.should == 1
|
48
|
+
@contact.email_addresses[0].key.should == "EmailAddress1"
|
49
|
+
@contact.email_addresses[0].text.should == "edgars.beigarts@tieto.com"
|
50
|
+
@folder.items.size.should == prev_items_size + 1
|
51
|
+
@contact.nickname = "Test"
|
52
|
+
@contact.physical_addresses.pop # delete last address
|
53
|
+
@contact.should be_changed
|
54
|
+
@contact.save
|
55
|
+
@contact.should_not be_changed
|
56
|
+
@contact.physical_addresses.size.should == 1
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "cannot create a contact without a parent_folder" do
|
61
|
+
@contact.parent_folder_id = nil
|
62
|
+
@contact.save.should be_false
|
63
|
+
@contact.errors.should include("Parent folder can't be blank")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#destroy" do
|
68
|
+
before do
|
69
|
+
VCR.use_cassette("contact/destroy_setup") do
|
70
|
+
@contact.save
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should destroy contact and return true" do
|
75
|
+
VCR.use_cassette("contact/destroy") do
|
76
|
+
@contact.destroy.should be_true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe ".find" do
|
82
|
+
before do
|
83
|
+
VCR.use_cassette("contact/find_setup") do
|
84
|
+
@contact.save
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should find a contact by id" do
|
89
|
+
VCR.use_cassette("contact/find") do
|
90
|
+
found_contact = Exchanger::Contact.find(@contact.id)
|
91
|
+
found_contact.id.should == @contact.id
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should have parent folder" do
|
96
|
+
VCR.use_cassette("contact/find") do
|
97
|
+
found_contact = Exchanger::Item.find(@contact.id)
|
98
|
+
found_contact.parent_folder.id.should == @folder.id
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Exchanger::Folder do
|
4
|
+
before do
|
5
|
+
@folder = VCR.use_cassette('folder/find_root') do
|
6
|
+
Exchanger::Folder.find(:root)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#folders" do
|
11
|
+
it "should return sub folders" do
|
12
|
+
VCR.use_cassette('folder/find_root_folders') do
|
13
|
+
@folder.folders.size.should > 0
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Exchanger::GetUserAvailability do
|
4
|
+
before(:all) do
|
5
|
+
@valid_attributes = YAML.load_file(File.expand_path(File.dirname(__FILE__) + '/../fixtures/get_user_availability.yml'))
|
6
|
+
@valid_attributes["start_time"] = Time.parse(@valid_attributes["start_time"])
|
7
|
+
@valid_attributes["end_time"] = Time.parse(@valid_attributes["end_time"])
|
8
|
+
end
|
9
|
+
|
10
|
+
before do
|
11
|
+
@response = VCR.use_cassette('get_user_availability') do
|
12
|
+
Exchanger::GetUserAvailability.run(@valid_attributes)
|
13
|
+
end
|
14
|
+
@items = @response.items
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should be sucessfull with default values" do
|
18
|
+
VCR.use_cassette('get_user_availability_default') do
|
19
|
+
Exchanger::GetUserAvailability.run().status.should == 200
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be sucessfull with valid data" do
|
24
|
+
@response.status.should == 200
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should response have calendar event items" do
|
28
|
+
@items.all?{ |i| i.class.name == "Exchanger::CalendarEvent" }.should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should calendar event item have valid attributes" do
|
32
|
+
["start_time", "end_time", "busy_type", "calendar_event_details"].each do |k|
|
33
|
+
@items[0].attributes.keys.include?(k).should be_true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should calendar event items have calendar event details" do
|
38
|
+
@items.all?{ |i| i.calendar_event_details.class.name == "Exchanger::CalendarEventDetails" }.should be_true
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should calendar event details item have valid attributes" do
|
42
|
+
["id","subject","location", "is_meeting", "is_recurring", "is_exception", "is_reminder_set", "is_private"].each do |k|
|
43
|
+
@items[0].calendar_event_details.attributes.keys.include?(k).should be_true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Exchanger::Mailbox do
|
4
|
+
describe ".search" do
|
5
|
+
it "should resolve names for distribution list and show members" do
|
6
|
+
@mailboxes = VCR.use_cassette('mailbox/search_test') do
|
7
|
+
Exchanger::Mailbox.search("test")
|
8
|
+
end
|
9
|
+
if @mailboxes.size == 0
|
10
|
+
pending "Please create distribution list named 'Test' with one member"
|
11
|
+
end
|
12
|
+
@mailboxes.size.should be > 0
|
13
|
+
VCR.use_cassette('mailbox/search_test_members') do
|
14
|
+
@mailboxes[0].members.size.should be > 0
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
email_address:
|
1
|
+
email_address: ebeigarts@ebeigarts.onmicrosoft.com
|
2
2
|
time_zone: EET
|
3
|
-
start_time: '
|
4
|
-
end_time: '
|
3
|
+
start_time: '2016-01-01 00:00:01'
|
4
|
+
end_time: '2016-01-31 23:59:59'
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,24 @@
|
|
1
1
|
$:.unshift File.dirname(__FILE__) + '/../lib'
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "bundler/setup"
|
4
|
+
require "simplecov"
|
5
|
+
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter '/spec/'
|
8
|
+
end
|
9
|
+
|
4
10
|
require "exchanger"
|
5
11
|
require "kconv"
|
12
|
+
require "vcr"
|
13
|
+
require "webmock"
|
6
14
|
|
7
15
|
Exchanger::Config.instance.from_hash(YAML.load_file("#{File.dirname(__FILE__)}/config.yml"))
|
16
|
+
|
17
|
+
VCR.configure do |c|
|
18
|
+
c.cassette_library_dir = "spec/cassettes"
|
19
|
+
c.hook_into :webmock
|
20
|
+
c.ignore_localhost = true
|
21
|
+
c.default_cassette_options = { :record => :new_episodes }
|
22
|
+
c.filter_sensitive_data('FILTERED_USERNAME') { Exchanger.config.username.gsub("@", "%40") }
|
23
|
+
c.filter_sensitive_data('FILTERED_PASSWORD') { Exchanger.config.password }
|
24
|
+
end
|
metadata
CHANGED
@@ -1,198 +1,206 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exchanger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Edgars Beigarts
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-03-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 2.2.2
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 2.2.2
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: nokogiri
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.3.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.3.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: httpclient
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 2.1.5.2
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 2.1.5.2
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rubyntlm
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 0.1.1
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 0.1.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: tzinfo
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.3.33
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.3.33
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: rake
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - ">="
|
84
88
|
- !ruby/object:Gem::Version
|
85
89
|
version: '0'
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - ">="
|
92
95
|
- !ruby/object:Gem::Version
|
93
96
|
version: '0'
|
94
97
|
- !ruby/object:Gem::Dependency
|
95
98
|
name: i18n
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
100
|
requirements:
|
99
|
-
- -
|
101
|
+
- - ">="
|
100
102
|
- !ruby/object:Gem::Version
|
101
103
|
version: '0'
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
107
|
requirements:
|
107
|
-
- -
|
108
|
+
- - ">="
|
108
109
|
- !ruby/object:Gem::Version
|
109
110
|
version: '0'
|
110
111
|
- !ruby/object:Gem::Dependency
|
111
112
|
name: rspec
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 2.6.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
121
|
requirements:
|
123
|
-
- - ~>
|
122
|
+
- - "~>"
|
124
123
|
- !ruby/object:Gem::Version
|
125
124
|
version: 2.6.0
|
126
125
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
126
|
+
name: simplecov
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
128
|
requirements:
|
131
|
-
- -
|
129
|
+
- - ">="
|
132
130
|
- !ruby/object:Gem::Version
|
133
131
|
version: '0'
|
134
132
|
type: :development
|
135
133
|
prerelease: false
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
135
|
requirements:
|
139
|
-
- -
|
136
|
+
- - ">="
|
140
137
|
- !ruby/object:Gem::Version
|
141
138
|
version: '0'
|
142
139
|
- !ruby/object:Gem::Dependency
|
143
140
|
name: yard
|
144
141
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
142
|
requirements:
|
147
|
-
- -
|
143
|
+
- - ">="
|
148
144
|
- !ruby/object:Gem::Version
|
149
145
|
version: '0'
|
150
146
|
type: :development
|
151
147
|
prerelease: false
|
152
148
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
149
|
requirements:
|
155
|
-
- -
|
150
|
+
- - ">="
|
156
151
|
- !ruby/object:Gem::Version
|
157
152
|
version: '0'
|
158
153
|
- !ruby/object:Gem::Dependency
|
159
154
|
name: BlueCloth
|
160
155
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
156
|
requirements:
|
163
|
-
- -
|
157
|
+
- - ">="
|
164
158
|
- !ruby/object:Gem::Version
|
165
159
|
version: '0'
|
166
160
|
type: :development
|
167
161
|
prerelease: false
|
168
162
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
163
|
requirements:
|
171
|
-
- -
|
164
|
+
- - ">="
|
172
165
|
- !ruby/object:Gem::Version
|
173
166
|
version: '0'
|
174
167
|
- !ruby/object:Gem::Dependency
|
175
|
-
name:
|
168
|
+
name: vcr
|
176
169
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
170
|
requirements:
|
179
|
-
- -
|
171
|
+
- - "~>"
|
180
172
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
173
|
+
version: 2.2.5
|
182
174
|
type: :development
|
183
175
|
prerelease: false
|
184
176
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
177
|
requirements:
|
187
|
-
- -
|
178
|
+
- - "~>"
|
188
179
|
- !ruby/object:Gem::Version
|
189
|
-
version:
|
180
|
+
version: 2.2.5
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: webmock
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 1.8.11
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 1.8.11
|
190
195
|
description: Ruby library for accessing Microsoft Exchange using Exchange Web Services
|
191
|
-
email:
|
196
|
+
email: edgars.beigarts@gmail.com
|
192
197
|
executables: []
|
193
198
|
extensions: []
|
194
199
|
extra_rdoc_files: []
|
195
200
|
files:
|
201
|
+
- LICENSE
|
202
|
+
- README.md
|
203
|
+
- lib/exchanger.rb
|
196
204
|
- lib/exchanger/attributes.rb
|
197
205
|
- lib/exchanger/boolean.rb
|
198
206
|
- lib/exchanger/client.rb
|
@@ -205,6 +213,7 @@ files:
|
|
205
213
|
- lib/exchanger/elements/calendar_event_details.rb
|
206
214
|
- lib/exchanger/elements/calendar_folder.rb
|
207
215
|
- lib/exchanger/elements/calendar_item.rb
|
216
|
+
- lib/exchanger/elements/calendar_view.rb
|
208
217
|
- lib/exchanger/elements/complete_name.rb
|
209
218
|
- lib/exchanger/elements/contact.rb
|
210
219
|
- lib/exchanger/elements/contacts_folder.rb
|
@@ -241,43 +250,56 @@ files:
|
|
241
250
|
- lib/exchanger/operations/update_item.rb
|
242
251
|
- lib/exchanger/persistence.rb
|
243
252
|
- lib/exchanger/version.rb
|
244
|
-
-
|
245
|
-
- spec/
|
246
|
-
- spec/
|
253
|
+
- spec/cassettes/contact/destroy.yml
|
254
|
+
- spec/cassettes/contact/destroy_setup.yml
|
255
|
+
- spec/cassettes/contact/find.yml
|
256
|
+
- spec/cassettes/contact/find_setup.yml
|
257
|
+
- spec/cassettes/contact/save.yml
|
258
|
+
- spec/cassettes/contact/save_cleanup.yml
|
259
|
+
- spec/cassettes/folder/find_calendar.yml
|
260
|
+
- spec/cassettes/folder/find_contacts.yml
|
261
|
+
- spec/cassettes/folder/find_root.yml
|
262
|
+
- spec/cassettes/folder/find_root_folders.yml
|
263
|
+
- spec/cassettes/get_user_availability.yml
|
264
|
+
- spec/cassettes/get_user_availability_default.yml
|
265
|
+
- spec/cassettes/mailbox/search_test.yml
|
266
|
+
- spec/cassettes/mailbox/search_test_members.yml
|
247
267
|
- spec/config.yml
|
248
268
|
- spec/config.yml.example
|
249
|
-
- spec/
|
250
|
-
- spec/
|
251
|
-
- spec/
|
269
|
+
- spec/exchanger/calendar_folder_spec.rb
|
270
|
+
- spec/exchanger/calendar_item_spec.rb
|
271
|
+
- spec/exchanger/client_spec.rb
|
272
|
+
- spec/exchanger/contact_spec.rb
|
273
|
+
- spec/exchanger/element_spec.rb
|
274
|
+
- spec/exchanger/field_spec.rb
|
275
|
+
- spec/exchanger/folder_spec.rb
|
276
|
+
- spec/exchanger/get_user_availability_spec.rb
|
277
|
+
- spec/exchanger/mailbox_spec.rb
|
278
|
+
- spec/fixtures/get_user_availability.yml
|
252
279
|
- spec/fixtures/get_user_availability.yml.example
|
253
|
-
- spec/folder_spec.rb
|
254
|
-
- spec/get_user_availability_spec.rb
|
255
|
-
- spec/mailbox_spec.rb
|
256
280
|
- spec/spec_helper.rb
|
257
|
-
- README.md
|
258
|
-
- LICENSE
|
259
281
|
homepage: http://github.com/ebeigarts/exchanger
|
260
282
|
licenses: []
|
283
|
+
metadata: {}
|
261
284
|
post_install_message:
|
262
285
|
rdoc_options: []
|
263
286
|
require_paths:
|
264
287
|
- lib
|
265
288
|
required_ruby_version: !ruby/object:Gem::Requirement
|
266
|
-
none: false
|
267
289
|
requirements:
|
268
|
-
- -
|
290
|
+
- - ">="
|
269
291
|
- !ruby/object:Gem::Version
|
270
292
|
version: '0'
|
271
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
272
|
-
none: false
|
273
294
|
requirements:
|
274
|
-
- -
|
295
|
+
- - ">="
|
275
296
|
- !ruby/object:Gem::Version
|
276
297
|
version: '0'
|
277
298
|
requirements: []
|
278
299
|
rubyforge_project:
|
279
|
-
rubygems_version:
|
300
|
+
rubygems_version: 2.4.8
|
280
301
|
signing_key:
|
281
|
-
specification_version:
|
302
|
+
specification_version: 4
|
282
303
|
summary: Ruby library for accessing Microsoft Exchange using Exchange Web Services
|
283
304
|
test_files: []
|
305
|
+
has_rdoc:
|