Author: doogie
Date: Tue Jun 24 00:23:04 2014 New Revision: 1604966 URL: http://svn.apache.org/r1604966 Log: Start creating test cases for the entity engine crypto feature. Added: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/test/EntityCryptoTestSuite.java Modified: ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml ofbiz/trunk/framework/entity/testdef/entitytests.xml Modified: ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml?rev=1604966&r1=1604965&r2=1604966&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml (original) +++ ofbiz/trunk/framework/entity/entitydef/entitymodel_test.xml Tue Jun 24 00:23:04 2014 @@ -186,4 +186,28 @@ under the License. <key-map field-name="testingId"/> </relation> </view-entity> + + <!-- ========================================================= + The testing entity is a basic entity with a type + ========================================================= --> + <entity entity-name="TestingCrypto" + package-name="org.ofbiz.entity.test" + title="Testing Crypto Entity"> + <field name="testingCryptoId" type="id-ne"/> + <field name="testingCryptoTypeId" type="id-ne"/> + <field name="unencryptedValue" type="description"/> + <field name="encryptedValue" type="description" encrypt="true"/> + <prim-key field="testingCryptoId"/> + </entity> + <view-entity entity-name="TestingCryptoRawView" + package-name="org.ofbiz.entity.test" + title="TestingCrypto Raw View"> + <member-entity entity-alias="TC" entity-name="TestingCrypto"/> + <alias-all entity-alias="TC"/> + <alias name="rawEncryptedValue"> + <complex-alias operator="+"> + <complex-alias-field entity-alias="TC" field="encryptedValue"/> + </complex-alias> + </alias> + </view-entity> </entitymodel> Added: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/test/EntityCryptoTestSuite.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/test/EntityCryptoTestSuite.java?rev=1604966&view=auto ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/test/EntityCryptoTestSuite.java (added) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/test/EntityCryptoTestSuite.java Tue Jun 24 00:23:04 2014 @@ -0,0 +1,72 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.ofbiz.entity.test; + +import org.ofbiz.base.util.UtilMisc; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.entity.testtools.EntityTestCase; + +public class EntityCryptoTestSuite extends EntityTestCase { + public EntityCryptoTestSuite(String name) { + super(name); + } + + public void testCryptoEncryption() throws Exception { + // clear out all values + delegator.removeByAnd("TestingCrypto", UtilMisc.toMap("testingCryptoTypeId", "BASIC")); + + String nanoTime = "" + System.nanoTime(); + + // Ensure that null values are passed thru unencrypted. + delegator.create("TestingCrypto", UtilMisc.toMap("testingCryptoId", "1", "testingCryptoTypeId", "BASIC")); + GenericValue entity = delegator.findOne("TestingCrypto", UtilMisc.toMap("testingCryptoId", "1"), false); + assertNull(entity.getString("unencryptedValue")); + assertNull(entity.getString("encryptedValue")); + GenericValue view = delegator.findOne("TestingCryptoRawView", UtilMisc.toMap("testingCryptoId", "1"), false); + assertNull(view.getString("unencryptedValue")); + assertNull(view.getString("encryptedValue")); + assertNull(view.getString("rawEncryptedValue")); + + // Verify that encryption is taking place + entity.setString("unencryptedValue", nanoTime); + entity.setString("encryptedValue", nanoTime); + entity.store(); + view.refresh(); + assertEquals(nanoTime, view.getString("unencryptedValue")); + assertEquals(nanoTime, view.getString("encryptedValue")); + + String initialValue = view.getString("rawEncryptedValue"); + assertFalse(nanoTime.equals(initialValue)); + + // Verify that the same value stored repeatedly gives different raw encrypted values. + entity.setString("encryptedValue", nanoTime); + entity.store(); + entity.refresh(); // this is a bug; store() ends up setting the encrypted value *into* the entity + assertEquals(nanoTime, entity.getString("unencryptedValue")); + assertEquals(nanoTime, entity.getString("encryptedValue")); + + view.refresh(); + assertEquals(nanoTime, view.getString("unencryptedValue")); + assertEquals(nanoTime, view.getString("encryptedValue")); + + String updatedValue = view.getString("rawEncryptedValue"); + assertFalse(nanoTime.equals(updatedValue)); + assertFalse(initialValue.equals(updatedValue)); + } +} Modified: ofbiz/trunk/framework/entity/testdef/entitytests.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/testdef/entitytests.xml?rev=1604966&r1=1604965&r2=1604966&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/testdef/entitytests.xml (original) +++ ofbiz/trunk/framework/entity/testdef/entitytests.xml Tue Jun 24 00:23:04 2014 @@ -22,6 +22,7 @@ under the License. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd"> <test-case case-name="entity-tests"><junit-test-suite class-name="org.ofbiz.entity.test.EntityTestSuite"/></test-case> + <test-case case-name="entity-crypto-tests"><junit-test-suite class-name="org.ofbiz.entity.test.EntityCryptoTestSuite"/></test-case> <test-case case-name="entity-util-properties-tests"> <simple-method-test location="component://entity/script/org/ofbiz/entity/test/EntityUtilPropertiesTests.xml"/> </test-case> |
Free forum by Nabble | Edit this page |