coach4rb 0.0.1
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/.gitignore +16 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +8 -0
- data/coach4rb.gemspec +29 -0
- data/lib/coach4rb.rb +64 -0
- data/lib/coach4rb/builder.rb +142 -0
- data/lib/coach4rb/client.rb +116 -0
- data/lib/coach4rb/coach.rb +836 -0
- data/lib/coach4rb/json_response_parser.rb +11 -0
- data/lib/coach4rb/mixin/as_hash.rb +34 -0
- data/lib/coach4rb/mixin/auto_constructor.rb +71 -0
- data/lib/coach4rb/mixin/basic_auth.rb +23 -0
- data/lib/coach4rb/mixin/iterable.rb +40 -0
- data/lib/coach4rb/mixin/track_reader.rb +24 -0
- data/lib/coach4rb/mixin/track_writer.rb +19 -0
- data/lib/coach4rb/privacy.rb +11 -0
- data/lib/coach4rb/proxy.rb +143 -0
- data/lib/coach4rb/resource/entity.rb +47 -0
- data/lib/coach4rb/resource/entry.rb +126 -0
- data/lib/coach4rb/resource/page.rb +74 -0
- data/lib/coach4rb/resource/partnership.rb +37 -0
- data/lib/coach4rb/resource/sport.rb +19 -0
- data/lib/coach4rb/resource/subscription.rb +47 -0
- data/lib/coach4rb/resource/user.rb +49 -0
- data/lib/coach4rb/response_parser.rb +11 -0
- data/lib/coach4rb/version.rb +3 -0
- data/test/test_access_proxy.rb +58 -0
- data/test/test_client.rb +41 -0
- data/test/test_coach_client.rb +21 -0
- data/test/test_coach_entry.rb +141 -0
- data/test/test_coach_partnership.rb +115 -0
- data/test/test_coach_subscription.rb +110 -0
- data/test/test_coach_user.rb +191 -0
- data/test/test_entity.rb +63 -0
- data/test/test_entry_resource.rb +36 -0
- data/test/test_helper.rb +3 -0
- data/test/test_page.rb +82 -0
- data/test/test_partnership_resource.rb +69 -0
- data/test/test_sport_resource.rb +33 -0
- data/test/test_subscription_resource.rb +74 -0
- data/test/test_user_resource.rb +104 -0
- data/tools/.keep +0 -0
- metadata +190 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
|
3
|
+
class TestCoachPartnership < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@coach = Coach4rb.configure(
|
7
|
+
scheme: 'http',
|
8
|
+
host: 'diufvm31.unifr.ch',
|
9
|
+
port: 8090,
|
10
|
+
path: '/CyberCoachServer/resources',
|
11
|
+
debug: true
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def test_should_create_partnership
|
17
|
+
proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
|
18
|
+
assert proxy.create_partnership('arueedlinger','wanze2')
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def test_should_create_and_delete_partnership
|
23
|
+
proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
|
24
|
+
partnership = proxy.create_partnership('arueedlinger','wantsomemoney')
|
25
|
+
assert partnership
|
26
|
+
sleep 2
|
27
|
+
assert proxy.delete_partnership(partnership)
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
def test_should_breakup_between_users
|
32
|
+
proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
|
33
|
+
partnership = proxy.create_partnership('arueedlinger','wantsomemoney')
|
34
|
+
assert partnership
|
35
|
+
sleep 2
|
36
|
+
assert proxy.breakup_between('arueedlinger', 'wantsomemoney')
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def test_get_partnership_details_of_a_user
|
41
|
+
user = @coach.user 'arueedlinger'
|
42
|
+
partnerships = user.partnerships.map { |p| @coach.partnership_by_uri p.uri }
|
43
|
+
partnerships.each do |p|
|
44
|
+
assert p
|
45
|
+
assert p.first_user.username
|
46
|
+
assert p.first_user.uri
|
47
|
+
assert p.second_user.username
|
48
|
+
assert p.first_user.uri
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
def test_should_get_a_partnership
|
54
|
+
partnership = @coach.partnership 'mikeshiva', 'arueedlinger'
|
55
|
+
assert partnership
|
56
|
+
assert partnership.uri
|
57
|
+
assert partnership.first_user_confirmed
|
58
|
+
assert partnership.second_user_confirmed
|
59
|
+
assert partnership.first_user
|
60
|
+
assert partnership.second_user
|
61
|
+
first_user = @coach.user_by_uri partnership.first_user[:uri]
|
62
|
+
assert_equal 'mikeshiva', first_user.username
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
def test_should_get_a_partnership_by_its_uri
|
68
|
+
partnership = @coach.partnership_by_uri '/CyberCoachServer/resources/partnerships/arueedlinger;asarteam5/'
|
69
|
+
assert partnership
|
70
|
+
assert partnership.uri
|
71
|
+
assert partnership.first_user_confirmed
|
72
|
+
assert partnership.second_user_confirmed
|
73
|
+
assert partnership.first_user
|
74
|
+
assert partnership.second_user
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
def test_should_get_partnerships
|
80
|
+
partnerships = @coach.partnerships
|
81
|
+
assert partnerships
|
82
|
+
assert_equal 5, partnerships.size
|
83
|
+
|
84
|
+
partnerships = @coach.partnerships {}
|
85
|
+
assert partnerships
|
86
|
+
assert_equal 5, partnerships.size
|
87
|
+
|
88
|
+
partnerships = @coach.partnerships query: {start: 0, size: 10}
|
89
|
+
assert partnerships
|
90
|
+
assert_equal 10, partnerships.size
|
91
|
+
assert_equal 0, partnerships.start
|
92
|
+
assert_equal 10, partnerships.end
|
93
|
+
|
94
|
+
10.times do |i|
|
95
|
+
assert partnerships[i]
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
def test_should_get_10_partnerships
|
102
|
+
partnerships = @coach.partnerships query: {start: 0, size: 10}
|
103
|
+
assert partnerships.items
|
104
|
+
assert_equal 10, partnerships.size
|
105
|
+
10.times do |i|
|
106
|
+
assert partnerships[i]
|
107
|
+
assert partnerships[i].is_a? Coach4rb::Resource::Partnership
|
108
|
+
end
|
109
|
+
|
110
|
+
first_partnership = partnerships.first
|
111
|
+
assert first_partnership
|
112
|
+
assert first_partnership.is_a? Coach4rb::Resource::Partnership
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
|
3
|
+
class TestSubscriptionCoach < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@coach = Coach4rb.configure(
|
7
|
+
scheme: 'http',
|
8
|
+
host: 'diufvm31.unifr.ch',
|
9
|
+
port: 8090,
|
10
|
+
path: '/CyberCoachServer/resources',
|
11
|
+
debug: true
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def test_should_subscribe_a_user_to_running
|
17
|
+
proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
|
18
|
+
user = @coach.user 'wantsomemoney'
|
19
|
+
|
20
|
+
subscription = proxy.subscribe(user, 'running') do |subscription|
|
21
|
+
subscription.public_visible = Coach4rb::Privacy::Public
|
22
|
+
end
|
23
|
+
assert subscription
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_subscribe_partnership_to_running
|
27
|
+
proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
|
28
|
+
partnership = @coach.partnership 'arueedlinger', 'asarteam5'
|
29
|
+
assert proxy.subscribe(partnership, :running)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def test_should_subscribe_and_unsubscribe_a_user_to_boxing
|
34
|
+
proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
|
35
|
+
user = @coach.user 'wantsomemoney'
|
36
|
+
|
37
|
+
subscription = proxy.subscribe(user, :boxing) do |subscription|
|
38
|
+
subscription.public_visible = Coach4rb::Privacy::Public
|
39
|
+
end
|
40
|
+
assert subscription
|
41
|
+
|
42
|
+
sleep 2
|
43
|
+
assert proxy.unsubscribe(user, :boxing)
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
def test_should_subscribe_and_unsubscribe_a_partnership_to_boxing
|
48
|
+
proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
|
49
|
+
partnership = @coach.partnership 'arueedlinger', 'asarteam5'
|
50
|
+
assert proxy.subscribe(partnership, :running)
|
51
|
+
|
52
|
+
subscription = proxy.subscribe(partnership, :boxing)
|
53
|
+
assert subscription
|
54
|
+
sleep 20
|
55
|
+
assert proxy.unsubscribe(partnership, :boxing)
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
def test_should_subscribe_and_unsubscribe_a_user_to_soccer
|
61
|
+
proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
|
62
|
+
user = @coach.user 'wantsomemoney'
|
63
|
+
|
64
|
+
assert proxy.subscribe(user, :soccer)
|
65
|
+
sleep 2
|
66
|
+
assert proxy.unsubscribe(user, :soccer)
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
def test_should_subscribe_and_unsubscribe_a_user_to_cycling
|
71
|
+
proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
|
72
|
+
user = @coach.user 'wantsomemoney'
|
73
|
+
|
74
|
+
subscription = proxy.subscribe(user, :cycling)
|
75
|
+
sleep 2
|
76
|
+
assert subscription
|
77
|
+
assert proxy.delete_subscription(subscription)
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def test_should_get_subscription
|
82
|
+
subscription = @coach.subscription 'newuser4', 'running', {}
|
83
|
+
assert subscription
|
84
|
+
#subscription = @coach.subscription 'newuser4','newuser5', 'running', {}
|
85
|
+
assert subscription
|
86
|
+
subscription = @coach.subscription 'newuser4', 'running'
|
87
|
+
assert subscription
|
88
|
+
#subscription = @coach.subscription 'newuser4','newuser5', 'running'
|
89
|
+
subscription = @coach.subscription_by_uri '/CyberCoachServer/resources/users/newuser4/'
|
90
|
+
assert subscription
|
91
|
+
subscription = @coach.subscription subscription
|
92
|
+
assert subscription
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
def test_should_get_subscription_entries
|
97
|
+
subscription = @coach.subscription 'arueedlinger', 'running', query: {start: 1, size: 10}
|
98
|
+
assert subscription
|
99
|
+
assert_equal 10, subscription.entries.size
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
def test_should_get_entry_from_subscription
|
104
|
+
subscription = @coach.subscription 'arueedlinger', 'running', query: {start: 0, size: 10}
|
105
|
+
subscription.entries.each do |entry|
|
106
|
+
assert @coach.entry(entry)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
|
3
|
+
class TestUserCoach < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@coach = Coach4rb.configure(
|
7
|
+
scheme: 'http',
|
8
|
+
host: 'diufvm31.unifr.ch',
|
9
|
+
port: 8090,
|
10
|
+
path: '/CyberCoachServer/resources',
|
11
|
+
debug: true
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def test_should_get_a_user_by_its_username
|
17
|
+
user = @coach.user 'arueedlinger'
|
18
|
+
assert user
|
19
|
+
assert user.is_a? Coach4rb::Resource::User
|
20
|
+
assert_equal 'arueedlinger', user.username
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
def test_should_get_user_by_its_resource_object
|
26
|
+
user = @coach.user 'arueedlinger'
|
27
|
+
assert_equal 'arueedlinger', user.username
|
28
|
+
user = @coach.user user
|
29
|
+
assert_equal 'arueedlinger', user.username
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
def test_should_get_a_user_by_its_uri
|
35
|
+
user = @coach.user_by_uri '/CyberCoachServer/resources/users/arueedlinger'
|
36
|
+
assert user
|
37
|
+
assert user.is_a? Coach4rb::Resource::User
|
38
|
+
assert_equal 'arueedlinger', user.username
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
def test_should_get_user_details
|
44
|
+
users = @coach.users
|
45
|
+
users = users.map { |u| @coach.user u.username }
|
46
|
+
users.each do |user|
|
47
|
+
refute_nil user.email
|
48
|
+
refute_nil user.username
|
49
|
+
refute_nil user.real_name
|
50
|
+
refute_nil user.created
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
def test_should_get_some_users
|
57
|
+
users = @coach.users
|
58
|
+
assert users
|
59
|
+
assert_equal 5, users.size
|
60
|
+
|
61
|
+
users = @coach.users {}
|
62
|
+
assert users
|
63
|
+
assert_equal 5, users.size
|
64
|
+
|
65
|
+
users = @coach.users query: {start: 0, size: 10}
|
66
|
+
assert users
|
67
|
+
assert_equal 10, users.size
|
68
|
+
assert_equal 0, users.start
|
69
|
+
assert_equal 10, users.end
|
70
|
+
|
71
|
+
assert users.is_a? Coach4rb::Resource::Page
|
72
|
+
users.each do |user|
|
73
|
+
assert user.is_a? Coach4rb::Resource::Entity
|
74
|
+
assert user.uri
|
75
|
+
fetched_user = @coach.user user.username
|
76
|
+
assert fetched_user.is_a? Coach4rb::Resource::User
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
def test_should_get_10_users
|
83
|
+
users = @coach.users query: {start: 0, size: 10}
|
84
|
+
assert_equal 10, users.size
|
85
|
+
10.times do |i|
|
86
|
+
assert users[i]
|
87
|
+
assert users[i].is_a? Coach4rb::Resource::User
|
88
|
+
end
|
89
|
+
|
90
|
+
first_user = users.first
|
91
|
+
assert first_user
|
92
|
+
assert first_user.is_a? Coach4rb::Resource::User
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
def test_username_should_not_be_available
|
98
|
+
refute @coach.username_available? 'arueedlinger'
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
def test_username_should_be_available
|
103
|
+
assert @coach.username_available? 'arueedlinger1111111'
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
def test_user_should_exist
|
108
|
+
assert @coach.user_exists?('arueedlinger')
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
def test_user_should_not_exist
|
113
|
+
refute @coach.user_exists?('arueedlinger1111111')
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
def test_should_authenticate_user
|
119
|
+
assert @coach.authenticate('arueedlinger','test')
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
def test_should_not_authenticate_user
|
124
|
+
refute @coach.authenticate('arueedlinger','sajdhjkasdjka')
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
def test_should_create_a_user
|
129
|
+
@coach.create_user do |user|
|
130
|
+
user.real_name = 'the hoff'
|
131
|
+
user.username = 'wantsomemoney' + DateTime.now.to_time.to_i.to_s
|
132
|
+
user.password = 'test'
|
133
|
+
user.email = 'test@test.com'
|
134
|
+
user.public_visible = Coach4rb::Privacy::Public
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
def test_should_create_and_delete_user
|
140
|
+
username = 'wantsomemoney' + DateTime.now.to_time.to_i.to_s
|
141
|
+
proxy = Coach4rb::Proxy::Access.new(username,'test', @coach)
|
142
|
+
user = proxy.create_user do |user|
|
143
|
+
user.real_name = 'the hoff'
|
144
|
+
user.username = username
|
145
|
+
user.password = 'test'
|
146
|
+
user.email = 'test@test.com'
|
147
|
+
user.public_visible = Coach4rb::Privacy::Public
|
148
|
+
end
|
149
|
+
assert user
|
150
|
+
assert_equal username, user.username
|
151
|
+
sleep 2
|
152
|
+
|
153
|
+
assert proxy.delete_user(username)
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
def test_should_update_a_user
|
159
|
+
proxy = Coach4rb::Proxy::Access.new 'wantsomemoney', 'test', @coach
|
160
|
+
|
161
|
+
before_update_user = @coach.user 'wantsomemoney'
|
162
|
+
assert_equal '007!!!', before_update_user.real_name
|
163
|
+
|
164
|
+
@coach.user 'wantsomemoney'
|
165
|
+
result = proxy.update_user(before_update_user) do |user|
|
166
|
+
user.real_name = 'James Bond!'
|
167
|
+
end
|
168
|
+
|
169
|
+
after_update_user = @coach.user 'wantsomemoney'
|
170
|
+
assert_equal 'James Bond!', after_update_user.real_name
|
171
|
+
|
172
|
+
@coach.user 'wantsomemoney'
|
173
|
+
result = proxy.update_user(after_update_user) do |user|
|
174
|
+
user.real_name = '007!!!'
|
175
|
+
end
|
176
|
+
updated_user = @coach.user 'wantsomemoney'
|
177
|
+
assert_equal '007!!!', updated_user.real_name
|
178
|
+
end
|
179
|
+
|
180
|
+
|
181
|
+
def test_should_update_a_user_by_its_uri
|
182
|
+
proxy = Coach4rb::Proxy::Access.new 'arueedlinger', 'test', @coach
|
183
|
+
user = @coach.user 'arueedlinger'
|
184
|
+
user = proxy.update_user(user.uri) do |user|
|
185
|
+
user.real_name = 'Alex Rueedlinger'
|
186
|
+
end
|
187
|
+
assert_equal 'Alex Rueedlinger', user.real_name
|
188
|
+
end
|
189
|
+
|
190
|
+
|
191
|
+
end
|
data/test/test_entity.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'test/test_helper'
|
2
|
+
|
3
|
+
class TestEntity < MiniTest::Test
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@user_hash = {
|
7
|
+
:uri => "/CyberCoachServer/resources/users/arueedlinger/",
|
8
|
+
:links =>
|
9
|
+
[{:href => "/CyberCoachServer/resources/users/arueedlinger/?start=5&size=5",
|
10
|
+
:description => "next"}],
|
11
|
+
:username => "arueedlinger",
|
12
|
+
:password => "*",
|
13
|
+
:realname => "Alexander Rueedlinger 2",
|
14
|
+
:email => "a.rueedlinger@gmail.com",
|
15
|
+
:datecreated => 1413590323000,
|
16
|
+
:publicvisible => 2,
|
17
|
+
:partnerships =>
|
18
|
+
[{:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam5/",
|
19
|
+
:id => 291},
|
20
|
+
{:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam4/",
|
21
|
+
:id => 292},
|
22
|
+
{:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam3/",
|
23
|
+
:id => 337},
|
24
|
+
{:uri => "/CyberCoachServer/resources/partnerships/arueedlinger;asarteam2/",
|
25
|
+
:id => 345},
|
26
|
+
{:uri => "/CyberCoachServer/resources/partnerships/mikeshiva;arueedlinger/",
|
27
|
+
:id => 372}],
|
28
|
+
:subscriptions =>
|
29
|
+
[{:uri => "/CyberCoachServer/resources/users/arueedlinger/Running/", :id => 227},
|
30
|
+
{:uri => "/CyberCoachServer/resources/users/arueedlinger/Boxing/", :id => 228},
|
31
|
+
{:uri => "/CyberCoachServer/resources/users/arueedlinger/Soccer/", :id => 229},
|
32
|
+
{:uri => "/CyberCoachServer/resources/users/arueedlinger/Cycling/",
|
33
|
+
:id => 230}]
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
def test_should_create_entity_resource
|
39
|
+
resource = Coach4rb::Resource::Entity.from_coach @user_hash
|
40
|
+
assert_equal @user_hash[:uri], resource.uri
|
41
|
+
assert_equal @user_hash[:username], resource[:username]
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
def test_should_have_hash_like_access
|
46
|
+
resource = Coach4rb::Resource::Page.from_coach @user_hash
|
47
|
+
assert_equal @user_hash[:uri], resource[:uri]
|
48
|
+
assert_equal @user_hash[:username], resource[:username]
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def test_should_iterate_over_properties
|
53
|
+
resource = Coach4rb::Resource::Entity.from_coach @user_hash
|
54
|
+
@user_hash.each do |key, value|
|
55
|
+
if key == :datecreated
|
56
|
+
assert_equal value, resource[key]
|
57
|
+
else
|
58
|
+
assert_equal value, resource[key]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|