]> cat aescling's git repositories - mastodon.git/commitdiff
Merge branch 'master' into add_more_tests_to_models
authorEugen <eugen@zeonfederated.com>
Wed, 5 Apr 2017 01:27:38 +0000 (03:27 +0200)
committerGitHub <noreply@github.com>
Wed, 5 Apr 2017 01:27:38 +0000 (03:27 +0200)
1  2 
spec/models/user_spec.rb

index 1a32541850895a260da5b1195b79d7d973555845,aa777fd39e8c7edee494914725e042a16c96a612..5575ba107b8435b36b728ec7abc83e09a5d95041
@@@ -1,49 -1,42 +1,87 @@@
  require 'rails_helper'
  
  RSpec.describe User, type: :model do
 -    end    
 +  describe 'validations' do
 +    it 'is invalid without an account' do
 +      user = Fabricate.build(:user, account: nil)
 +      user.valid?
 +      expect(user).to model_have_error_on_field(:account)
 +    end
 +
 +    it 'is invalid without a valid locale' do
 +      user = Fabricate.build(:user, locale: 'toto')
 +      user.valid?
 +      expect(user).to model_have_error_on_field(:locale)
 +    end
 +
 +    it 'is invalid without a valid email' do
 +      user = Fabricate.build(:user, email: 'john@')
 +      user.valid?
 +      expect(user).to model_have_error_on_field(:email)
 +    end
 +  end
 +
 +  describe 'scopes' do
 +    describe 'recent' do
 +      it 'returns an array of recent users ordered by id' do
 +        user_1 = Fabricate(:user)
 +        user_2 = Fabricate(:user)
 +        expect(User.recent).to match_array([user_2, user_1])
 +      end
 +    end
 +
 +    describe 'admins' do
 +      it 'returns an array of users who are admin' do
 +        user_1 = Fabricate(:user, admin: false)
 +        user_2 = Fabricate(:user, admin: true)
 +        expect(User.admins).to match_array([user_2])
 +      end
 +    end
 +
 +    describe 'confirmed' do
 +      it 'returns an array of users who are confirmed' do
 +        user_1 = Fabricate(:user, confirmed_at: nil)
 +        user_2 = Fabricate(:user, confirmed_at: Time.now)
 +        expect(User.confirmed).to match_array([user_2])
 +      end
 +    end
++
+   let(:account) { Fabricate(:account, username: 'alice') }  
+   let(:password) { 'abcd1234' }
+   describe 'blacklist' do
+     it 'should allow a non-blacklisted user to be created' do
+       user = User.new(email: 'foo@example.com', account: account, password: password)
+       expect(user.valid?).to be_truthy
+     end
+     
+     it 'should not allow a blacklisted user to be created' do
+       user = User.new(email: 'foo@mvrht.com', account: account, password: password)
+       expect(user.valid?).to be_falsey
+     end
+   end
+   describe 'whitelist' do
+     around(:each) do |example|
+       old_whitelist = Rails.configuration.x.email_whitelist
+       Rails.configuration.x.email_domains_whitelist = 'mastodon.space'
+       example.run
+       Rails.configuration.x.email_domains_whitelist = old_whitelist
+     end
+     it 'should not allow a user to be created unless they are whitelisted' do
+       user = User.new(email: 'foo@example.com', account: account, password: password)
+       expect(user.valid?).to be_falsey
+     end
+     it 'should allow a user to be created if they are whitelisted' do
+       user = User.new(email: 'foo@mastodon.space', account: account, password: password)
+       expect(user.valid?).to be_truthy
++    end
    end
  end