Revision 9c0e127b
Added by Paul Kelly about 14 years ago
- ID 9c0e127b1d42b7243403dd49d739cf8e97baa60b
.gitmodules | ||
---|---|---|
[submodule "extras/puppet"]
|
||
path = extras/puppet
|
||
url = git://github.com/ohadlevy/puppet-foreman.git
|
||
[submodule "vendor/plugins/has_many_polymorphs"]
|
||
path = vendor/plugins/has_many_polymorphs
|
||
url = git://github.com/fauna/has_many_polymorphs.git
|
app/controllers/usergroups_controller.rb | ||
---|---|---|
class UsergroupsController < ApplicationController
|
||
def index
|
||
@usergroups = Usergroup.all
|
||
end
|
||
|
||
def new
|
||
@usergroup = Usergroup.new
|
||
end
|
||
|
||
def create
|
||
@usergroup = Usergroup.new(params[:usergroup])
|
||
if @usergroup.save
|
||
flash[:foreman_notice] = "Successfully created usergroup."
|
||
redirect_to usergroups_path
|
||
else
|
||
render :action => 'new'
|
||
end
|
||
end
|
||
|
||
def edit
|
||
@usergroup = Usergroup.find(params[:id])
|
||
end
|
||
|
||
def update
|
||
@usergroup = Usergroup.find(params[:id])
|
||
|
||
if @usergroup.update_attributes(params[:usergroup])
|
||
flash[:foreman_notice] = "Successfully updated usergroup."
|
||
redirect_to usergroups_path
|
||
else
|
||
render :action => 'edit'
|
||
end
|
||
end
|
||
|
||
def destroy
|
||
@usergroup = Usergroup.find(params[:id])
|
||
if @usergroup.destroy
|
||
flash[:foreman_notice] = "Successfully destroyed usergroup."
|
||
else
|
||
logger.error @usergroup.errors.full_messages
|
||
flash[:foreman_error] = @usergroup.errors.full_messages.join "<br>"
|
||
end
|
||
redirect_to usergroups_path
|
||
end
|
||
end
|
app/controllers/users_controller.rb | ||
---|---|---|
columns[:firstname].label = "First name"
|
||
columns[:lastname].label = "Surname"
|
||
columns[:admin].label = "Admin"
|
||
config.columns = [:firstname, :lastname, :login, :mail, :admin, :auth_source, :last_login_on]
|
||
config.columns = [:firstname, :lastname, :login, :mail, :admin, :auth_source, :usergroups, :last_login_on]
|
||
config.update.columns = [:firstname, :lastname, :login, :mail, :admin, :auth_source, :last_login_on]
|
||
config.columns[:auth_source].form_ui = :select
|
||
config.columns[:admin].form_ui = :checkbox
|
||
config.columns[:usergroups].clear_link
|
||
list.sorting = {:last_login_on => 'DESC' }
|
||
config.update.columns.exclude :last_login_on
|
||
end
|
app/helpers/application_helper.rb | ||
---|---|---|
end
|
||
|
||
def edit_habtm klass, association
|
||
render :partial => 'common/edit_habtm', :locals =>{ :klass => klass, :associations => association.all}
|
||
render :partial => 'common/edit_habtm', :locals =>{ :klass => klass, :associations => association.all.delete_if{|e| e == klass}}
|
||
end
|
||
|
||
def link_to_remove_fields(name, f)
|
app/helpers/usergroups_helper.rb | ||
---|---|---|
module UsergroupsHelper
|
||
end
|
app/models/host.rb | ||
---|---|---|
has_many :reports, :dependent => :destroy
|
||
has_many :host_parameters, :dependent => :destroy
|
||
accepts_nested_attributes_for :host_parameters, :reject_if => lambda { |a| a[:value].blank? }, :allow_destroy => true
|
||
belongs_to :owner, :polymorphic => true
|
||
|
||
named_scope :recent, lambda { |*args| {:conditions => ["last_report > ?", (args.first || (SETTINGS[:run_interval] + 5.minutes).ago)]} }
|
||
named_scope :out_of_sync, lambda { |*args| {:conditions => ["last_report < ?", (args.first || (SETTINGS[:run_interval] + 5.minutes).ago)]} }
|
||
... | ... | |
|
||
before_validation :normalize_addresses, :normalize_hostname
|
||
|
||
def <=>(other)
|
||
self.name <=> other.name
|
||
end
|
||
|
||
# Returns the name of this host as a string
|
||
# String: the host's name
|
||
def to_label
|
||
... | ... | |
20
|
||
end
|
||
|
||
# method to return the correct owner list for host edit owner select dropbox
|
||
def is_owned_by
|
||
owner.id_and_type if owner
|
||
end
|
||
|
||
# virtual attributes which sets the owner based on the user selection
|
||
# supports a simple user, or a usergroup
|
||
# selection parameter is expected to be an ActiveRecord id_and_type method (see Foreman's AR extentions).
|
||
def is_owned_by=(selection)
|
||
oid = User.find(selection.to_i) if selection =~ /-Users$/
|
||
oid = Usergroup.find(selection.to_i) if selection =~ /-Usergroups$/
|
||
self.owner = oid
|
||
end
|
||
|
||
def clearReports
|
||
# Remove any reports that may be held against this host
|
||
Report.delete_all("host_id = #{self.id}")
|
app/models/host_mailer.rb | ||
---|---|---|
|
||
def error_state(report)
|
||
host = report.host
|
||
email = SETTINGS[:administrator]
|
||
email = host.owner.recipients if SETTINGS[:ldap] and not host.owner.empty?
|
||
email = SETTINGS[:administrator] if email.empty?
|
||
raise "unable to find recipients" if email.empty?
|
||
recipients email
|
||
from "Foreman-noreply"
|
app/models/user.rb | ||
---|---|---|
class User < ActiveRecord::Base
|
||
belongs_to :auth_source
|
||
has_many :changes, :class_name => 'Audit', :as => :user
|
||
|
||
has_many :hosts
|
||
has_many :usergroups, :through => :usergroup_member
|
||
has_many :direct_hosts, :as => :owner, :class_name => "Host"
|
||
|
||
validates_uniqueness_of :login, :message => "already exists"
|
||
validates_presence_of :login, :mail
|
||
... | ... | |
validates_format_of :mail, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i, :allow_nil => true
|
||
validates_length_of :mail, :maximum => 60, :allow_nil => true
|
||
|
||
before_destroy Ensure_not_used_by.new(:hosts)
|
||
|
||
def to_label
|
||
"#{firstname} #{lastname}"
|
||
end
|
||
alias_method :to_s, :to_label
|
||
alias_method :name, :to_label
|
||
|
||
def <=>(other)
|
||
self.name <=> other.name
|
||
end
|
||
|
||
# The text item to see in a select dropdown menu
|
||
def select_title
|
||
name + " (#{login})"
|
||
end
|
||
|
||
def self.try_to_login(login, password)
|
||
# Make sure no one can sign in with an empty password
|
||
... | ... | |
raise text
|
||
end
|
||
|
||
def indirect_hosts
|
||
all_groups = []
|
||
for usergroup in usergroups
|
||
all_groups += usergroup.all_usergroups
|
||
end
|
||
all_groups.uniq.map{|g| g.hosts}.flatten.uniq
|
||
end
|
||
|
||
def hosts
|
||
direct_hosts + indirect_hosts
|
||
end
|
||
|
||
def recipients
|
||
[mail]
|
||
end
|
||
|
||
protected
|
||
|
||
def validate
|
||
if Usergroup.all.map(&:name).include?(self.login)
|
||
errors.add_to_base "A usergroup already exists with this name"
|
||
end
|
||
end
|
||
|
||
end
|
app/models/usergroup.rb | ||
---|---|---|
class Usergroup < ActiveRecord::Base
|
||
has_many_polymorphs :members, :from => [:usergroups, :users ], :as => :member,
|
||
:through => :usergroup_member, :foreign_key => :usergroup_id, :dependent => :destroy
|
||
|
||
has_many :hosts, :as => :owner
|
||
validates_uniqueness_of :name
|
||
before_destroy Ensure_not_used_by.new(:hosts, :usergroups)
|
||
|
||
def to_s
|
||
name
|
||
end
|
||
|
||
# The text item to see in a select dropdown menu
|
||
alias_method :select_title, :to_s
|
||
|
||
# Support for sorting the groups by name
|
||
def <=>(other)
|
||
self.name <=> other.name
|
||
end
|
||
|
||
# This methods retrieves all user addresses in a usergroup
|
||
# Returns: Array of strings representing the user's email addresses
|
||
def recipients
|
||
all_users.map(&:mail).flatten.sort.uniq
|
||
end
|
||
|
||
# This methods retrieves all users in a usergroup
|
||
# Returns: Array of users
|
||
def all_users(group_list=[self], user_list=[])
|
||
retrieve_users_and_groups group_list, user_list
|
||
user_list.sort.uniq
|
||
end
|
||
|
||
# This methods retrieves all usergroups in a usergroup
|
||
# Returns: Array of usergroups
|
||
def all_usergroups(group_list=[self], user_list=[])
|
||
retrieve_users_and_groups group_list, user_list
|
||
group_list.sort.uniq
|
||
end
|
||
|
||
protected
|
||
# Recurses down the tree of usergroups and finds the users
|
||
# [+group_list+]: Array of Usergroups that have already been processed
|
||
# [+users+] : Array of users accumulated at this point
|
||
# Returns : Array of non unique users
|
||
def retrieve_users_and_groups(group_list, user_list)
|
||
for group in usergroups
|
||
next if group_list.include? group
|
||
group_list << group
|
||
|
||
group.retrieve_users_and_groups(group_list, user_list)
|
||
end
|
||
user_list.concat users
|
||
end
|
||
|
||
def validate
|
||
if User.all.map(&:login).include?(self.name)
|
||
errors.add :name, "is already used by a user account"
|
||
end
|
||
end
|
||
|
||
end
|
app/models/usergroup_member.rb | ||
---|---|---|
class UsergroupMember < ActiveRecord::Base
|
||
belongs_to :member, :polymorphic => true
|
||
belongs_to :usergroup
|
||
|
||
end
|
app/views/home/settings.erb | ||
---|---|---|
<li><%= link_to 'Global Parameters', common_parameters_path %> </li>
|
||
<li><%= link_to "External Variables", lookup_keys_path %> </li>
|
||
<li><%= link_to 'LDAP Authentication', auth_source_ldaps_path %> </li>
|
||
<li><%= link_to_if SETTINGS[:ldap], 'Users', users_path %> </li>
|
||
<li><%= link_to_if SETTINGS[:ldap], 'Users', users_path %> </li>
|
||
<li><%= link_to_if SETTINGS[:ldap], 'Usergroups', usergroups_path %> </li>
|
||
</ul>
|
||
</div>
|
app/views/hosts/_form.html.erb | ||
---|---|---|
<td>Puppetmaster</td>
|
||
<td><%= f.text_field :puppetmaster, :size => 10, :value => @host.puppetmaster %></td>
|
||
<td><%= link_to_function "Additional Classes", toggle_div(:classlist) %></td>
|
||
<% if SETTINGS[:ldap] -%>
|
||
<td>Owned by</td>
|
||
<td>
|
||
<%= f.select :is_owned_by,
|
||
option_groups_from_collection_for_select( [ User, Usergroup], :all, :table_name, :id_and_type, :select_title, @host.is_owned_by),
|
||
:include_blank => "select an owner" %>
|
||
</td>
|
||
<% end -%>
|
||
</tr>
|
||
</table>
|
||
|
app/views/usergroups/_form.html.erb | ||
---|---|---|
<% form_for @usergroup do |f| %>
|
||
<%= f.error_messages %>
|
||
<table>
|
||
<tr>
|
||
<td>Name</td>
|
||
<td><%= f.text_field :name %></td>
|
||
</tr>
|
||
<tr>
|
||
<td>User groups</td>
|
||
<td><%= edit_habtm @usergroup, Usergroup %></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Users</td>
|
||
<td><%= edit_habtm @usergroup, User %></td>
|
||
</tr>
|
||
<tr><td><%= f.submit "Submit" %></td></tr>
|
||
</table>
|
||
<% end %>
|
app/views/usergroups/edit.html.erb | ||
---|---|---|
<% title "Edit Usergroup" %>
|
||
|
||
<%= render :partial => 'form' %>
|
||
|
||
<p>
|
||
<%= link_to "View All", usergroups_path %>
|
||
</p>
|
app/views/usergroups/index.html.erb | ||
---|---|---|
<% title "Usergroups" %>
|
||
|
||
<table class="list">
|
||
<tr>
|
||
<th>Name</th>
|
||
<th>Users</th>
|
||
<th>User Groups</th>
|
||
<th></th>
|
||
</tr>
|
||
<% for usergroup in @usergroups %>
|
||
<tr class="<%= cycle("even", "odd") -%>">
|
||
<td><%= link_to h(usergroup.name), edit_usergroup_path(usergroup) %></td>
|
||
<td><%= usergroup.users.map(&:login).to_sentence %></td>
|
||
<td><%= usergroup.usergroups.map(&:name).to_sentence %></td>
|
||
<td align="right">
|
||
<%= link_to "Destroy", usergroup, :confirm => 'Are you sure?', :method => :delete %>
|
||
</td>
|
||
</tr>
|
||
<% end %>
|
||
</table>
|
||
|
||
<p><%= link_to "New Usergroup", new_usergroup_path %></p>
|
app/views/usergroups/new.html.erb | ||
---|---|---|
<% title "New Usergroup" %>
|
||
|
||
<%= render :partial => 'form' %>
|
||
|
||
<p><%= link_to "Back to List", usergroups_path %></p>
|
config/initializers/foreman.rb | ||
---|---|---|
end
|
||
end
|
||
end
|
||
|
||
def id_and_type
|
||
"#{id}-#{self.class.table_name.humanize}"
|
||
end
|
||
|
||
end
|
||
|
||
module ExemptedFromLogging
|
config/routes.rb | ||
---|---|---|
ActionController::Routing::Routes.draw do |map|
|
||
map.resources :usergroups
|
||
map.root :controller => "hosts"
|
||
|
||
map.connect "node/:name", :controller => 'hosts', :action => 'externalNodes',
|
db/migrate/20100416124600_create_usergroups.rb | ||
---|---|---|
class CreateUsergroups < ActiveRecord::Migration
|
||
def self.up
|
||
create_table :usergroups do |t|
|
||
t.string :name
|
||
t.timestamps
|
||
end
|
||
create_table :usergroup_members do |t|
|
||
t.references :member, :polymorphic => true
|
||
t.references :usergroup
|
||
end
|
||
end
|
||
|
||
def self.down
|
||
drop_table :members
|
||
drop_table :usergroups
|
||
end
|
||
end
|
db/migrate/20100419151910_add_owner_to_hosts.rb | ||
---|---|---|
class AddOwnerToHosts < ActiveRecord::Migration
|
||
def self.up
|
||
add_column :hosts, :owner_id, :integer
|
||
add_column :hosts, :owner_type, :string
|
||
|
||
Host.reset_column_information
|
||
|
||
updated = []
|
||
email = SETINGS[:administrator] || "root@" + Facter.domain
|
||
owner = User.find_by_mail email
|
||
owner ||= User.find_or_create_by_login(:login => "admin", :admin => true, :firstname => "Admin", :lastname => "User", :mail => email)
|
||
say "setting default owner for all hosts"
|
||
Host.update_all("owner_id = '#{owner.id}'")
|
||
end
|
||
|
||
def self.down
|
||
remove_column :hosts, :owner_type
|
||
remove_column :hosts, :owner_id
|
||
end
|
||
end
|
test/fixtures/usergroups.yml | ||
---|---|---|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
||
|
||
one:
|
||
name: MyString
|
||
|
||
two:
|
||
name: MyString
|
test/fixtures/users.yml | ||
---|---|---|
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
||
|
||
one:
|
||
login: MyString
|
||
firstname: MyString
|
||
lastname: MyString
|
||
login: one
|
||
firstname: One
|
||
lastname: User
|
||
mail: MyString
|
||
admin: false
|
||
last_login_on: 2009-10-12 21:50:04
|
||
auth_source_id: 1
|
||
|
||
two:
|
||
login: MyString
|
||
firstname: MyString
|
||
lastname: MyString
|
||
login: two
|
||
firstname: Two
|
||
lastname: User
|
||
mail: MyString
|
||
admin: false
|
||
last_login_on: 2009-10-12 21:50:04
|
test/functional/architectures_controller_test.rb | ||
---|---|---|
|
||
class ArchitecturesControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Architecture.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Architecture.any_instance.stubs(:valid?).returns(true)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_redirected_to architectures_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Architecture.first
|
||
get :edit, {:id => Architecture.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
Architecture.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Architecture.first
|
||
put :update, {:id => Architecture.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Architecture.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Architecture.first
|
||
put :update, {:id => Architecture.first}, set_session_user
|
||
assert_redirected_to architectures_url
|
||
end
|
||
|
||
def test_destroy
|
||
architecture = Architecture.first
|
||
delete :destroy, :id => architecture
|
||
delete :destroy, {:id => architecture}, set_session_user
|
||
assert_redirected_to architectures_url
|
||
assert !Architecture.exists?(architecture.id)
|
||
end
|
test/functional/audit_controller_test.rb | ||
---|---|---|
|
||
class AuditControllerTest < ActionController::TestCase
|
||
test "should get index" do
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_response :success
|
||
assert_not_nil assigns(:records)
|
||
end
|
||
|
||
test "should get search" do
|
||
get :show_search
|
||
get :show_search, {}, set_session_user
|
||
assert_response :success
|
||
end
|
||
|
||
... | ... | |
audited_record = Audit.find_by_auditable_id(parameter.id)
|
||
assert_not_nil audited_record
|
||
|
||
get :show, :id => audited_record.id
|
||
get :show, {:id => audited_record.id}, set_session_user
|
||
assert_response :success
|
||
end
|
||
end
|
test/functional/auth_source_ldaps_controller_test.rb | ||
---|---|---|
|
||
class AuthSourceLdapsControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
AuthSourceLdap.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
AuthSourceLdap.any_instance.stubs(:valid?).returns(true)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_redirected_to auth_source_ldaps_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => AuthSourceLdap.first
|
||
get :edit, {:id => AuthSourceLdap.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
AuthSourceLdap.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => AuthSourceLdap.first
|
||
put :update, {:id => AuthSourceLdap.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
AuthSourceLdap.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => AuthSourceLdap.first
|
||
put :update, {:id => AuthSourceLdap.first}, set_session_user
|
||
assert_redirected_to auth_source_ldaps_url
|
||
end
|
||
|
||
def test_destroy
|
||
auth_source_ldap = AuthSourceLdap.first
|
||
delete :destroy, :id => auth_source_ldap
|
||
delete :destroy, {:id => auth_source_ldap}, set_session_user
|
||
assert_redirected_to auth_source_ldaps_url
|
||
assert !AuthSourceLdap.exists?(auth_source_ldap.id)
|
||
end
|
test/functional/common_parameters_controller_test.rb | ||
---|---|---|
|
||
class CommonParametersControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
CommonParameter.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
CommonParameter.any_instance.stubs(:valid?).returns(true)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_redirected_to common_parameters_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => CommonParameter.first
|
||
get :edit, {:id => CommonParameter.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
CommonParameter.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => CommonParameter.first
|
||
put :update, {:id => CommonParameter.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
CommonParameter.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => CommonParameter.first
|
||
put :update, {:id => CommonParameter.first}, set_session_user
|
||
assert_redirected_to common_parameters_url
|
||
end
|
||
|
||
def test_destroy
|
||
common_parameter = CommonParameter.first
|
||
delete :destroy, :id => common_parameter
|
||
delete :destroy, {:id => common_parameter}, set_session_user
|
||
assert_redirected_to common_parameters_url
|
||
assert !CommonParameter.exists?(common_parameter.id)
|
||
end
|
test/functional/dashboard_controller_test.rb | ||
---|---|---|
|
||
class DashboardControllerTest < ActionController::TestCase
|
||
test "should get index" do
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_response :success
|
||
end
|
||
|
||
test "should get errors" do
|
||
get :errors
|
||
get :errors, {}, set_session_user
|
||
assert_response :success
|
||
assert_template :partial => "hosts/_minilist"
|
||
end
|
||
|
||
test "should get active" do
|
||
get :active
|
||
get :active, {}, set_session_user
|
||
assert_response :success
|
||
assert_template :partial => "hosts/_minilist"
|
||
end
|
||
|
||
test "should get out of sync" do
|
||
get :OutOfSync
|
||
get :OutOfSync, {}, set_session_user
|
||
assert_response :success
|
||
assert_template :partial => "hosts/_minilist"
|
||
end
|
test/functional/domains_controller_test.rb | ||
---|---|---|
|
||
class DomainsControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Domain.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Domain.any_instance.stubs(:valid?).returns(true)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_redirected_to domains_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Domain.first
|
||
get :edit, {:id => Domain.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
Domain.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Domain.first
|
||
put :update, {:id => Domain.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Domain.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Domain.first
|
||
put :update, {:id => Domain.first}, set_session_user
|
||
assert_redirected_to domains_url
|
||
end
|
||
|
||
def test_destroy
|
||
domain = Domain.first
|
||
delete :destroy, :id => domain
|
||
delete :destroy, {:id => domain}, set_session_user
|
||
assert_redirected_to domains_url
|
||
assert !Domain.exists?(domain.id)
|
||
end
|
test/functional/environments_controller_test.rb | ||
---|---|---|
end
|
||
|
||
test "should get index" do
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_response :success
|
||
assert_not_nil assigns(:records)
|
||
end
|
||
|
||
test "shuold get new" do
|
||
get :new
|
||
test "should get new" do
|
||
get :new, {}, set_session_user
|
||
assert_response :success
|
||
end
|
||
|
||
test "should create new environment" do
|
||
assert_difference 'Environment.count' do
|
||
post :create, { :commit => "Create", :record => {:name => "some_environment"} }
|
||
post :create, { :commit => "Create", :record => {:name => "some_environment"} }, set_session_user
|
||
end
|
||
|
||
assert_redirected_to environments_path
|
||
... | ... | |
environment = Environment.new :name => "some_environment"
|
||
assert environment.save!
|
||
|
||
get :edit, :id => environment.id
|
||
get :edit, {:id => environment.id}, set_session_user
|
||
assert_response :success
|
||
end
|
||
|
||
... | ... | |
environment = Environment.new :name => "some_environment"
|
||
assert environment.save!
|
||
|
||
put :update, { :commit => "Update", :id => environment.id, :record => {:name => "other_environment"} }
|
||
put :update, { :commit => "Update", :id => environment.id, :record => {:name => "other_environment"} }, set_session_user
|
||
environment = Environment.find_by_id(environment.id)
|
||
assert environment.name == "other_environment"
|
||
|
||
... | ... | |
assert environment.save!
|
||
|
||
assert_difference('Environment.count', -1) do
|
||
delete :destroy, :id => environment.id
|
||
delete :destroy, {:id => environment.id}, set_session_user
|
||
end
|
||
|
||
assert_redirected_to environments_path
|
test/functional/fact_values_controller_test.rb | ||
---|---|---|
|
||
class FactValuesControllerTest < ActionController::TestCase
|
||
test "should get list" do
|
||
get :list
|
||
get :list, {}, set_session_user
|
||
assert_response :success
|
||
assert_not_nil :records
|
||
end
|
||
|
||
test "should get list_filter" do
|
||
get :list_filter
|
||
get :list_filter, {}, set_session_user
|
||
assert_response :found
|
||
end
|
||
end
|
test/functional/home_controller_test.rb | ||
---|---|---|
|
||
class HomeControllerTest < ActionController::TestCase
|
||
test "should get settings" do
|
||
get :settings
|
||
get :settings, {}, set_session_user
|
||
assert_response :success
|
||
end
|
||
end
|
test/functional/hostgroups_controller_test.rb | ||
---|---|---|
|
||
class HostgroupsControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Hostgroup.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Hostgroup.any_instance.stubs(:valid?).returns(true)
|
||
pc = Puppetclass.first
|
||
post :create, "hostgroup" => {"name"=>"test_it", "group_parameters_attributes"=>{"1272344174448"=>{"name"=>"x", "value"=>"y", "_destroy"=>""}}, "puppetclass_ids"=>["", pc.id.to_s]}
|
||
post :create, {"hostgroup" => {"name"=>"test_it", "group_parameters_attributes"=>{"1272344174448"=>{"name"=>"x", "value"=>"y", "_destroy"=>""}}, "puppetclass_ids"=>["", pc.id.to_s]}}, set_session_user
|
||
assert_redirected_to hostgroups_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Hostgroup.first
|
||
get :edit, {:id => Hostgroup.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
Hostgroup.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Hostgroup.first
|
||
put :update, {:id => Hostgroup.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Hostgroup.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Hostgroup.first
|
||
put :update, {:id => Hostgroup.first}, set_session_user
|
||
assert_redirected_to hostgroups_url
|
||
end
|
||
|
||
def test_destroy
|
||
hostgroup = Hostgroup.first
|
||
delete :destroy, :id => hostgroup
|
||
delete :destroy, {:id => hostgroup}, set_session_user
|
||
assert_redirected_to hostgroups_url
|
||
assert !Hostgroup.exists?(hostgroup.id)
|
||
end
|
test/functional/hosts_controller_test.rb | ||
---|---|---|
class HostsControllerTest < ActionController::TestCase
|
||
setup :initialize_host
|
||
|
||
def test_index
|
||
get :index
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_show
|
||
get :show, :id => Host.first
|
||
get :show, {:id => Host.first}, set_session_user
|
||
assert_template 'show'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Host.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Host.any_instance.stubs(:valid?).returns(true)
|
||
post :create, :host => {:name => "test"}
|
||
assert_redirected_to host_url(assigns(:host))
|
||
post :create, {:host => {:name => "test"}}, set_session_user
|
||
assert_redirected_to host_url(assigns('host'))
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Host.first
|
||
test "should get index" do
|
||
get :index, {}, set_session_user
|
||
assert_response :success
|
||
assert_template 'index'
|
||
end
|
||
|
||
test "should get new" do
|
||
get :new, {}, set_session_user
|
||
assert_response :success
|
||
assert_template 'new'
|
||
end
|
||
|
||
test "should create new host" do
|
||
assert_difference 'Host.count' do
|
||
post :create, { :commit => "Create",
|
||
:host => {:name => "myotherfullhost",
|
||
:mac => "aabbecddee00",
|
||
:ip => "123.05.02.25",
|
||
:domain => Domain.find_or_create_by_name("othercompany.com"),
|
||
:operatingsystem => Operatingsystem.first,
|
||
:architecture => Architecture.first,
|
||
:environment => Environment.first,
|
||
:disk => "empty partition"
|
||
}
|
||
}, set_session_user
|
||
end
|
||
end
|
||
|
||
test "should get edit" do
|
||
get :edit, {:id => @host.id}, set_session_user
|
||
assert_response :success
|
||
assert_template 'edit'
|
||
end
|
||
|
||
test "should update host" do
|
||
put :update, { :commit => "Update", :id => @host.id, :host => {:disk => "ntfs"} }, set_session_user
|
||
@host = Host.find_by_id(@host.id)
|
||
assert_equal @host.disk, "ntfs"
|
||
end
|
||
|
||
def test_update_invalid
|
||
Host.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Host.first
|
||
put :update, {:id => Host.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Host.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Host.first
|
||
put :update, {:id => Host.first}, set_session_user
|
||
assert_redirected_to host_url(assigns(:host))
|
||
end
|
||
|
||
def test_destroy
|
||
host = Host.first
|
||
delete :destroy, :id => host
|
||
delete :destroy, {:id => host}, set_session_user
|
||
assert_redirected_to hosts_url
|
||
assert !Host.exists?(host.id)
|
||
end
|
||
test "externalNodes should render 404 when no params are given" do
|
||
get :externalNodes
|
||
|
||
test "externalNodes should render 404 when no params are given" do
|
||
get :externalNodes, {}, set_session_user
|
||
assert_response :missing
|
||
assert_template :text => '404 Not Found'
|
||
end
|
||
|
||
test "externalNodes should render correctly when id is given" do
|
||
get :externalNodes, :id => @host.id
|
||
get :externalNodes, {:id => @host.id}, set_session_user
|
||
assert_response :success
|
||
assert_template :text => @host.info.to_yaml.gsub("\n","<br>")
|
||
end
|
||
|
||
test "externalNodes should render correctly when name is given" do
|
||
get :externalNodes, :name => @host.name
|
||
get :externalNodes, {:name => @host.name}, set_session_user
|
||
assert_response :success
|
||
assert_template :text => @host.info.to_yaml.gsub("\n","<br>")
|
||
end
|
||
|
||
test "externalNodes should render yml request correctly" do
|
||
get :externalNodes, :id => @host.id, :format => "yml"
|
||
get :externalNodes, {:id => @host.id, :format => "yml"}, set_session_user
|
||
assert_response :success
|
||
assert_template :text => @host.info.to_yaml
|
||
end
|
||
... | ... | |
mock(Host).find(@host.id.to_s) {@host}
|
||
@request.env['HTTP_REFERER'] = hosts_path
|
||
|
||
get :setBuild, {:id => @host.id}
|
||
get :setBuild, {:id => @host.id}, set_session_user
|
||
assert_response :found
|
||
assert_redirected_to hosts_path
|
||
assert_not_nil flash[:foreman_notice]
|
||
... | ... | |
mock(Host).find(@host.id.to_s) {@host}
|
||
@request.env['HTTP_REFERER'] = hosts_path
|
||
|
||
get :setBuild, :id => @host.id
|
||
get :setBuild, {:id => @host.id}, set_session_user
|
||
assert_response :found
|
||
assert_redirected_to hosts_path
|
||
assert_not_nil flash[:foreman_error]
|
||
... | ... | |
end
|
||
|
||
test "rrdreport should print error message if host has no last_report" do
|
||
get :rrdreport, :id => @host.id
|
||
get :rrdreport, {:id => @host.id}, set_session_user
|
||
assert_response :success
|
||
assert_template :text => "Sorry, no graphs for this host"
|
||
end
|
||
... | ... | |
assert @host.save!
|
||
SETTINGS[:rrd_report_url] = "/some/url"
|
||
|
||
get :rrdreport, :id => @host.id
|
||
get :rrdreport, {:id => @host.id}, set_session_user
|
||
assert_response :success
|
||
assert_template :partial => "_rrdreport"
|
||
end
|
||
|
||
test "report should redirect to host's last report" do
|
||
get :report, :id => @host.id
|
||
get :report, {:id => @host.id}, set_session_user
|
||
assert_response :found
|
||
assert_redirected_to :controller => "reports", :action => "show", :id => @host.id
|
||
end
|
||
|
||
test "query in .yml format should return host.to_yml" do
|
||
get :query, :format => "yml"
|
||
get :query, {:format => "yml"}, set_session_user
|
||
assert_template :text => @host.to_yaml
|
||
end
|
||
|
test/functional/lookup_keys_controller_test.rb | ||
---|---|---|
|
||
class LookupKeysControllerTest < ActionController::TestCase
|
||
test "should get index" do
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_response :success
|
||
assert_not_nil assigns(:lookup_key)
|
||
end
|
||
|
||
test "should get new" do
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_response :success
|
||
end
|
||
|
||
test "should create lookup_keys" do
|
||
assert_difference('LookupKey.count') do
|
||
post :create, :lookup_key=>{"lookup_values_attributes"=>{"0"=>{"priority"=>"1", "value"=>"x", "_destroy"=>""}, "1"=>{"priority"=>"2", "value"=>"y", "_destroy"=>""}}, "key"=>"tests"}
|
||
post :create, {:lookup_key=>{"lookup_values_attributes"=>{"0"=>{"priority"=>"1", "value"=>"x", "_destroy"=>""},
|
||
"1"=>{"priority"=>"2", "value"=>"y", "_destroy"=>""}},
|
||
"key"=>"tests"}
|
||
},
|
||
set_session_user
|
||
end
|
||
|
||
assert_redirected_to lookup_keys_path(assigns(:lookup_keys))
|
||
end
|
||
|
||
test "should get edit" do
|
||
get :edit, :id => lookup_keys(:one).to_param
|
||
get :edit, {:id => lookup_keys(:one).to_param}, set_session_user
|
||
assert_response :success
|
||
end
|
||
|
||
test "should update lookup_keys" do
|
||
put :update, :id => lookup_keys(:one).to_param, :lookup_key => { :key => "test that" }
|
||
put :update, {:id => lookup_keys(:one).to_param, :lookup_key => { :key => "test that" }}, set_session_user
|
||
assert_redirected_to lookup_keys_path(assigns(:lookup_keys))
|
||
end
|
||
|
||
test "should destroy lookup_keys" do
|
||
assert_difference('LookupKey.count', -1) do
|
||
delete :destroy, :id => lookup_keys(:one).to_param
|
||
delete :destroy, {:id => lookup_keys(:one).to_param}, set_session_user
|
||
end
|
||
|
||
assert_redirected_to lookup_keys_path
|
test/functional/medias_controller_test.rb | ||
---|---|---|
|
||
class MediasControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Media.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Media.any_instance.stubs(:valid?).returns(true)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_redirected_to medias_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Media.first
|
||
get :edit, {:id => Media.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
Media.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Media.first
|
||
put :update, {:id => Media.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Media.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Media.first
|
||
put :update, {:id => Media.first}, set_session_user
|
||
assert_redirected_to medias_url
|
||
end
|
||
|
||
def test_destroy
|
||
media = Media.first
|
||
delete :destroy, :id => media
|
||
delete :destroy, {:id => media}, set_session_user
|
||
assert_redirected_to medias_url
|
||
assert !Media.exists?(media.id)
|
||
end
|
test/functional/models_controller_test.rb | ||
---|---|---|
|
||
class ModelsControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Model.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Model.any_instance.stubs(:valid?).returns(true)
|
||
post :create, :model => {:name => "test"}
|
||
post :create, {:model => {:name => "test"}}, set_session_user
|
||
assert_redirected_to models_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Model.first
|
||
get :edit, {:id => Model.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
Model.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Model.first
|
||
put :update, {:id => Model.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Model.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Model.first
|
||
put :update, {:id => Model.first}, set_session_user
|
||
assert_redirected_to models_url
|
||
end
|
||
|
||
def test_destroy
|
||
model = Model.first
|
||
delete :destroy, :id => model
|
||
delete :destroy, {:id => model}, set_session_user
|
||
assert_redirected_to models_url
|
||
assert !Model.exists?(model.id)
|
||
end
|
test/functional/operatingsystems_controller_test.rb | ||
---|---|---|
|
||
class OperatingsystemsControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Operatingsystem.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Operatingsystem.any_instance.stubs(:valid?).returns(true)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_redirected_to operatingsystems_url
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Operatingsystem.first
|
||
get :edit, {:id => Operatingsystem.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
def test_update_invalid
|
||
Operatingsystem.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Operatingsystem.first
|
||
put :update, {:id => Operatingsystem.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Operatingsystem.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Operatingsystem.first
|
||
put :update, {:id => Operatingsystem.first}, set_session_user
|
||
assert_redirected_to operatingsystems_url
|
||
end
|
||
|
||
def test_destroy
|
||
operatingsystem = Operatingsystem.first
|
||
delete :destroy, :id => operatingsystem
|
||
delete :destroy, {:id => operatingsystem}, set_session_user
|
||
assert_redirected_to operatingsystems_url
|
||
assert !Operatingsystem.exists?(operatingsystem.id)
|
||
end
|
test/functional/ptables_controller_test.rb | ||
---|---|---|
|
||
class PtablesControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_show
|
||
get :show, :id => Ptable.first
|
||
get :show, {:id => Ptable.first}, set_session_user
|
||
assert_template 'show'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_invalid
|
||
Ptable.any_instance.stubs(:valid?).returns(false)
|
||
post :create
|
||
post :create, {}, set_session_user
|
||
assert_template 'new'
|
||
end
|
||
|
||
def test_create_valid
|
||
Ptable.any_instance.stubs(:valid?).returns(true)
|
||
post :create, :ptable => {:name => "dummy", :layout => "dummy"}
|
||
post :create, {:ptable => {:name => "dummy", :layout => "dummy"}}, set_session_user
|
||
assert_redirected_to ptable_url(assigns(:ptable))
|
||
end
|
||
|
||
def test_edit
|
||
get :edit, :id => Ptable.first
|
||
get :edit, {:id => Ptable.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_invalid
|
||
Ptable.any_instance.stubs(:valid?).returns(false)
|
||
put :update, :id => Ptable.first
|
||
put :update, {:id => Ptable.first}, set_session_user
|
||
assert_template 'edit'
|
||
end
|
||
|
||
def test_update_valid
|
||
Ptable.any_instance.stubs(:valid?).returns(true)
|
||
put :update, :id => Ptable.first
|
||
put :update, {:id => Ptable.first}, set_session_user
|
||
assert_redirected_to ptable_url(assigns(:ptable))
|
||
end
|
||
|
||
def test_destroy
|
||
ptable = Ptable.first
|
||
delete :destroy, :id => ptable
|
||
delete :destroy, {:id => ptable}, set_session_user
|
||
assert_redirected_to ptables_url
|
||
assert !Ptable.exists?(ptable.id)
|
||
end
|
test/functional/puppetclasses_controller_test.rb | ||
---|---|---|
|
||
class PuppetclassesControllerTest < ActionController::TestCase
|
||
def test_index
|
||
get :index
|
||
get :index, {}, set_session_user
|
||
assert_template 'index'
|
||
end
|
||
|
||
def test_new
|
||
get :new
|
||
get :new, {}, set_session_user
|
Also available in: Unified diff
Fixes #170 - implement usergroups
Added migration
Added tests
Added MVC files
Added the routes as well
Added the program logic and additional views
Added RESTful actions for update and create
Added validations to ensure that usergroup.name and user.login do not collide
Added "recipients" method to users and usergroups. This returns a list of addresses.
Usergroup#recipients will follow all nested usergroups avoiding any loops and
return only unique addresses
Fixes #73 - Add usergroup support to hosts
Fixes #244 - Remove ActiveScaffold from the usergroup pages
and finally - added owners to host edit page and other whitespaces and
mods by ohad