0

firebase 3アップデートの前に、私たちの受け入れテストは何の問題もなく実行されました。 basicDataRefは、テスト用治具であるEmber/Emberfire + Firebase 3受け入れテスト

moduleForAcceptance('Acceptance | Dashboard | Items | Library | New', { 
    beforeEach() { 
    stubFirebase(); 
    var ref = createOfflineRef(basicDataRef, 'https://MY-APP.firebaseio.com'); 
    replaceAppRef(this.application, ref); 
    stubValidSession(this.application, {uid: 'xxxx'}); 
    }, 
    afterEach() { 
    unstubFirebase(); 
    } 
}); 

afterTest私たちは、 beforeTestに次のように使用します。上記のコードは、鳥居ライブラリーのテストヘルパーの後のセッションを模擬して、自分のアプリケーションがファイアベースのヒアナキーが必要なデータを正しく取得できるようにします: / + - uid + - profile +他のデータ

私はパーミッションルールをテストしていません。アプリケーションのデータを保存/編集するための対話だけです。これはfirebase 3の移行前に正常に機能しています。バージョン3の後、すべての私のテストは、次の値を返します。

actual: > 
     false 
    expected: > 
     true 
    stack: > 
      at http://localhost:7357/assets/test-support.js:4130:12 
      at exports.default._emberTestingAdaptersAdapter.default.extend.exception (http://localhost:7357/assets/vendor.js:49473:7) 
      at onerrorDefault (http://localhost:7357/assets/vendor.js:41461:24) 
      at Object.exports.default.trigger (http://localhost:7357/assets/vendor.js:62212:11) 
      at http://localhost:7357/assets/vendor.js:63463:40 
      at Queue.invoke (http://localhost:7357/assets/vendor.js:10415:16) 
    message: > 
     Error: permission_denied at /xxxx/profile: Client doesn't have permission to access the desired data. 

私はいつもemberfireでcreateOfflineRefチェックルールをバイパスするために私達を可能と思いました。それがpermission_deniedを返し続けるという事実はかなり混乱しています。たぶん私はテストを再エンジニアリングする必要がありますか?あるいは、私はこのすべてに間違ってアプローチしますか?すべての入力は非常に高く評価されています

+0

教育的な推測:新しいFirebaseコンソール(firebse.google.com)でプロジェクトを作成しましたか?その場合、新しいデータベースのセキュリティルールは以前のプロジェクトとは異なります。 https://firebase.google.com/docs/database/android/save-dataの最初の青色のボックスをご覧ください。 –

+0

はいプロジェクトを新しいコンソールに移行しました。移行したプロジェクトでv2インターフェイスを使用しても、テストは正常に実行されます。しかし、私たちはfirebaseの新しいストレージ機能を利用したいので、v3への移行が必要です。私はいくつか掘り下げて、私はエラーがすべてのインスタンスで参照を置き換えないreplaceAppRefと関係があると思うが、私は間違っている可能性があります。 – malatasf

答えて

1

私はこれと同じ問題を他の人が経験した場合に私は自分の質問に答えます。

新しいfirebase InitializeAppメソッドには、という名前の付加的なオプションのパラメータがあります。デフォルトでは、Emberfire serviceセットこの名前があることを:

export const DEFAULT_NAME = '[EmberFire default app]'; 

Emberfire test helperがために別のインスタンス名でfirebaseインスタンスをfirebaseオフラインREFスタブを作成するために、しかし:

export const DEFAULT_NAME = '[EmberFire offline test app]'; 

この私のテストが失敗する原因受け入れテストが '[EmberFire default app]'に接続しようとしているため、許可が拒否されたがあり、スタブされたオフライン参照が別のものと呼ばれています。

DEFAULT_NAMEを '[EmberFire default app]'に置き換えて自分のcreate-offline-refヘルパーを作成すると、問題は解決します。私は受け入れテストのベストプラクティスは何かについてはわからないが、変化は想像力のように思われる。

関連する問題