diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-11-27 14:05:16 -0800 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2012-11-27 14:05:16 -0800 |
commit | 34dbe81f3b936190e98118b5b93ebb546c27822f (patch) | |
tree | 95ba1723b76f750c94b5e88f74c3a74b70031915 | |
parent | 72967d4597f931ee64b9f8f99a966a547f9ae24b (diff) | |
parent | c1a2d2d2fca04ce3e2a1160f2c1b3922d58061b6 (diff) | |
download | gitlab-ci-34dbe81f3b936190e98118b5b93ebb546c27822f.tar.gz |
Merge pull request #19 from jojosch/generate-random-token-if-none-provided
Project: generate random token if none is provided
-rw-r--r-- | app/models/project.rb | 6 | ||||
-rw-r--r-- | app/views/projects/_form.html.haml | 2 | ||||
-rw-r--r-- | spec/factories/projects.rb | 7 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 12 |
4 files changed, 26 insertions, 1 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 0d867b8..425e9f4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -9,6 +9,12 @@ class Project < ActiveRecord::Base validates_uniqueness_of :name + before_validation :set_default_values + + def set_default_values + self.token = SecureRandom.hex(15) if self.token.blank? + end + def repo_present? repo rescue Grit::NoSuchPathError, Grit::InvalidGitRepositoryError diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index 1fc2270..151f584 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -15,7 +15,7 @@ = f.label :name = f.text_field :name, class: 'input-xlarge', placeholder: 'my-project' .field - = f.label :token + = f.label :token, "Token (Leave empty to generate random token)" = f.text_field :token, class: 'input-xlarge', placeholder: 'xEeFCaDAB89' %fieldset %legend Git diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index 81c78b9..e1491ae 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -8,4 +8,11 @@ FactoryGirl.define do path Rails.root.join('tmp', 'test_repo').to_s scripts 'ls' end + + factory :project_without_token, class: Project do + name Faker::Name.name + default_ref 'master' + path Rails.root.join('tmp', 'test_repo').to_s + scripts 'ls' + end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 009c2c3..11e6933 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -10,6 +10,18 @@ describe Project do it { should_not allow_value('/tmp').for(:path) } end + describe 'before_validation' do + it 'should set an random token if none provided' do + project = FactoryGirl.create :project_without_token + project.token.should_not == "" + end + + it 'should not set an random toke if one provided' do + project = FactoryGirl.create :project + project.token.should == "iPWx6WM4lhHNedGfBpPJNP" + end + end + it { should validate_presence_of :name } it { should validate_presence_of :scripts } it { should validate_presence_of :timeout } |