coach4rb 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|