Commit 92674958b0c890cba78eee9115e00f76bd16223a

Authored by Rafael Manzo
2 parents 8147529e 6ff2ac68

Merge pull request #178 from mezuro/fixing_forms

Removing whitespaces on the beginning and end of some of the fields befo...
app/controllers/kalibro_configurations_controller.rb
@@ -71,6 +71,7 @@ class KalibroConfigurationsController < ApplicationController @@ -71,6 +71,7 @@ class KalibroConfigurationsController < ApplicationController
71 71
72 # Never trust parameters from the scary internet, only allow the white list through. 72 # Never trust parameters from the scary internet, only allow the white list through.
73 def kalibro_configuration_params 73 def kalibro_configuration_params
  74 + params[:kalibro_configuration][:name].strip!
74 params[:kalibro_configuration] 75 params[:kalibro_configuration]
75 end 76 end
76 77
app/controllers/projects_controller.rb
@@ -73,6 +73,7 @@ class ProjectsController < ApplicationController @@ -73,6 +73,7 @@ class ProjectsController < ApplicationController
73 73
74 # Never trust parameters from the scary internet, only allow the white list through. 74 # Never trust parameters from the scary internet, only allow the white list through.
75 def project_params 75 def project_params
  76 + params[:project][:name].strip!
76 params[:project] 77 params[:project]
77 end 78 end
78 79
app/controllers/reading_groups_controller.rb
@@ -62,6 +62,7 @@ class ReadingGroupsController < ApplicationController @@ -62,6 +62,7 @@ class ReadingGroupsController < ApplicationController
62 62
63 # Never trust parameters from the scary internet, only allow the white list through. 63 # Never trust parameters from the scary internet, only allow the white list through.
64 def reading_group_params 64 def reading_group_params
  65 + params[:reading_group][:name].strip!
65 params[:reading_group] 66 params[:reading_group]
66 end 67 end
67 68
app/controllers/readings_controller.rb
@@ -50,6 +50,7 @@ class ReadingsController < ApplicationController @@ -50,6 +50,7 @@ class ReadingsController < ApplicationController
50 50
51 # Never trust parameters from the scary internet, only allow the white list through. 51 # Never trust parameters from the scary internet, only allow the white list through.
52 def reading_params 52 def reading_params
  53 + params[:reading][:label].strip!
53 params[:reading] 54 params[:reading]
54 end 55 end
55 56
app/controllers/repositories_controller.rb
@@ -115,6 +115,7 @@ private @@ -115,6 +115,7 @@ private
115 115
116 # Never trust parameters from the scary internet, only allow the white list through. 116 # Never trust parameters from the scary internet, only allow the white list through.
117 def repository_params 117 def repository_params
  118 + params[:repository][:name].strip!
118 params[:repository][:address].strip! 119 params[:repository][:address].strip!
119 params[:repository] 120 params[:repository]
120 end 121 end
config/initializers/devise.rb
@@ -45,7 +45,7 @@ Devise.setup do |config| @@ -45,7 +45,7 @@ Devise.setup do |config|
45 # Configure which authentication keys should have whitespace stripped. 45 # Configure which authentication keys should have whitespace stripped.
46 # These keys will have whitespace before and after removed upon creating or 46 # These keys will have whitespace before and after removed upon creating or
47 # modifying a user and when used to authenticate or find a user. Default is :email. 47 # modifying a user and when used to authenticate or find a user. Default is :email.
48 - config.strip_whitespace_keys = [ :email ] 48 + config.strip_whitespace_keys = [ :email, :name ]
49 49
50 # Tell if authentication through request.params is enabled. True by default. 50 # Tell if authentication through request.params is enabled. True by default.
51 # It can be set to an array that will enable params authentication only for the 51 # It can be set to an array that will enable params authentication only for the
features/kalibro_configuration/create.feature
@@ -39,3 +39,13 @@ Feature: Configuration Creation @@ -39,3 +39,13 @@ Feature: Configuration Creation
39 And I fill the Description field with "Web Service to collect metrics" 39 And I fill the Description field with "Web Service to collect metrics"
40 When I press the Save button 40 When I press the Save button
41 Then I should see "Name can't be blank" 41 Then I should see "Name can't be blank"
  42 +
  43 + @kalibro_configuration_restart
  44 + Scenario: configuration name with whitespaces
  45 + Given I am a regular user
  46 + And I am signed in
  47 + And I have a configuration named "Kalibro Metrics"
  48 + And I am at the New Configuration page
  49 + And I fill the Name field with " Kalibro Metrics "
  50 + When I press the Save button
  51 + Then I should see "Name has already been taken"
features/project/create.feature
@@ -45,3 +45,15 @@ Feature: Project Creation @@ -45,3 +45,15 @@ Feature: Project Creation
45 And I click the Your projects link 45 And I click the Your projects link
46 When I click the New Project link 46 When I click the New Project link
47 Then I should see "New Project" 47 Then I should see "New Project"
  48 +
  49 + @kalibro_processor_restart
  50 + Scenario: Choosing a name with whitespaces on the beginning and end
  51 + Given I am a regular user
  52 + And I am signed in
  53 + And I have a project named "Kalibro Metrics"
  54 + And I am at the New Project page
  55 + And I fill the Name field with " Kalibro Metrics "
  56 + And I fill the Description field with "Web Service to collect metrics"
  57 + When I press the Save button
  58 + Then I should see "Name has already been taken"
  59 +
features/reading/new.feature
@@ -89,3 +89,18 @@ Feature: New reading @@ -89,3 +89,18 @@ Feature: New reading
89 When I press the Save button 89 When I press the Save button
90 Then I should see "Color must be hexadecimal" 90 Then I should see "Color must be hexadecimal"
91 And I should be at the New Reading page 91 And I should be at the New Reading page
  92 +
  93 + @kalibro_configuration_restart
  94 + Scenario: Label with whitespaces
  95 + Given I am a regular user
  96 + And I am signed in
  97 + And I own a sample reading group
  98 + And I have a sample reading within the sample reading group labeled "My Reading"
  99 + And I am at the New Reading page
  100 + And I fill the Label field with " My Reading "
  101 + And I fill the Grade field with "10"
  102 + And I fill the Color field with "ffff00"
  103 + When I press the Save button
  104 + Then I should see "Label Should be unique within a Reading Group"
  105 + And I should be at the New Reading page
  106 +
features/reading_group/create.feature
@@ -22,7 +22,7 @@ Scenario: Reading Group creation @@ -22,7 +22,7 @@ Scenario: Reading Group creation
22 And I should see "Destroy Reading Group" 22 And I should see "Destroy Reading Group"
23 23
24 @kalibro_configuration_restart 24 @kalibro_configuration_restart
25 -Scenario: reading group creation with already taken name 25 +Scenario: Reading Group creation with already taken name
26 Given I am a regular user 26 Given I am a regular user
27 And I am signed in 27 And I am signed in
28 And I have a reading group named "Group" 28 And I have a reading group named "Group"
@@ -33,7 +33,7 @@ Scenario: reading group creation with already taken name @@ -33,7 +33,7 @@ Scenario: reading group creation with already taken name
33 Then I should see "Name has already been taken" 33 Then I should see "Name has already been taken"
34 34
35 @kalibro_configuration_restart 35 @kalibro_configuration_restart
36 -Scenario: reading group creation with blank name 36 +Scenario: Reading Group creation with blank name
37 Given I am a regular user 37 Given I am a regular user
38 And I am signed in 38 And I am signed in
39 And I am at the New Reading Group page 39 And I am at the New Reading Group page
@@ -41,3 +41,14 @@ Scenario: reading group creation with blank name @@ -41,3 +41,14 @@ Scenario: reading group creation with blank name
41 And I fill the Description field with "Anything" 41 And I fill the Description field with "Anything"
42 When I press the Save button 42 When I press the Save button
43 Then I should see "Name can't be blank" 43 Then I should see "Name can't be blank"
  44 +
  45 +@kalibro_configuration_restart
  46 +Scenario: Reading Group name with whitespaces
  47 + Given I am a regular user
  48 + And I am signed in
  49 + And I have a reading group named "Reading Group"
  50 + And I am at the New Reading Group page
  51 + And I fill the Name field with " Reading Group "
  52 + When I press the Save button
  53 + Then I should see "Name has already been taken"
  54 +
features/repository/create.feature
@@ -54,3 +54,20 @@ Scenario: repository creation with name already taken @@ -54,3 +54,20 @@ Scenario: repository creation with name already taken
54 And I set the select field "repository_kalibro_configuration_id" as "Java" 54 And I set the select field "repository_kalibro_configuration_id" as "Java"
55 When I press the Save button 55 When I press the Save button
56 Then I should see "Name should be unique within project" 56 Then I should see "Name should be unique within project"
  57 +
  58 +@kalibro_configuration_restart @kalibro_processor_restart @javascript
  59 +Scenario: Repository name with whitespaces
  60 + Given I am a regular user
  61 + And I am signed in
  62 + And I own a sample project
  63 + And I have a sample configuration with native metrics
  64 + And I have a sample repository within the sample project named "Kalibro Entities"
  65 + And I am at the New Repository page
  66 + And I fill the Name field with " Kalibro Entities "
  67 + And I set the select field "License" as "ISC License (ISC)"
  68 + And I set the select field "Type" as "GIT"
  69 + And I fill the Address field with "https://github.com/mezuro/kalibro_gem.git"
  70 + And I set the select field "Process Period" as "1 day"
  71 + And I set the select field "repository_kalibro_configuration_id" as "Java"
  72 + When I press the Save button
  73 + Then I should see "Name should be unique within project"
spec/controllers/repositories_controller_spec.rb
@@ -21,7 +21,7 @@ describe RepositoriesController, :type => :controller do @@ -21,7 +21,7 @@ describe RepositoriesController, :type => :controller do
21 it { is_expected.to render_template(:new) } 21 it { is_expected.to render_template(:new) }
22 end 22 end
23 23
24 - context "when the current user doesn't owns the project" do 24 + context "when the current user doesn't own the project" do
25 before :each do 25 before :each do
26 get :new, project_id: project.id.to_s 26 get :new, project_id: project.id.to_s
27 end 27 end
@@ -42,7 +42,7 @@ describe RepositoriesController, :type => :controller do @@ -42,7 +42,7 @@ describe RepositoriesController, :type => :controller do
42 42
43 describe 'create' do 43 describe 'create' do
44 let (:repository) { FactoryGirl.build(:repository, project_id: project.id) } 44 let (:repository) { FactoryGirl.build(:repository, project_id: project.id) }
45 - let(:repository_params) { Hash[FactoryGirl.attributes_for(:repository).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with symbols and integers 45 + let(:repository_params) { FactoryGirl.build(:repository).to_hash }
46 46
47 before do 47 before do
48 sign_in FactoryGirl.create(:user) 48 sign_in FactoryGirl.create(:user)
@@ -76,7 +76,7 @@ describe RepositoriesController, :type => :controller do @@ -76,7 +76,7 @@ describe RepositoriesController, :type => :controller do
76 end 76 end
77 end 77 end
78 78
79 - context "when the current user doesn't owns the project " do 79 + context "when the current user doesn't own the project " do
80 before :each do 80 before :each do
81 post :create, project_id: project.id, repository: repository_params 81 post :create, project_id: project.id, repository: repository_params
82 end 82 end