저는 Rspec 사양 대부분을 작성했지만 중요한 문제에 직면하고 있습니다. 모든 경로에 라우팅 제한 조건을 설정했습니다 (자체적으로 논쟁의 여지가 있음). 별도의 IpAddress 모델에 저장되어있는 IP 주소를 허용 한 관리자 만 내 응용 프로그램의 특정 영역에 액세스 할 수 있습니다.Rspec가 라우팅 제약을 무시합니다
간단히 말해서 필자는 사양 내에서 모든 것을 자유롭게 액세스 할 수 있도록 제한 모델을 모방하거나 스터핑하려고합니다.
내 제약 조건은 다음과 같습니다
class IpAddressConstraint
def initialize
@ips = IpAddress.select('number')
end
def matches?(request)
if @ips.find_by_number(request.remote_ip).present? || Rails.env.test? #<- temporary solution
true
else
if @current_backend_user.present?
backend_user_sign_out
else
raise ActionController::RoutingError.new('Not Found')
end
end
end
end
MyApp::Application.routes.draw do
constraints IpConstraint.new do
#all routes
end
end
내가 RSpec에이 라우팅 제약 조건을 테스트 할 수있는 최선의 방법은 무엇입니까? 현재 조건문을 추가 했으므로 테스트 환경에있는 경우 이러한 제약 조건을 모두 건너 뛸 수 있습니다. 어떻게 든이 제약 조건을 시뮬레이션 할 수 있다면 더 좋을 것입니다.
허용되는 IPS 목록에 127.0.0.1/32를 추가 하시겠습니까? 네가 카피 바라 같은 것을 사용한다고 가정 할 때? – Doon
필자는 IP를위한 별도의 모델을 가지고 있지만 로그인 만하면 액세스 할 수 있습니다. 새로운 Ip_address.number (필자의 경우 127.0.0.1)를 만들 수있는 도우미를 작성할 수 있다면 좋을 것입니다. 그렇게 확고한 제약이 있기는하지만 디자인에 대한 잘못된 결정 일 수 있습니다. –
IpAddress라는 IP 모델이 있습니다. 경로를 통과하는 스펙보다 먼저'IpAddress.create (number : '127.0.0.1')와 같은 작업 만하면됩니다. 컨트롤러/등을 통해 해당 Object/레코드를 생성 할 필요가 없습니다. – Doon