summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-11-27 14:05:16 -0800
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-11-27 14:05:16 -0800
commit34dbe81f3b936190e98118b5b93ebb546c27822f (patch)
tree95ba1723b76f750c94b5e88f74c3a74b70031915
parent72967d4597f931ee64b9f8f99a966a547f9ae24b (diff)
parentc1a2d2d2fca04ce3e2a1160f2c1b3922d58061b6 (diff)
downloadgitlab-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.rb6
-rw-r--r--app/views/projects/_form.html.haml2
-rw-r--r--spec/factories/projects.rb7
-rw-r--r--spec/models/project_spec.rb12
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 }