代码之家  ›  专栏  ›  技术社区  ›  Jonathan

栏杆|黄瓜| acl9 |禁止进入

  •  1
  • Jonathan  · 技术社区  · 16 年前

    我正在提高黄瓜的产量,我在第一次通过测试时遇到了一个问题。我得到的例外是:

    And I visit the new contract screen
      Acl9::AccessDenied (Acl9::AccessDenied)
      /usr/local/lib/ruby/1.8/benchmark.rb:308:in `realtime'
      (eval):2:in `visit'
      ./features/step_definitions/manage_contracts_steps.rb:2:in `/^I visit the (.*) screen$/'
      features/manage_contracts.feature:15:in `And I visit the new contract screen'
    

    这是我的黄瓜特征。。。

    Background:
    Given the following user records
    | login  | password | name | role         |
    | bob    | secret   | Bob  | 'PSCM Staff' |
    | admin  | secret   | Frank| admin        |
    
    @new
    Scenario: Create Contract
    When I log in as "bob" with password "secret"
    And I visit the new contract screen
    Then I should see "Contract Name"
    

    My steps.rb:

    Given /^the following user records$/ do |table|
       table.hashes.each do |hash|
         role = hash.delete('role')
         u = Factory(:user, hash)
         u.has_role!(role) if role
       end
    end
    
    When /^I visit the (.*) screen$/ do |screen|
      visit path_to(screen)
    end
    

    最后,在my controller.rb中,我有以下访问控制块:

      before_filter :load_contract, :except => [:cancel_action,:new,:create]
    
      access_control do
        allow :admin
        allow logged_in, :to => [:index,:show,:log]
        allow "PSCM Staff", :to => [:new,:create]
        allow :editor, :of => :contract
      end
    

    当我在浏览器中明确地遵循这些步骤时,senario工作得很好。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Jonathan    16 年前

    我发现了问题。以防这对其他人有帮助。问题是在这一行的管道中包含带有的引号

    | bob | secret | Bob | 'PSCM Staff' |

    应该是

    | bob | secret | Bob | PSCM Staff |