私はマルチテナントのSaaSアプリケーションを持っています。すべてのテナントモデルでテナントセキュリティテストを実行します。Rspec:ホワイトリストに登録されていない限り、すべてのモデルで特定の単体テストを実行してください
describe 'tenant security' do
it "has only the current company's data" do
set_tenant_company
other_companys_data = create :model
set_tenant_company
this_companys_data = create :model
expect(Model.all).to include this_companys_data
expect(Model.all).not_to include other_companys_data
end
end
これをすべてのモデルで実行する方法はありますか。 [単体テストに何かを明示的にコーディングすることなく]もしそうなら、テナント以外のモデルをホワイトリストにする方法はありますか?
テナントのセキュリティは非常に重要です。私はそれを間違って見落としたくはありません。
ホワイトリストに登録しないと自動的に行う方法はわかりませんが、すべてのテナントモデルで1つの実装と数行しか必要としないので、 'behaves_like'を使うことができます。これを見てください:https://relishapp.com/rspec/rspec-core/v/3-7/docs/example-groups/shared-examples –
ありがとう! Shared_examplesは私のしていることよりも優れているようです。モデル仕様ファイルごとに自動的にshared_exampleを1回実行する方法はありますか?特定のファイル(ホワイトリスト)をスキップするように指示する方法はありますか? –