diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 36e57de5a..f546a2ac3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -53,6 +53,7 @@ class UsersController < ApplicationController include CustomFieldsHelper include AvatarHelper include WordsHelper + include GitlabHelper # added by liuping 关注 @@ -362,6 +363,10 @@ class UsersController < ApplicationController end def show + # 测试代码 + #login_gitlab("admin@local.host","19840410") + # 测试结束 + pre_count = 10 #limit case params[:type] when "1" diff --git a/app/helpers/gitlab_helper.rb b/app/helpers/gitlab_helper.rb new file mode 100644 index 000000000..486190c88 --- /dev/null +++ b/app/helpers/gitlab_helper.rb @@ -0,0 +1,115 @@ +# Gitlab5.3 API操作接口 +# Add by nwb + +module GitlabHelper + + # gitlab版本库数据本地保存的根目录 + ROOT_PATH="/home/git/repositories/" + PROJECT_PATH_CUT = 40 + # gitlab版本库所在服务器 + #REPO_IP_ADDRESS = Setting.repository_domain + REPO_IP_ADDRESS = "http://192.168.137.100" + GITLAB_API = "/api/v3" + + def self.gitlab_token=(token) + Thread.current[:gitlab_token] = token + end + + # gitlab的登录验证信息 + # add by nwb + def self.gitlab_token + Thread.current[:gitlab_token] ||= nil + end + + # 登录gitlab + # add by nwb + def login_gitlab(email,password) + url = REPO_IP_ADDRESS + GITLAB_API + "/session" + uri = URI.parse(url) + data = {email:email, password:password} + begin + res = Net::HTTP.post_form(uri, data) + if res.code == '201' + temp = ActiveSupport::JSON.decode(res.body) + gitlab_token= temp['private_token'] + return true + else + return false + end + rescue =>err + return false + end + end + + # 创建项目 + # add by nwb + def create_project(name) + + end + + # 为指定用户创建版本库 + # name:版本库名称 user:版本库创建后所属的用户 + def create_project_for_user(name,user) + + end + + # 创建用户 + # loginname:登录名称 username:用户姓名 + def create_user (loginname,username,password,email) + + end + + # 删除用户 + def delete_user(user_id) + + end + + # 给用户添加一个可操作的项目 + def add_project_to_user(project_name,user) + end + + def post(url, params) + uri = URI.parse(url) + http = Net::HTTP.new(uri.host, uri.port) + if uri.scheme == 'https' + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + http.use_ssl = true + end + begin + request = Net::HTTP::Post.new(uri.request_uri) + request['Content-Type'] = 'application/json;charset=utf-8' + request['User-Agent'] = 'Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0' + request['X-ACL-TOKEN'] = 'xxx_token' + #request.set_form_data(params) + request.body = params.to_json + response = http.start { |http| http.request(request) } + puts response.body.inspect + return JSON.parse response.body + rescue =>err + return nil + end + end + + + def get(url, params) + uri = URI.parse(url) + uri.query = URI.encode_www_form(params) + http = Net::HTTP.new uri.host, uri.port + if uri.scheme == 'https' + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + http.use_ssl = true + end + begin + request = Net::HTTP::Get.new uri.request_uri + request['Content-Type'] = 'application/json;charset=utf-8' + request['User-Agent'] = 'Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0' + request['X-ACL-TOKEN'] = 'xxx_token' + response = http.start { |http| http.request request } + puts response.body.inspect + return JSON.parse response.body + rescue =>err + return nil + end + end + +end \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index ac5ca0644..3d1499022 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20140716021558) do +ActiveRecord::Schema.define(:version => 20140715015540) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -415,7 +415,6 @@ ActiveRecord::Schema.define(:version => 20140716021558) do t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "page_type" - t.integer "sort_type" end create_table "forums", :force => true do |t| diff --git a/test/fixtures/courses.yml b/test/fixtures/courses.yml index 69665d935..c3b7c22a3 100644 --- a/test/fixtures/courses.yml +++ b/test/fixtures/courses.yml @@ -1,69 +1,126 @@ --- -courses_006: - id: 6 - tea_id: 193 - name: - state: 0 +courses_008: + id: 8 + tea_id: 5 + name: 分布式计算环境 + state: code: time: 2013 - extra: course2013-09-30_08-11-15 - created_at: 2013-09-30 08:11:15.000000000 +08:00 - updated_at: 2013-10-11 12:34:29.000000000 +08:00 + extra: course2013-09-30_23-36-00 + created_at: 2013-09-30 15:36:00.000000000 Z + updated_at: 2014-04-19 01:50:41.000000000 Z location: - term: "秋季学期" + term: 春季学期 string: - password: software + password: '1234' setup_time: - endup_time: - class_period: -courses_004: - id: 4 - tea_id: 193 - name: - state: 0 + endup_time: '2014-04-18 00:00:00' + class_period: '' + school_id: 117 + description: 介绍分布计算模型,分布计算平台,分布式软件开发环境等分布计算方向的概念、技术和环境,并通过实验提高学生的实践能力。 + status: 1 + attachmenttype: 2 + lft: + rgt: + is_public: 1 + inherit_members: 1 +courses_058: + id: 58 + tea_id: 1168 + name: 软件工程实践 + state: code: - time: 2013 - extra: course2013-09-27_11-16-11 - created_at: 2013-09-27 11:16:11.000000000 +08:00 - updated_at: 2013-12-21 10:55:20.000000000 +08:00 + time: 2014 + extra: course2014-04-17_17-12-17 + created_at: 2014-04-17 09:12:17.000000000 Z + updated_at: 2014-04-17 09:12:17.000000000 Z location: - term: "秋季学期" + term: 春季学期 string: - password: '123456' - setup_time: '' - endup_time: '' - class_period: '' -courses_012: - id: 12 + password: SEP2014 + setup_time: + endup_time: + class_period: '18' + school_id: 0 + description: 国防科技大学计算机学院工程硕士专业选修课。 + status: 1 + attachmenttype: 2 + lft: + rgt: + is_public: 1 + inherit_members: 1 +courses_059: + id: 59 tea_id: 193 - name: + name: 软件项目管理 state: code: - time: 2013 - extra: course2013-10-08_20-52-10 - created_at: 2013-10-08 20:52:10.000000000 +08:00 - updated_at: 2013-10-08 20:52:10.000000000 +08:00 + time: 2014 + extra: course2014-04-18_18-10-46 + created_at: 2014-04-18 10:10:46.000000000 Z + updated_at: 2014-04-18 10:10:46.000000000 Z location: - term: "秋季学期" + term: 春季学期 string: password: software setup_time: endup_time: - class_period: -courses_020: - id: 20 - tea_id: 193 - name: + class_period: '30' + school_id: 0 + description: 面向“软件工程”专业的本科生 + status: 1 + attachmenttype: 2 + lft: + rgt: + is_public: 1 + inherit_members: 1 +courses_060: + id: 60 + tea_id: 1179 + name: android开发 state: code: - time: 2013 - extra: course2013-10-21_20-47-58 - created_at: 2013-10-21 20:47:58.000000000 +08:00 - updated_at: 2014-01-08 09:48:56.000000000 +08:00 + time: 2014 + extra: course2014-04-19_15-40-39 + created_at: 2014-04-19 07:40:39.000000000 Z + updated_at: 2014-04-19 07:40:39.000000000 Z location: - term: '秋季学期' + term: 春季学期 string: - password: multi-agent - setup_time: '' - endup_time: '' - class_period: '' + password: trustie740208 + setup_time: + endup_time: + class_period: '48' + school_id: 37 + description: '' + status: 1 + attachmenttype: 2 + lft: + rgt: + is_public: 1 + inherit_members: 1 +courses_061: + id: 61 + tea_id: 29 + name: 测试课程1 + state: + code: + time: 2014 + extra: course2014-06-04_14-51-56 + created_at: 2014-06-04 06:51:56.000000000 Z + updated_at: 2014-07-15 01:40:49.000000000 Z + location: + term: 春季学期 + string: + password: '1234' + setup_time: + endup_time: '2014-07-14 00:00:00' + class_period: '23' + school_id: 1579 + description: '233' + status: 1 + attachmenttype: 2 + lft: + rgt: + is_public: 0 + inherit_members: 1 diff --git a/test/fixtures/user_extensions.yml b/test/fixtures/user_extensions.yml index c8f2ebf58..8c19ad7b1 100644 --- a/test/fixtures/user_extensions.yml +++ b/test/fixtures/user_extensions.yml @@ -1,5 +1,3 @@ -# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html - person_one_extra: id: 44 user_id: 29 @@ -36,4 +34,43 @@ person_mao_extra: student_id: nil teacher_realname: nil student_realname: nil - location_city: nil \ No newline at end of file + location_city: nil +ue_lirongzhen: + id: 587 + user_id: 642 + birthday: + brief_introduction: + gender: 0 + location: 河南 + occupation: kylinos-cloud + work_experience: + zip_code: + created_at: 2014-03-18 14:52:55.000000000 Z + updated_at: 2014-03-26 07:19:04.000000000 Z + technical_title: + identity: 1 + student_id: '14066023' + teacher_realname: + student_realname: + location_city: 周口 + school_id: +ue_yingang: + id: 6 + user_id: 5 + birthday: + brief_introduction: 现有功能的精细化! + gender: 0 + location: 湖南 + occupation: 国防科学技术大学计算机学院 + work_experience: + zip_code: + created_at: 2013-09-24 09:36:12.000000000 Z + updated_at: 2014-04-19 08:16:55.000000000 Z + technical_title: 副教授 + identity: 0 + student_id: '' + teacher_realname: + student_realname: + location_city: 长沙 + school_id: 117 + diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index 587199f62..cf7f6da7c 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -72,7 +72,7 @@ users_003: login: dlopper type: User users_005: - id: 5 + id: 12 created_on: 2006-07-19 19:33:19 +02:00 # Locked status: 3 @@ -165,5 +165,39 @@ groups_011: id: 11 lastname: B Team type: Group - - +users_yingang_teacher: + id: 5 + login: jacknudt + hashed_password: dbbd96684c9a64afe9c4935ce0b517e5e9c08064 + firstname: 刚 + lastname: 尹 + mail: jack_nudt@163.com + admin: false + status: 1 + last_login_on: 2014-04-27 13:49:18.000000000 Z + language: zh + auth_source_id: + created_on: 2013-06-25 05:20:59.000000000 Z + updated_on: 2014-07-16 03:37:51.000000000 Z + type: User + identity_url: + mail_notification: only_my_events + salt: 92944df2ce4dae1a4f01007263c5d8bb +users_lirongzhen_student: + id: 642 + login: lirongzhen + hashed_password: 070922b015398577c3ae0d87a68d5ffa93bf82e9 + firstname: 荣振 + lastname: 李 + mail: lrongzheni@gmail.com + admin: false + status: 1 + last_login_on: 2014-04-16 14:06:07.000000000 Z + language: zh + auth_source_id: + created_on: 2014-03-18 14:52:55.000000000 Z + updated_on: 2014-03-26 07:19:04.000000000 Z + type: User + identity_url: + mail_notification: all + salt: dca66d84fcb88b37de04dd3058f73576 diff --git a/test/functional/courses_controller_test.rb b/test/functional/courses_controller_test.rb new file mode 100644 index 000000000..865a4524d --- /dev/null +++ b/test/functional/courses_controller_test.rb @@ -0,0 +1,50 @@ +require File.expand_path('../../test_helper', __FILE__) + +class CoursesControllerTest < ActionController::TestCase + fixtures :courses, :users, :user_extensions, :roles, :members, :member_roles, :enabled_modules, :boards, :messages + + def setup + @request.session[:user_id] = nil + @request.session[:ctime] = Time.now.to_i + @request.session[:atime] = Time.now.to_i + Setting.default_language = 'en' + end + + def test_index_by_anonymous_should_not_show_private_projects + get :index + assert_response :success + assert_template 'index' + courses = assigns(:courses) + assert_not_nil courses + assert courses.all?(&:is_public?) + end + + test "test_create_courses_anyone_temporary" do + @request.session[:user_id] = 5 + Role.find(2).add_permisstion! :add_course + + + get :new + assert_redirected_to new_course_path + assert_response :success + end + +# test "#index by non-admin user with view_time_entries permission should show overall spent time link" do +# @request.session[:user_id] = 3 +# get :index +# assert_template 'index' +# assert_select 'a[href=?]', '/time_entries' +# end +# +# test "#index by non-admin user without view_time_entries permission should not show overall spent time link" do +# Role.find(2).remove_permission! :view_time_entries +# Role.non_member.remove_permission! :view_time_entries +# Role.anonymous.remove_permission! :view_time_entries +# @request.session[:user_id] = 3 +# +# get :index +# assert_template 'index' +# assert_select 'a[href=?]', '/time_entries', 0 +# end +end +