モデルのプロパティのAttributeに(cipher = true)をつけるとテストが失敗する現象への対応
gen-modelで生成したモデルオブジェクトに、
@Attribute(cipher = true) private String accessToken;
を付け、appengine-web.xmlに
<system-properties> <property name="slim3.cipherGlobalKey" value="hogehogehogehoge"/> </system-properties>
を追記すると、ブラウザから動作させた場合は普通に動作し、Datastoreにも暗号化されて保存されるが、EclipseよりRun as->JUnit Testとすると、下記の例外が発生した。
java.lang.IllegalStateException: A cipher key is required.
appengine-web.xmlを読み込んでいない?
とりあえず、該当のテストクラスにて、setUpメソッドを実装。
@Override @Before public void setUp() throws Exception { super.setUp(); Datastore.setGlobalCipherKey("hogehogehogehoge"); }
ただしこの方法、大量のテストクラスに対して上記の対応が必要になります。(該当のモデルを利用するController, Serviceのテストクラスなど)
もっとスマートなやり方がありそう。
ちなみに、ktrwjrであれば、上記の対応は必要ないみたいです。
でも、Eclipse上で完結させたいなー。