diaspora_federation-test 0.0.9
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/lib/diaspora_federation/test.rb +54 -0
- data/lib/diaspora_federation/test/factories.rb +183 -0
- metadata +76 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0303f98534c6ab03def50f40594448c758e8b332
|
4
|
+
data.tar.gz: 30b809afd2691f629aa30dbc8dbe519247db0ddc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ca2a2c889b84ece782e0a6d15a626a458a5c1ba1713c471784eb137459335b48f6d42c302b75e320671d31273ddc10a14e3e45a30797e73a69a659cb4f267535
|
7
|
+
data.tar.gz: b3aaa49256bcf620978acd0144167b01edd96c55a2b8f8d70c0fb187a74143b22b6999b466cc6ea3175779867294e6c902ba78ecaaf4c2f5b1a0385b260f3284
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "diaspora_federation/test/factories"
|
2
|
+
|
3
|
+
module DiasporaFederation
|
4
|
+
# This module encapsulates helper functions maybe wanted by a testsuite of a diaspora_federation gem user application
|
5
|
+
module Test
|
6
|
+
# Sort hash according to an entity class's property sequence.
|
7
|
+
# This is used for rspec tests in order to generate correct input hash to
|
8
|
+
# compare results with.
|
9
|
+
#
|
10
|
+
# @param [Hash] data input hash for sorting
|
11
|
+
# @param [Entity.Class] klass entity type to sort according to
|
12
|
+
# @return [Hash] sorted hash
|
13
|
+
def self.sort_hash(data, klass)
|
14
|
+
Hash[klass.class_props.map { |prop|
|
15
|
+
[prop[:name], data[prop[:name]]] unless data[prop[:name]].nil?
|
16
|
+
}.compact]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Generates attributes for entity constructor with correct signatures in it
|
20
|
+
#
|
21
|
+
# @param [Symbol] factory_name the factory to generate attributes for (normally entity name)
|
22
|
+
# @return [Hash] hash with correct signatures
|
23
|
+
def self.relayable_attributes_with_signatures(factory_name)
|
24
|
+
klass = FactoryGirl.factory_by_name(factory_name).build_class
|
25
|
+
sort_hash(FactoryGirl.attributes_for(factory_name), klass).tap do |data|
|
26
|
+
DiasporaFederation::Entities::Relayable.update_signatures!(data)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Generates attributes for signed retraction entity constructor with correct signatures in it
|
31
|
+
#
|
32
|
+
# @return [Hash] hash with correct signatures
|
33
|
+
def self.signed_retraction_attributes_with_signatures
|
34
|
+
sort_hash(FactoryGirl.attributes_for(:signed_retraction_entity), Entities::SignedRetraction).tap do |data|
|
35
|
+
Entities::SignedRetraction.update_signatures!(data)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Generates attributes for relayable retraction entity constructor with correct signatures in it
|
40
|
+
#
|
41
|
+
# @return [Hash] hash with correct signatures
|
42
|
+
def self.relayable_retraction_attributes_with_signatures
|
43
|
+
sort_hash(
|
44
|
+
FactoryGirl.attributes_for(
|
45
|
+
:relayable_retraction_entity,
|
46
|
+
target_author_signature: "false sig"
|
47
|
+
),
|
48
|
+
Entities::RelayableRetraction
|
49
|
+
).tap do |data|
|
50
|
+
Entities::RelayableRetraction.update_signatures!(data)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,183 @@
|
|
1
|
+
require "factory_girl"
|
2
|
+
|
3
|
+
FactoryGirl.define do
|
4
|
+
initialize_with { new(attributes) }
|
5
|
+
sequence(:guid) { UUID.generate :compact }
|
6
|
+
sequence(:diaspora_id) {|n| "person-#{n}-#{SecureRandom.hex(3)}@localhost:3000" }
|
7
|
+
sequence(:public_key) { OpenSSL::PKey::RSA.generate(1024).public_key.export }
|
8
|
+
|
9
|
+
factory :webfinger, class: DiasporaFederation::Discovery::WebFinger do
|
10
|
+
guid
|
11
|
+
acct_uri { "acct:#{generate(:diaspora_id)}" }
|
12
|
+
alias_url "http://localhost:3000/people/0123456789abcdef"
|
13
|
+
hcard_url "http://localhost:3000/hcard/users/user"
|
14
|
+
seed_url "http://localhost:3000/"
|
15
|
+
profile_url "http://localhost:3000/u/user"
|
16
|
+
atom_url "http://localhost:3000/public/user.atom"
|
17
|
+
salmon_url "http://localhost:3000/receive/users/0123456789abcdef"
|
18
|
+
public_key
|
19
|
+
end
|
20
|
+
|
21
|
+
factory :h_card, class: DiasporaFederation::Discovery::HCard do
|
22
|
+
guid
|
23
|
+
nickname "some_name"
|
24
|
+
full_name "my name"
|
25
|
+
first_name "my name"
|
26
|
+
last_name nil
|
27
|
+
url "http://localhost:3000/"
|
28
|
+
public_key
|
29
|
+
photo_large_url "/assets/user/default.png"
|
30
|
+
photo_medium_url "/assets/user/default.png"
|
31
|
+
photo_small_url "/assets/user/default.png"
|
32
|
+
searchable true
|
33
|
+
end
|
34
|
+
|
35
|
+
factory :person_entity, class: DiasporaFederation::Entities::Person do
|
36
|
+
guid
|
37
|
+
diaspora_id
|
38
|
+
url "http://localhost:3000/"
|
39
|
+
exported_key { generate(:public_key) }
|
40
|
+
profile {
|
41
|
+
FactoryGirl.build(:profile_entity, diaspora_id: diaspora_id)
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
factory :profile_entity, class: DiasporaFederation::Entities::Profile do
|
46
|
+
diaspora_id
|
47
|
+
first_name "my name"
|
48
|
+
last_name nil
|
49
|
+
image_url "/assets/user/default.png"
|
50
|
+
image_url_medium "/assets/user/default.png"
|
51
|
+
image_url_small "/assets/user/default.png"
|
52
|
+
birthday "1988-07-15"
|
53
|
+
gender "Male"
|
54
|
+
bio "some text about me"
|
55
|
+
location "github"
|
56
|
+
searchable true
|
57
|
+
nsfw false
|
58
|
+
tag_string "#i #love #tags"
|
59
|
+
end
|
60
|
+
|
61
|
+
factory :location_entity, class: DiasporaFederation::Entities::Location do
|
62
|
+
address "Vienna, Austria"
|
63
|
+
lat 48.208174.to_s
|
64
|
+
lng 16.373819.to_s
|
65
|
+
end
|
66
|
+
|
67
|
+
factory :photo_entity, class: DiasporaFederation::Entities::Photo do
|
68
|
+
guid
|
69
|
+
diaspora_id
|
70
|
+
public(true)
|
71
|
+
created_at { Time.zone.now }
|
72
|
+
remote_photo_path "https://diaspora.example.tld/uploads/images/"
|
73
|
+
remote_photo_name "f2a41e9d2db4d9a199c8.jpg"
|
74
|
+
text "what you see here..."
|
75
|
+
status_message_guid { generate(:guid) }
|
76
|
+
height 480
|
77
|
+
width 800
|
78
|
+
end
|
79
|
+
|
80
|
+
factory :relayable_entity, class: DiasporaFederation::Entities::Relayable do
|
81
|
+
parent_guid { generate(:guid) }
|
82
|
+
end
|
83
|
+
|
84
|
+
factory :participation_entity, class: DiasporaFederation::Entities::Participation, parent: :relayable_entity do
|
85
|
+
guid
|
86
|
+
target_type "Post"
|
87
|
+
diaspora_id
|
88
|
+
end
|
89
|
+
|
90
|
+
factory :status_message_entity, class: DiasporaFederation::Entities::StatusMessage do
|
91
|
+
raw_message "i am a very interesting status update"
|
92
|
+
guid
|
93
|
+
diaspora_id
|
94
|
+
public(true)
|
95
|
+
created_at { Time.zone.now }
|
96
|
+
end
|
97
|
+
|
98
|
+
factory :request_entity, class: DiasporaFederation::Entities::Request do
|
99
|
+
sender_id { generate(:diaspora_id) }
|
100
|
+
recipient_id { generate(:diaspora_id) }
|
101
|
+
end
|
102
|
+
|
103
|
+
factory :comment_entity, class: DiasporaFederation::Entities::Comment, parent: :relayable_entity do
|
104
|
+
guid
|
105
|
+
text "this is a very informative comment"
|
106
|
+
diaspora_id
|
107
|
+
end
|
108
|
+
|
109
|
+
factory :like_entity, class: DiasporaFederation::Entities::Like, parent: :relayable_entity do
|
110
|
+
positive true
|
111
|
+
guid
|
112
|
+
target_type "Post"
|
113
|
+
diaspora_id
|
114
|
+
end
|
115
|
+
|
116
|
+
factory :account_deletion_entity, class: DiasporaFederation::Entities::AccountDeletion do
|
117
|
+
diaspora_id
|
118
|
+
end
|
119
|
+
|
120
|
+
factory :conversation_entity, class: DiasporaFederation::Entities::Conversation do
|
121
|
+
guid
|
122
|
+
subject "this is a very informative subject"
|
123
|
+
created_at { DateTime.now.utc }
|
124
|
+
messages []
|
125
|
+
diaspora_id
|
126
|
+
participant_ids { 3.times.map { generate(:diaspora_id) }.join(";") }
|
127
|
+
end
|
128
|
+
|
129
|
+
factory :message_entity, class: DiasporaFederation::Entities::Message, parent: :relayable_entity do
|
130
|
+
guid
|
131
|
+
text "this is a very informative text"
|
132
|
+
created_at { DateTime.now.utc }
|
133
|
+
diaspora_id
|
134
|
+
conversation_guid { generate(:guid) }
|
135
|
+
end
|
136
|
+
|
137
|
+
factory :relayable_retraction_entity, class: DiasporaFederation::Entities::RelayableRetraction do
|
138
|
+
target_guid { generate(:guid) }
|
139
|
+
target_type "Comment"
|
140
|
+
diaspora_id
|
141
|
+
end
|
142
|
+
|
143
|
+
factory :reshare_entity, class: DiasporaFederation::Entities::Reshare do
|
144
|
+
root_diaspora_id { generate(:diaspora_id) }
|
145
|
+
root_guid { generate(:guid) }
|
146
|
+
guid
|
147
|
+
diaspora_id
|
148
|
+
public(true)
|
149
|
+
created_at { DateTime.now.utc }
|
150
|
+
provider_display_name { "the testsuite" }
|
151
|
+
end
|
152
|
+
|
153
|
+
factory :retraction_entity, class: DiasporaFederation::Entities::Retraction do
|
154
|
+
target_guid { generate(:guid) }
|
155
|
+
diaspora_id
|
156
|
+
target_type "Post"
|
157
|
+
end
|
158
|
+
|
159
|
+
factory :signed_retraction_entity, class: DiasporaFederation::Entities::SignedRetraction do
|
160
|
+
target_guid { generate(:guid) }
|
161
|
+
target_type "Post"
|
162
|
+
diaspora_id
|
163
|
+
end
|
164
|
+
|
165
|
+
factory :poll_answer_entity, class: DiasporaFederation::Entities::PollAnswer do
|
166
|
+
guid
|
167
|
+
answer { "Obama is a bicycle" }
|
168
|
+
end
|
169
|
+
|
170
|
+
factory :poll_entity, class: DiasporaFederation::Entities::Poll do
|
171
|
+
guid
|
172
|
+
question { "Select an answer" }
|
173
|
+
poll_answers { 3.times.map { FactoryGirl.build(:poll_answer_entity) } }
|
174
|
+
end
|
175
|
+
|
176
|
+
factory :poll_participation_entity,
|
177
|
+
class: DiasporaFederation::Entities::PollParticipation,
|
178
|
+
parent: :relayable_entity do
|
179
|
+
guid
|
180
|
+
diaspora_id
|
181
|
+
poll_answer_guid { generate(:guid) }
|
182
|
+
end
|
183
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: diaspora_federation-test
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.9
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Benjamin Neff
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: diaspora_federation
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.9
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.9
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: factory_girl
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.5.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.5.0
|
41
|
+
description: This gem provides some supplimentary code (factory definitions), thathelps
|
42
|
+
to build tests for users of the diaspora_federation gem.
|
43
|
+
email:
|
44
|
+
- benjamin@coding4.coffee
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- lib/diaspora_federation/test.rb
|
50
|
+
- lib/diaspora_federation/test/factories.rb
|
51
|
+
homepage: https://github.com/SuperTux88/diaspora_federation
|
52
|
+
licenses:
|
53
|
+
- AGPL 3.0 - http://www.gnu.org/licenses/agpl-3.0.html
|
54
|
+
metadata: {}
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '2.0'
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
requirements: []
|
70
|
+
rubyforge_project:
|
71
|
+
rubygems_version: 2.4.6
|
72
|
+
signing_key:
|
73
|
+
specification_version: 4
|
74
|
+
summary: diaspora* federation test utils
|
75
|
+
test_files: []
|
76
|
+
has_rdoc:
|