Commit ce527b68f07c245e887a640b6f874406bae7d0ed

Authored by Dmitriy Zaporozhets
2 parents ede3446c 62f1c977

Merge branch 'improve/avatar_upload_only_images' of /home/git/repositories/gitlab/gitlabhq

Showing 2 changed files with 21 additions and 2 deletions   Show diff stats
app/models/user.rb
... ... @@ -113,9 +113,8 @@ class User < ActiveRecord::Base
113 113 message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
114 114  
115 115 validates :notification_level, inclusion: { in: Notification.notification_levels }, presence: true
116   -
117 116 validate :namespace_uniq, if: ->(user) { user.username_changed? }
118   -
  117 + validate :avatar_type, if: ->(user) { user.avatar_changed? }
119 118 validates :avatar, file_size: { maximum: 100.kilobytes.to_i }
120 119  
121 120 before_validation :generate_password, on: :create
... ... @@ -244,6 +243,12 @@ class User < ActiveRecord::Base
244 243 end
245 244 end
246 245  
  246 + def avatar_type
  247 + unless self.avatar.image?
  248 + self.errors.add :avatar, "only images allowed"
  249 + end
  250 + end
  251 +
247 252 # Groups user has access to
248 253 def authorized_groups
249 254 @authorized_groups ||= begin
... ...
spec/models/user_spec.rb
... ... @@ -279,4 +279,18 @@ describe User do
279 279 User.by_username_or_id('bar').should be_nil
280 280 end
281 281 end
  282 +
  283 + describe :avatar_type do
  284 + let(:user) { create(:user) }
  285 +
  286 + it "should be true if avatar is image" do
  287 + user.update_attribute(:avatar, 'uploads/avatar.png')
  288 + user.avatar_type.should be_true
  289 + end
  290 +
  291 + it "should be false if avatar is html page" do
  292 + user.update_attribute(:avatar, 'uploads/avatar.html')
  293 + user.avatar_type.should == ["only images allowed"]
  294 + end
  295 + end
282 296 end
... ...