Commit 7b36b8d130561aa3f953962614e1774fa2603a11
1 parent
003bf612
Exists in
master
and in
4 other branches
access project feeds via private token
Showing
4 changed files
with
23 additions
and
2 deletions
Show diff stats
app/models/user.rb
| @@ -26,6 +26,7 @@ class User < ActiveRecord::Base | @@ -26,6 +26,7 @@ class User < ActiveRecord::Base | ||
| 26 | :dependent => :destroy | 26 | :dependent => :destroy |
| 27 | 27 | ||
| 28 | before_create :ensure_authentication_token | 28 | before_create :ensure_authentication_token |
| 29 | + alias_attribute :private_token, :authentication_token | ||
| 29 | scope :not_in_project, lambda { |project| where("id not in (:ids)", :ids => project.users.map(&:id) ) } | 30 | scope :not_in_project, lambda { |project| where("id not in (:ids)", :ids => project.users.map(&:id) ) } |
| 30 | 31 | ||
| 31 | def identifier | 32 | def identifier |
app/views/layouts/project.html.haml
| @@ -6,9 +6,9 @@ | @@ -6,9 +6,9 @@ | ||
| 6 | = stylesheet_link_tag "application" | 6 | = stylesheet_link_tag "application" |
| 7 | = javascript_include_tag "application" | 7 | = javascript_include_tag "application" |
| 8 | - if current_page?(tree_project_path(@project)) || current_page?(project_commits_path(@project)) | 8 | - if current_page?(tree_project_path(@project)) || current_page?(project_commits_path(@project)) |
| 9 | - = auto_discovery_link_tag(:atom, project_commits_url(@project, :atom, :ref => @ref), :title => "Recent commits to #{@project.name}:#{@ref}") | 9 | + = auto_discovery_link_tag(:atom, project_commits_url(@project, :atom, :ref => @ref, :private_token => current_user.private_token), :title => "Recent commits to #{@project.name}:#{@ref}") |
| 10 | - if request.path == project_issues_path(@project) | 10 | - if request.path == project_issues_path(@project) |
| 11 | - = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom), :title => "#{@project.name} issues") | 11 | + = auto_discovery_link_tag(:atom, project_issues_url(@project, :atom, :private_token => current_user.private_token), :title => "#{@project.name} issues") |
| 12 | = csrf_meta_tags | 12 | = csrf_meta_tags |
| 13 | = javascript_tag do | 13 | = javascript_tag do |
| 14 | REQ_URI = "#{request.env["REQUEST_URI"]}"; | 14 | REQ_URI = "#{request.env["REQUEST_URI"]}"; |
spec/requests/commits_spec.rb
| @@ -34,6 +34,16 @@ describe "Commits" do | @@ -34,6 +34,16 @@ describe "Commits" do | ||
| 34 | page.body.should have_selector("author email", :text => commit.author_email) | 34 | page.body.should have_selector("author email", :text => commit.author_email) |
| 35 | page.body.should have_selector("entry summary", :text => commit.message) | 35 | page.body.should have_selector("entry summary", :text => commit.message) |
| 36 | end | 36 | end |
| 37 | + | ||
| 38 | + it "should render atom feed via private token" do | ||
| 39 | + logout | ||
| 40 | + visit project_commits_path(project, :atom, :private_token => @user.private_token) | ||
| 41 | + | ||
| 42 | + page.response_headers['Content-Type'].should have_content("application/atom+xml") | ||
| 43 | + page.body.should have_selector("title", :text => "Recent commits to #{project.name}") | ||
| 44 | + page.body.should have_selector("author email", :text => commit.author_email) | ||
| 45 | + page.body.should have_selector("entry summary", :text => commit.message) | ||
| 46 | + end | ||
| 37 | end | 47 | end |
| 38 | 48 | ||
| 39 | describe "GET /commits/:id" do | 49 | describe "GET /commits/:id" do |
spec/requests/issues_spec.rb
| @@ -36,6 +36,16 @@ describe "Issues" do | @@ -36,6 +36,16 @@ describe "Issues" do | ||
| 36 | page.body.should have_selector("entry summary", :text => @issue.title) | 36 | page.body.should have_selector("entry summary", :text => @issue.title) |
| 37 | end | 37 | end |
| 38 | 38 | ||
| 39 | + it "should render atom feed via private token" do | ||
| 40 | + logout | ||
| 41 | + visit project_issues_path(project, :atom, :private_token => @user.private_token) | ||
| 42 | + | ||
| 43 | + page.response_headers['Content-Type'].should have_content("application/atom+xml") | ||
| 44 | + page.body.should have_selector("title", :text => "#{project.name} issues") | ||
| 45 | + page.body.should have_selector("author email", :text => @issue.author_email) | ||
| 46 | + page.body.should have_selector("entry summary", :text => @issue.title) | ||
| 47 | + end | ||
| 48 | + | ||
| 39 | describe "Destroy" do | 49 | describe "Destroy" do |
| 40 | before do | 50 | before do |
| 41 | # admin access to remove issue | 51 | # admin access to remove issue |