default Binder toBinder() { return DefaultBiMapper.serialize(this); } }
public Binder toBinder() { return Binder.fromKeysValues( "state", state.name(), "haveCopy", haveCopy, "createdAt", createdAt, "expiresAt", expiresAt, "errors", DefaultBiMapper.serialize(errors), "isTestnet", isTestnet, "lockedById", lockedById, "extra", extraDataBinder ); }
@Test public void testAddressRole() throws Exception { Set<KeyAddress> keyAddresses = new HashSet<>(); keyAddresses.add(new KeyAddress(keys.get(0).getPublicKey(), 0, true)); SimpleRole sr = new SimpleRole("tr1", keyAddresses); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); Set<PublicKey> pubKeys = new HashSet<>(); pubKeys.add(keys.get(0).getPublicKey()); assertTrue(sr.isAllowedForKeys(pubKeys)); assertTrue(r1.isAllowedForKeys(pubKeys)); assertEquals(sr, r1); }
@Test public void serializeNone() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertTrue(r1.getReferences(Role.RequiredMode.ANY_OF).isEmpty()); assertTrue(r1.getReferences(Role.RequiredMode.ALL_OF).isEmpty()); }
@Test public void serializeMany() throws Exception { SimpleRole sr = new SimpleRole("tr1"); keys.forEach(k-> sr.addKeyRecord(new KeyRecord(k.getPublicKey()))); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); Set<PublicKey> kk = ((SimpleRole)r1).getSimpleKeys(); keys.forEach(k->assertTrue(kk.contains(k.getPublicKey()))); }
@Test public void serializeAny() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.addRequiredReference("ref", Role.RequiredMode.ANY_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertTrue(sr.getReferences(Role.RequiredMode.ALL_OF).isEmpty()); assertEquals(sr.getReferences(Role.RequiredMode.ANY_OF).size(),1); assertEquals(sr.getReferences(Role.RequiredMode.ANY_OF).iterator().next(),"ref"); }
@Test public void serializeAll() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.addRequiredReference("ref", Role.RequiredMode.ALL_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertTrue(sr.getReferences(Role.RequiredMode.ANY_OF).isEmpty()); assertEquals(sr.getReferences(Role.RequiredMode.ALL_OF).size(),1); assertEquals(sr.getReferences(Role.RequiredMode.ALL_OF).iterator().next(),"ref"); }
@Test public void validPermissionIds() throws Exception { Contract c = Contract.fromDslFile(ROOT_CONTRACT); c.addSignerKeyFromFile(PRIVATE_KEY_PATH); byte[] sealed = c.seal(); assertTrue(c.check()); Binder s = DefaultBiMapper.serialize(c); s.getBinderOrThrow("definition","permissions"); }
@Test public void serializeBoth() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.addRequiredReference("ref1", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref2", Role.RequiredMode.ANY_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertEquals(r1.getReferences(Role.RequiredMode.ALL_OF).size(),1); assertEquals(r1.getReferences(Role.RequiredMode.ANY_OF).size(),1); assertEquals(r1.getReferences(Role.RequiredMode.ALL_OF).iterator().next(),"ref1"); assertEquals(r1.getReferences(Role.RequiredMode.ANY_OF).iterator().next(),"ref2"); }
@Test public void processBytes() throws Exception { byte x[] = Do.randomBytes(10); Binder s = DefaultBiMapper.serialize(x); byte[] result = ((Bytes)DefaultBiMapper.deserialize(s)).getData(); assertArrayEquals(x, result); } }
@Test public void autoSerializableBinder() throws Exception { // if the object is instance of Map (for example Binder), it could also have // it's own serialization: Rebinder b = new Rebinder(); DefaultBiMapper.registerClass(Rebinder.class); b.put("foo", "bar"); Binder s = DefaultBiMapper.serialize(b); Object x = DefaultBiMapper.deserialize(s); assertThat(x, instanceOf(Rebinder.class)); assertEquals("bar", ((Map)x).get("foo")); }
@Test public void serialize() throws Exception { // Check proper serialization of the structure/single object ZonedDateTime now = ZonedDateTime.now(); Binder res = DefaultBiMapper.serialize( Binder.of( "time", now, "hello", "world" ) ); assertEquals("world", res.get("hello")); assertEquals("unixtime", res.getStringOrThrow("time", "__type")); Binder restored = DefaultBiMapper.deserialize(res); assertEquals(now.truncatedTo(ChronoUnit.SECONDS), restored.get("time")); assertEquals(now.truncatedTo(ChronoUnit.SECONDS), DefaultBiMapper.deserialize(DefaultBiMapper.serialize(now))); }
@Test public void timeIssues() throws Exception { Binder x = Binder.fromKeysValues( "tt", ZonedDateTime.now() ); x = (Binder) DefaultBiMapper.serialize(x); // System.out.println(x); x.getBinderOrThrow("tt").put("seconds", 0); DefaultBiMapper.deserializeInPlace(x); ZonedDateTime t = x.getZonedDateTimeOrThrow("tt"); assertEquals( "1970-01-01T00:00Z", t.withZoneSameInstant(ZoneOffset.UTC).toString()); // System.out.println(""+Boss.serializeToBinder(x)); } }
@Test public void serializeAny() throws Exception { SimpleRole s1 = new SimpleRole("owner"); SimpleRole s2 = new SimpleRole("owner2"); s1.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); s2.addKeyRecord(new KeyRecord(keys.get(2).getPublicKey())); ListRole roleList = new ListRole("listAnyMode", ListRole.Mode.ANY, Do.listOf(s1, s2)); Binder serialized = DefaultBiMapper.serialize(roleList); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(r1, roleList); }
@Test public void serializeQuorum() throws Exception { SimpleRole s1 = new SimpleRole("owner"); SimpleRole s2 = new SimpleRole("owner2"); SimpleRole s3 = new SimpleRole("owner3"); s1.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); s2.addKeyRecord(new KeyRecord(keys.get(2).getPublicKey())); s3.addKeyRecord(new KeyRecord(keys.get(1).getPublicKey())); ListRole roleList = new ListRole("listAnyMode", 2, Do.listOf(s1, s2, s3)); Binder serialized = DefaultBiMapper.serialize(roleList); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(r1, roleList); }
@Test public void serialize() throws Exception { RoleLink r1 = new RoleLink("name", "target"); r1.addRequiredReference("ref", Role.RequiredMode.ALL_OF); Binder s = DefaultBiMapper.serialize(r1); RoleLink r2 = DefaultBiMapper.deserialize(s); assertEquals(r1, r2); assertEquals(r1.getName(), r2.getName()); }
@Test public void serializeOne() throws Exception { SimpleRole sr = new SimpleRole("tr1"); sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); sr.setComment("<New role comment>"); sr.addRequiredReference("ref1", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref2", Role.RequiredMode.ALL_OF); sr.addRequiredReference("ref3", Role.RequiredMode.ANY_OF); Binder serialized = DefaultBiMapper.serialize(sr); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(sr, r1); assertEquals(r1.getComment(), "<New role comment>"); }
@Test public void serializeAll() throws Exception { Contract c = new Contract(); SimpleRole s1 = new SimpleRole("owner"); s1.addRequiredReference("refName", Role.RequiredMode.ALL_OF); s1.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey())); ListRole roleList = new ListRole("listAllMode", ListRole.Mode.ALL, Do.listOf(s1)); c.registerRole(s1); c.registerRole(roleList); Binder serialized = DefaultBiMapper.serialize(roleList); Role r1 = DefaultBiMapper.deserialize(serialized); assertEquals(r1, roleList); }
@Test public void autoSerializableInheritance() throws Exception { Test1 t1 = new Test2("foo"); DefaultBiMapper.registerClass(Test2.class); Binder s = DefaultBiMapper.serialize(t1); assertEquals(s.getStringOrThrow("__type"), "net.sergeych.biserializer.Test2"); Test2 t2 = DefaultBiMapper.deserialize(s); assertThat(t2, instanceOf(Test1.class) ); assertEquals("bad", t2.getValue()); assertEquals("foo", t2.getBar()); }
@Test public void autoSerializable() throws Exception { Test1 t1 = new Test1("foo"); DefaultBiMapper.registerClass(Test1.class); Binder s = DefaultBiMapper.serialize(t1); assertEquals(s.getStringOrThrow("__type"), "foobar1"); assertEquals(s.getStringOrThrow("value"), "foo"); Test1 t2 = DefaultBiMapper.deserialize(s); assertThat(t2, instanceOf(Test1.class) ); assertEquals("foo", t2.getValue()); }