sacrifice 0.0.9 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2a480e21311ddad2b06ed17eec6db93900d6ecf
4
- data.tar.gz: 4698c126d90037eca38deceb3d46c64c54412a8d
3
+ metadata.gz: c74606f632f956725e2bd4fea9789a22cee4b201
4
+ data.tar.gz: f409039dd61db39757abdcd176a9661150f05b05
5
5
  SHA512:
6
- metadata.gz: 9d77a7ec5f833a477a5fcf6fe0f396f1551ac9eb561cb5b31e06e657ab4ead589fbb0bcefacdb2b96847e537c418d9f3fbce1f0e7db3b5c52afd8557cf66c556
7
- data.tar.gz: c539c41a2e6001c929883a846d89f4363feadebfa940886edeb4240192514c46b5fd348c5b7c9ee83b7d34b815cccecaa9580f2ce0ee451fad48e5a44753fa37
6
+ metadata.gz: a513769df721b332c6a0517f18d3869a4091fdcd75d6a316125fc40bfd2dc2328767854251933776693db43c7a5a5280a0074d2091d25cf6a08b8279c66a6ddc
7
+ data.tar.gz: 6914f39fad533258a3861e1481794a0ca2a47cd4050440d715f0e0967974e983738a8223e801769ab579a6a2a5b434f4e641d265642568a2eedf340c16d83c77
data/lib/sacrifice/app.rb CHANGED
@@ -70,6 +70,12 @@ class App
70
70
  @access_token ||= AccessToken.get(id, secret)
71
71
  end
72
72
 
73
+ def find_user(user_id)
74
+ users.find { |user|
75
+ user.id.to_s == user_id.to_s
76
+ }
77
+ end
78
+
73
79
  private
74
80
 
75
81
  def users_url
@@ -101,10 +107,4 @@ class App
101
107
  end
102
108
  app
103
109
  end
104
-
105
- def find_user(user_id)
106
- users.find { |user|
107
- user.id.to_s == user_id.to_s
108
- }
109
- end
110
110
  end
data/lib/sacrifice/csv.rb CHANGED
@@ -5,12 +5,14 @@ require 'json'
5
5
  class Csv
6
6
  CREATE_OPTIONS = [:name, :install, :locale]
7
7
  CHANGE_OPTIONS = [:password]
8
- OUTPUT_ORDER = [:id, :email, :password, :login_url, :access_token]
8
+ OUTPUT_ORDER = [:id, :name, :email, :password, :login_url, :access_token]
9
9
 
10
- def self.generate app_name, file
10
+ def self.generate app_name, file, friends_file
11
11
  app = App.find! app_name
12
12
  output = init_output(app_name, file)
13
13
 
14
+ friends = ids(app, friends_file)
15
+
14
16
  headers = []
15
17
  CSV.read(file, headers: true, header_converters: :symbol).each { |data|
16
18
  if headers.empty?
@@ -40,12 +42,13 @@ class Csv
40
42
  # execute change
41
43
  if change_options.any? and user.change(change_options)
42
44
  user.password = change_options[:password] if change_options[:password]
43
- else
45
+ elsif change_options[:password]
44
46
  puts "Failed to update password to #{change_options[:password]}"
45
47
  end
46
48
 
47
49
  # print created user
48
50
  user_map = user.attrs
51
+ user_map[:name] = create_options[:name] if create_options[:name]
49
52
  puts user_map.map { |key, value| "#{key.upcase} : #{value}" }
50
53
 
51
54
  # log created user
@@ -56,6 +59,9 @@ class Csv
56
59
  }
57
60
  line << output_line
58
61
  } unless user.id.nil?
62
+
63
+ user = app.find_user(user.id)
64
+ friends user, friends
59
65
  }
60
66
  end
61
67
 
@@ -79,6 +85,23 @@ class Csv
79
85
  }
80
86
  end
81
87
 
88
+ def self.ids app, csv_file
89
+ ids = []
90
+ CSV.read(csv_file, headers: true, header_converters: :symbol).each { |data|
91
+ ids.push app.find_user(data[:id]) or raise Thor::Error, "No user found w/id #{user.inspect}"
92
+ } if csv_file
93
+ ids
94
+ end
95
+
96
+ def self.friends user, friends
97
+ if friends.any?
98
+ friends.each { |friend|
99
+ user.send_friend_request_to(friend)
100
+ friend.send_friend_request_to(user)
101
+ }
102
+ end
103
+ end
104
+
82
105
  def self.init_output(app_name, file)
83
106
  output = "sacrificed_#{app_name}_#{file}"
84
107
  File.open(output, 'a').close
@@ -52,8 +52,8 @@ class Users < Thor
52
52
 
53
53
  desc 'friend', 'Make two of an app\'s users friends'
54
54
  method_option 'app', :aliases => %w[-a], :type => :string, :required => true, :banner => 'Name of the app'
55
- method_option 'user1', :aliases => %w[-1 -u1], :type => :string, :required => true, :banner => 'First user ID'
56
- method_option 'user2', :aliases => %w[-2 -u2], :type => :string, :required => true, :banner => 'Second user ID'
55
+ method_option 'user1', :aliases => %w[-1], :type => :string, :required => true, :banner => 'First user ID'
56
+ method_option 'user2', :aliases => %w[-2], :type => :string, :required => true, :banner => 'Second user ID'
57
57
 
58
58
  def friend
59
59
  users = App.find!(options[:app]).users
@@ -64,7 +64,7 @@ class Users < Thor
64
64
  }
65
65
 
66
66
  # The first request is just a request, the second request accepts the first request.
67
- friends.each_index { |idx| friends[idx].send_friend_request_to[(idx + 1) % 2] }
67
+ friends.each_index { |idx| friends[idx].send_friend_request_to(friends[(idx + 1) % 2]) }
68
68
  end
69
69
 
70
70
  desc 'change', 'Change a test user\'s name and/or password'
@@ -145,9 +145,10 @@ class Users < Thor
145
145
  desc 'generate', 'Generate facebook test users'
146
146
  method_option 'app', aliases: %w[-a], type: :string, banner: 'app name that test user generate on' #, required: true
147
147
  method_option 'file', aliases: %w[-f], type: :string, banner: 'csv file to read (required in type csv)', required: true
148
+ method_option 'friends', type: :string, banner: 'csv file that include friend ids for generated users(required in type csv)'
148
149
 
149
150
  def generate
150
- Csv.generate options[:app], options[:file]
151
+ Csv.generate options[:app], options[:file], options[:friends]
151
152
  end
152
153
 
153
154
  desc 'erase', 'Erase facebook test users'
@@ -157,4 +158,16 @@ class Users < Thor
157
158
  def erase
158
159
  Csv.erase options[:app], options[:file]
159
160
  end
161
+
162
+
163
+ desc 'friends', 'Make friends for user'
164
+ method_option 'app', :aliases => %w[-a], :type => :string, :required => true, :banner => 'Name of the app'
165
+ method_option 'user', :aliases => %w[-u], :type => :string, :required => true, :banner => 'User ID'
166
+ method_option 'friends', :aliases => %w[-f], :type => :string, :required => true, :banner => 'Csv file lists friends IDs'
167
+
168
+ def friends
169
+ app = App.find!(options[:app])
170
+ user = app.find_user(options[:user])
171
+ Csv.friends user, Csv.ids(app, options[:friends])
172
+ end
160
173
  end
@@ -1,3 +1,3 @@
1
1
  module Sacrifice
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.12"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sacrifice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - toiroakr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-23 00:00:00.000000000 Z
11
+ date: 2016-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler