##// END OF EJS Templates
Initial commit for svn repository management and access control:...
Jean-Philippe Lang -
r393:4ff8386e3dfe
parent child
Show More
@@ -0,0 +1,25
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 class SysApi < ActionWebService::API::Base
19 api_method :projects,
20 :expects => [],
21 :returns => [[Project]]
22 api_method :repository_created,
23 :expects => [:int, :string],
24 :returns => [:int]
25 end
@@ -0,0 +1,44
1 # redMine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
18 class SysController < ActionController::Base
19 wsdl_service_name 'Sys'
20 web_service_api SysApi
21 web_service_scaffold :invoke
22
23 before_invocation :check_enabled
24
25 def projects
26 Project.find(:all, :include => :repository)
27 end
28
29 def repository_created(project_id, url)
30 project = Project.find_by_id(project_id)
31 return 0 unless project && project.repository.nil?
32 logger.debug "Repository for #{project.name} created"
33 repository = Repository.new(:project => project, :url => url)
34 repository.root_url = url
35 repository.save
36 repository.id
37 end
38
39 protected
40
41 def check_enabled(name, args)
42 Setting.sys_api_enabled?
43 end
44 end
@@ -0,0 +1,24
1 /* ssh views */
2
3 CREATE OR REPLACE VIEW ssh_users as
4 select login as username, hashed_password as password
5 from users
6 where status = 1;
7
8
9 /* nss views */
10
11 CREATE OR REPLACE VIEW nss_groups AS
12 select identifier AS name, (id + 5000) AS gid, 'x' AS password
13 from projects;
14
15 CREATE OR REPLACE VIEW nss_users AS
16 select login AS username, CONCAT_WS(' ', firstname, lastname) as realname, (id + 5000) AS uid, 'x' AS password
17 from users
18 where status = 1;
19
20 CREATE OR REPLACE VIEW nss_grouplist AS
21 select (members.project_id + 5000) AS gid, users.login AS username
22 from users, members
23 where users.id = members.user_id
24 and users.status = 1;
@@ -0,0 +1,75
1 #!/usr/bin/perl
2 #
3 # redMine is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16
17 use strict;
18 use SOAP::Lite;
19
20 my $wdsl = 'http://192.168.0.10:3000/sys/service.wsdl';
21 my $service = SOAP::Lite->service($wdsl);
22 my $repos_base = '/var/svn';
23
24 my $projects = $service->Projects('');
25
26 foreach my $project (@{$projects}) {
27 my $repos_name = $project->{identifier};
28
29 if ($repos_name eq "") {
30 print("\tno identifier for project $project->{name}\n");
31 next;
32 }
33
34 unless ($repos_name =~ /^[a-z0-9\-]+$/) {
35 print("\tinvalid identifier for project $project->{name}\n");
36 next;
37 }
38
39 my $repos_path = "$repos_base/$repos_name";
40
41 if (-e $repos_path) {
42 # check unix right and change them if needed
43 my $other_read = (stat($repos_path))[2] & 00007;
44 my $right;
45
46 if ($project->{is_public} and not $other_read) {
47 $right = "0775";
48 } elsif (not $project->{is_public} and $other_read) {
49 $right = "0770";
50 } else {
51 next;
52 }
53
54 # change mode
55 system('chmod', '-R', $right, $repos_path) == 0 or
56 warn("\tunable to change mode on $repos_path : $?\n"), next;
57
58 print "\tmode change on $repos_path\n";
59
60 } else {
61 # change umask to suit the repository's privacy
62 $project->{is_public} ? umask 0002 : umask 0007;
63
64 # create the repository
65 system('svnadmin', 'create', $repos_path) == 0 or
66 warn("\tsystem svnadmin failed unable to create $repos_path\n"), next;
67
68 # set the group owner
69 system('chown', '-R', "root:$repos_name", $repos_path) == 0 or
70 warn("\tunable to create $repos_path : $?\n"), next;
71
72 print "\trepository $repos_path created\n";
73 my $call = $service->RepositoryCreated($project->{id}, "svn://host/$repos_name");
74 }
75 }
@@ -0,0 +1,25
1 #!/usr/bin/perl
2 #
3 # redMine is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16
17 # modify to suit your repository base
18 my $repos_base = '/var/svn';
19
20 my $path = '/usr/bin/';
21 my %kwown_commands = map { $_ => 1 } qw/svnserve/;
22
23 umask 0002;
24
25 exec ('/usr/bin/svnserve', '-r', $repos_base, '-t');
@@ -30,13 +30,23 class Project < ActiveRecord::Base
30 has_one :wiki, :dependent => :destroy
30 has_one :wiki, :dependent => :destroy
31 has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id'
31 has_and_belongs_to_many :custom_fields, :class_name => 'IssueCustomField', :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id'
32 acts_as_tree :order => "name", :counter_cache => true
32 acts_as_tree :order => "name", :counter_cache => true
33
33
34 validates_presence_of :name, :description
34 validates_presence_of :name, :description, :identifier
35 validates_uniqueness_of :name
35 validates_uniqueness_of :name, :identifier
36 validates_associated :custom_values, :on => :update
36 validates_associated :custom_values, :on => :update
37 validates_associated :repository, :wiki
37 validates_associated :repository, :wiki
38 validates_format_of :name, :with => /^[\w\s\'\-]*$/i
38 validates_format_of :name, :with => /^[\w\s\'\-]*$/i
39
39 validates_length_of :identifier, :maximum => 12
40 validates_format_of :identifier, :with => /^[a-z0-9\-]*$/
41
42 def identifier=(identifier)
43 super unless identifier_frozen?
44 end
45
46 def identifier_frozen?
47 errors[:identifier].nil? && !(new_record? || identifier.blank?)
48 end
49
40 # returns latest created projects
50 # returns latest created projects
41 # non public projects will be returned only if user is a member of those
51 # non public projects will be returned only if user is a member of those
42 def self.latest(user=nil, count=5)
52 def self.latest(user=nil, count=5)
@@ -9,6 +9,7
9 <% end %>
9 <% end %>
10
10
11 <p><%= f.text_area :description, :required => true, :cols => 60, :rows => 3 %></p>
11 <p><%= f.text_area :description, :required => true, :cols => 60, :rows => 3 %></p>
12 <p><%= f.text_field :identifier, :required => true, :size => 15, :disabled => @project.identifier_frozen? %><br /><em><%= l(:text_project_identifier_info) unless @project.identifier_frozen? %></em></p>
12 <p><%= f.text_field :homepage, :size => 40 %></p>
13 <p><%= f.text_field :homepage, :size => 40 %></p>
13 <p><%= f.check_box :is_public %></p>
14 <p><%= f.check_box :is_public %></p>
14
15
@@ -48,6 +48,9
48 <p><label><%= l(:setting_autofetch_changesets) %></label>
48 <p><label><%= l(:setting_autofetch_changesets) %></label>
49 <%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %><%= hidden_field_tag 'settings[autofetch_changesets]', 0 %></p>
49 <%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %><%= hidden_field_tag 'settings[autofetch_changesets]', 0 %></p>
50
50
51 <p><label><%= l(:setting_sys_api_enabled) %></label>
52 <%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
53
51 </div>
54 </div>
52 <%= submit_tag l(:button_save) %>
55 <%= submit_tag l(:button_save) %>
53 </div>
56 </div>
@@ -52,3 +52,5 feeds_limit:
52 default: 15
52 default: 15
53 autofetch_changesets:
53 autofetch_changesets:
54 default: 1
54 default: 1
55 sys_api_enabled:
56 default: 0
@@ -146,6 +146,7 field_subproject: Subprojekt von
146 field_hours: Stunden
146 field_hours: Stunden
147 field_activity: Aktivität
147 field_activity: Aktivität
148 field_spent_on: Datum
148 field_spent_on: Datum
149 field_identifier: Identifier
149
150
150 setting_app_title: Applikation Titel
151 setting_app_title: Applikation Titel
151 setting_app_subtitle: Applikation Untertitel
152 setting_app_subtitle: Applikation Untertitel
@@ -161,6 +162,7 setting_text_formatting: Textformatierung
161 setting_wiki_compression: Wiki-Historie komprimieren
162 setting_wiki_compression: Wiki-Historie komprimieren
162 setting_feeds_limit: Limit Feed Inhalt
163 setting_feeds_limit: Limit Feed Inhalt
163 setting_autofetch_changesets: Autofetch SVN commits
164 setting_autofetch_changesets: Autofetch SVN commits
165 setting_sys_api_enabled: Enable WS for repository management
164
166
165 label_user: Benutzer
167 label_user: Benutzer
166 label_user_plural: Benutzer
168 label_user_plural: Benutzer
@@ -394,6 +396,7 text_journal_deleted: gelöscht
394 text_tip_task_begin_day: Aufgabe, die an diesem Tag beginnt
396 text_tip_task_begin_day: Aufgabe, die an diesem Tag beginnt
395 text_tip_task_end_day: Aufgabe, die an diesem Tag beendet
397 text_tip_task_end_day: Aufgabe, die an diesem Tag beendet
396 text_tip_task_begin_end_day: Aufgabe, die an diesem Tag beginnt und beendet
398 text_tip_task_begin_end_day: Aufgabe, die an diesem Tag beginnt und beendet
399 text_project_identifier_info: '12 characters maximum. Letters (a-z), numbers (0-9) and dashes allowed.<br />Once saved, the identifier can not be changed.'
397
400
398 default_role_manager: Manager
401 default_role_manager: Manager
399 default_role_developper: Developer
402 default_role_developper: Developer
@@ -146,6 +146,7 field_subproject: Subproject
146 field_hours: Hours
146 field_hours: Hours
147 field_activity: Activity
147 field_activity: Activity
148 field_spent_on: Date
148 field_spent_on: Date
149 field_identifier: Identifier
149
150
150 setting_app_title: Application title
151 setting_app_title: Application title
151 setting_app_subtitle: Application subtitle
152 setting_app_subtitle: Application subtitle
@@ -161,6 +162,7 setting_text_formatting: Text formatting
161 setting_wiki_compression: Wiki history compression
162 setting_wiki_compression: Wiki history compression
162 setting_feeds_limit: Feed content limit
163 setting_feeds_limit: Feed content limit
163 setting_autofetch_changesets: Autofetch SVN commits
164 setting_autofetch_changesets: Autofetch SVN commits
165 setting_sys_api_enabled: Enable WS for repository management
164
166
165 label_user: User
167 label_user: User
166 label_user_plural: Users
168 label_user_plural: Users
@@ -394,6 +396,7 text_journal_deleted: deleted
394 text_tip_task_begin_day: task beginning this day
396 text_tip_task_begin_day: task beginning this day
395 text_tip_task_end_day: task ending this day
397 text_tip_task_end_day: task ending this day
396 text_tip_task_begin_end_day: task beginning and ending this day
398 text_tip_task_begin_end_day: task beginning and ending this day
399 text_project_identifier_info: '12 characters maximum. Letters (a-z), numbers (0-9) and dashes allowed.<br />Once saved, the identifier can not be changed.'
397
400
398 default_role_manager: Manager
401 default_role_manager: Manager
399 default_role_developper: Developer
402 default_role_developper: Developer
@@ -146,6 +146,7 field_subproject: Proyecto secundario
146 field_hours: Hours
146 field_hours: Hours
147 field_activity: Activity
147 field_activity: Activity
148 field_spent_on: Fecha
148 field_spent_on: Fecha
149 field_identifier: Identifier
149
150
150 setting_app_title: Título del aplicación
151 setting_app_title: Título del aplicación
151 setting_app_subtitle: Subtítulo del aplicación
152 setting_app_subtitle: Subtítulo del aplicación
@@ -161,6 +162,7 setting_text_formatting: Formato de texto
161 setting_wiki_compression: Compresión de la historia de Wiki
162 setting_wiki_compression: Compresión de la historia de Wiki
162 setting_feeds_limit: Feed content limit
163 setting_feeds_limit: Feed content limit
163 setting_autofetch_changesets: Autofetch SVN commits
164 setting_autofetch_changesets: Autofetch SVN commits
165 setting_sys_api_enabled: Enable WS for repository management
164
166
165 label_user: Usuario
167 label_user: Usuario
166 label_user_plural: Usuarios
168 label_user_plural: Usuarios
@@ -394,6 +396,7 text_journal_deleted: suprimido
394 text_tip_task_begin_day: tarea que comienza este día
396 text_tip_task_begin_day: tarea que comienza este día
395 text_tip_task_end_day: tarea que termina este día
397 text_tip_task_end_day: tarea que termina este día
396 text_tip_task_begin_end_day: tarea que comienza y termina este día
398 text_tip_task_begin_end_day: tarea que comienza y termina este día
399 text_project_identifier_info: '12 characters maximum. Letters (a-z), numbers (0-9) and dashes allowed.<br />Once saved, the identifier can not be changed.'
397
400
398 default_role_manager: Manager
401 default_role_manager: Manager
399 default_role_developper: Desarrollador
402 default_role_developper: Desarrollador
@@ -146,6 +146,7 field_subproject: Sous-projet
146 field_hours: Heures
146 field_hours: Heures
147 field_activity: Activité
147 field_activity: Activité
148 field_spent_on: Date
148 field_spent_on: Date
149 field_identifier: Identifiant
149
150
150 setting_app_title: Titre de l'application
151 setting_app_title: Titre de l'application
151 setting_app_subtitle: Sous-titre de l'application
152 setting_app_subtitle: Sous-titre de l'application
@@ -161,6 +162,7 setting_text_formatting: Formatage du texte
161 setting_wiki_compression: Compression historique wiki
162 setting_wiki_compression: Compression historique wiki
162 setting_feeds_limit: Limite du contenu des flux RSS
163 setting_feeds_limit: Limite du contenu des flux RSS
163 setting_autofetch_changesets: Récupération auto. des commits SVN
164 setting_autofetch_changesets: Récupération auto. des commits SVN
165 setting_sys_api_enabled: Activer les WS pour la gestion des dépôts
164
166
165 label_user: Utilisateur
167 label_user: Utilisateur
166 label_user_plural: Utilisateurs
168 label_user_plural: Utilisateurs
@@ -394,6 +396,7 text_journal_deleted: supprimé
394 text_tip_task_begin_day: tâche commençant ce jour
396 text_tip_task_begin_day: tâche commençant ce jour
395 text_tip_task_end_day: tâche finissant ce jour
397 text_tip_task_end_day: tâche finissant ce jour
396 text_tip_task_begin_end_day: tâche commençant et finissant ce jour
398 text_tip_task_begin_end_day: tâche commençant et finissant ce jour
399 text_project_identifier_info: '12 caractères maximum. Lettres (a-z), chiffres (0-9) et tirets autorisés.<br />Un fois sauvegardé, l''identifiant ne pourra plus être modifié.'
397
400
398 default_role_manager: Manager
401 default_role_manager: Manager
399 default_role_developper: Développeur
402 default_role_developper: Développeur
@@ -146,6 +146,7 field_subproject: Sottoprogetto
146 field_hours: Hours
146 field_hours: Hours
147 field_activity: Activity
147 field_activity: Activity
148 field_spent_on: Data
148 field_spent_on: Data
149 field_identifier: Identifier
149
150
150 setting_app_title: Titolo applicazione
151 setting_app_title: Titolo applicazione
151 setting_app_subtitle: Sottotitolo applicazione
152 setting_app_subtitle: Sottotitolo applicazione
@@ -161,6 +162,7 setting_text_formatting: Formattazione testo
161 setting_wiki_compression: Compressione di storia di Wiki
162 setting_wiki_compression: Compressione di storia di Wiki
162 setting_feeds_limit: Feed content limit
163 setting_feeds_limit: Feed content limit
163 setting_autofetch_changesets: Autofetch SVN commits
164 setting_autofetch_changesets: Autofetch SVN commits
165 setting_sys_api_enabled: Enable WS for repository management
164
166
165 label_user: Utente
167 label_user: Utente
166 label_user_plural: Utenti
168 label_user_plural: Utenti
@@ -394,6 +396,7 text_journal_deleted: deleted
394 text_tip_task_begin_day: task beginning this day
396 text_tip_task_begin_day: task beginning this day
395 text_tip_task_end_day: task ending this day
397 text_tip_task_end_day: task ending this day
396 text_tip_task_begin_end_day: task beginning and ending this day
398 text_tip_task_begin_end_day: task beginning and ending this day
399 text_project_identifier_info: '12 characters maximum. Letters (a-z), numbers (0-9) and dashes allowed.<br />Once saved, the identifier can not be changed.'
397
400
398 default_role_manager: Manager
401 default_role_manager: Manager
399 default_role_developper: Sviluppatore
402 default_role_developper: Sviluppatore
@@ -147,6 +147,7 field_subproject: サブプロジェクト
147 field_hours: 時間
147 field_hours: 時間
148 field_activity: 活動
148 field_activity: 活動
149 field_spent_on: 日付
149 field_spent_on: 日付
150 field_identifier: Identifier
150
151
151 setting_app_title: アプリケーションのタイトル
152 setting_app_title: アプリケーションのタイトル
152 setting_app_subtitle: アプリケーションのサブタイトル
153 setting_app_subtitle: アプリケーションのサブタイトル
@@ -162,6 +163,7 setting_text_formatting: テキストの書式
162 setting_wiki_compression: Wiki履歴を圧縮する
163 setting_wiki_compression: Wiki履歴を圧縮する
163 setting_feeds_limit: フィード内容の上限
164 setting_feeds_limit: フィード内容の上限
164 setting_autofetch_changesets: SVNコミットを自動取得する
165 setting_autofetch_changesets: SVNコミットを自動取得する
166 setting_sys_api_enabled: Enable WS for repository management
165
167
166 label_user: ユーザ
168 label_user: ユーザ
167 label_user_plural: ユーザ
169 label_user_plural: ユーザ
@@ -395,6 +397,7 text_journal_deleted: 削除
395 text_tip_task_begin_day: この日に開始するタスク
397 text_tip_task_begin_day: この日に開始するタスク
396 text_tip_task_end_day: この日に終了するタスク
398 text_tip_task_end_day: この日に終了するタスク
397 text_tip_task_begin_end_day: この日のうちに開始して終了するタスク
399 text_tip_task_begin_end_day: この日のうちに開始して終了するタスク
400 text_project_identifier_info: '12 characters maximum. Letters (a-z), numbers (0-9) and dashes allowed.<br />Once saved, the identifier can not be changed.'
398
401
399 default_role_manager: 管理者
402 default_role_manager: 管理者
400 default_role_developper: 開発者
403 default_role_developper: 開発者
@@ -149,6 +149,7 field_subproject: 子项目
149 field_hours: Hours
149 field_hours: Hours
150 field_activity: 活动
150 field_activity: 活动
151 field_spent_on: 日期
151 field_spent_on: 日期
152 field_identifier: Identifier
152
153
153 setting_app_title: 应用程序标题
154 setting_app_title: 应用程序标题
154 setting_app_subtitle: 应用程序子标题
155 setting_app_subtitle: 应用程序子标题
@@ -164,6 +165,7 setting_text_formatting: 文本格式
164 setting_wiki_compression: Wiki history compression
165 setting_wiki_compression: Wiki history compression
165 setting_feeds_limit: Feed content limit
166 setting_feeds_limit: Feed content limit
166 setting_autofetch_changesets: Autofetch SVN commits
167 setting_autofetch_changesets: Autofetch SVN commits
168 setting_sys_api_enabled: Enable WS for repository management
167
169
168 label_user: 用户
170 label_user: 用户
169 label_user_plural: 用户列表
171 label_user_plural: 用户列表
@@ -397,6 +399,7 text_journal_deleted: 已删除
397 text_tip_task_begin_day: 开始于此
399 text_tip_task_begin_day: 开始于此
398 text_tip_task_end_day: 在此结束
400 text_tip_task_end_day: 在此结束
399 text_tip_task_begin_end_day: 开始并结束于此
401 text_tip_task_begin_end_day: 开始并结束于此
402 text_project_identifier_info: '12 characters maximum. Letters (a-z), numbers (0-9) and dashes allowed.<br />Once saved, the identifier can not be changed.'
400
403
401 default_role_manager: 管理员
404 default_role_manager: 管理员
402 default_role_developper: 开发人员
405 default_role_developper: 开发人员
@@ -8,6 +8,7 projects_001:
8 description: Recipes management application
8 description: Recipes management application
9 homepage: http://ecookbook.somenet.foo/
9 homepage: http://ecookbook.somenet.foo/
10 is_public: true
10 is_public: true
11 identifier: ecookbook
11 parent_id:
12 parent_id:
12 projects_002:
13 projects_002:
13 created_on: 2006-07-19 19:14:19 +02:00
14 created_on: 2006-07-19 19:14:19 +02:00
@@ -18,6 +19,7 projects_002:
18 description: E-commerce web site
19 description: E-commerce web site
19 homepage: ""
20 homepage: ""
20 is_public: false
21 is_public: false
22 identifier: onlinestore
21 parent_id:
23 parent_id:
22 projects_003:
24 projects_003:
23 created_on: 2006-07-19 19:15:21 +02:00
25 created_on: 2006-07-19 19:15:21 +02:00
@@ -28,6 +30,7 projects_003:
28 description: eCookBook Subproject 1
30 description: eCookBook Subproject 1
29 homepage: ""
31 homepage: ""
30 is_public: true
32 is_public: true
33 identifier: subproject1
31 parent_id: 1
34 parent_id: 1
32 projects_004:
35 projects_004:
33 created_on: 2006-07-19 19:15:51 +02:00
36 created_on: 2006-07-19 19:15:51 +02:00
@@ -38,4 +41,5 projects_004:
38 description: eCookbook Subproject 2
41 description: eCookbook Subproject 2
39 homepage: ""
42 homepage: ""
40 is_public: true
43 is_public: true
44 identifier: subproject1
41 parent_id: 1
45 parent_id: 1
@@ -45,7 +45,7 class AdminTest < ActionController::IntegrationTest
45 get "projects/add"
45 get "projects/add"
46 assert_response :success
46 assert_response :success
47 assert_template "projects/add"
47 assert_template "projects/add"
48 post "projects/add", :project => { :name => "blog", :description => "weblog", :is_public => 1}
48 post "projects/add", :project => { :name => "blog", :description => "weblog", :identifier => "blog", :is_public => 1}
49 assert_redirected_to "admin/projects"
49 assert_redirected_to "admin/projects"
50 assert_equal 'Successful creation.', flash[:notice]
50 assert_equal 'Successful creation.', flash[:notice]
51
51
General Comments 0
You need to be logged in to leave comments. Login now