From 0251ed077d820290ae7277b2ea19d883f0fa98ab Mon Sep 17 00:00:00 2001 From: GME Date: Sun, 21 Oct 2018 11:31:53 +0200 Subject: [PATCH 01/21] Init JAVA-API project Setup Basics blockchain class, pom.xml for maven, Logger, Basic IO Tests. --- .gitignore | 83 +++++++++++++++++ .idea/compiler.xml | 13 +++ .idea/encodings.xml | 6 ++ .idea/misc.xml | 14 +++ .idea/vcs.xml | 6 ++ java-api.iml | 2 + msp/toto/abdel.context | Bin 0 -> 229 bytes pom.xml | 52 +++++++++++ .../blockchain/client/CAClientWrapper.java | 48 ++++++++++ .../client/ChannelClientWrapper.java | 28 ++++++ .../client/FabricClientWrapper.java | 31 +++++++ .../java/blockchain/user/UserContext.java | 72 +++++++++++++++ src/main/java/blockchain/utility/Util.java | 85 ++++++++++++++++++ .../java/blockchain/user/UserContextTest.java | 20 +++++ .../java/blockchain/utility/UtilTest.java | 54 +++++++++++ .../blockchain/client/CAClientWrapper.class | Bin 0 -> 2284 bytes .../client/ChannelClientWrapper.class | Bin 0 -> 1015 bytes .../client/FabricClientWrapper.class | Bin 0 -> 2151 bytes .../classes/blockchain/user/UserContext.class | Bin 0 -> 2023 bytes target/classes/blockchain/utility/Util.class | Bin 0 -> 3748 bytes .../blockchain/user/UserContextTest.class | Bin 0 -> 1047 bytes .../blockchain/utility/UtilTest.class | Bin 0 -> 2164 bytes 22 files changed, 514 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 java-api.iml create mode 100644 msp/toto/abdel.context create mode 100644 pom.xml create mode 100644 src/main/java/blockchain/client/CAClientWrapper.java create mode 100644 src/main/java/blockchain/client/ChannelClientWrapper.java create mode 100644 src/main/java/blockchain/client/FabricClientWrapper.java create mode 100644 src/main/java/blockchain/user/UserContext.java create mode 100644 src/main/java/blockchain/utility/Util.java create mode 100644 src/test/java/blockchain/user/UserContextTest.java create mode 100644 src/test/java/blockchain/utility/UtilTest.java create mode 100644 target/classes/blockchain/client/CAClientWrapper.class create mode 100644 target/classes/blockchain/client/ChannelClientWrapper.class create mode 100644 target/classes/blockchain/client/FabricClientWrapper.class create mode 100644 target/classes/blockchain/user/UserContext.class create mode 100644 target/classes/blockchain/utility/Util.class create mode 100644 target/test-classes/blockchain/user/UserContextTest.class create mode 100644 target/test-classes/blockchain/utility/UtilTest.class diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8c95b08 --- /dev/null +++ b/.gitignore @@ -0,0 +1,83 @@ +# Created by https://www.gitignore.io/api/intellij + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +.idea/sonarlint + + +# End of https://www.gitignore.io/api/intellij \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..3f8ab6c --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..b26911b --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..4b661a5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java-api.iml b/java-api.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/java-api.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/msp/toto/abdel.context b/msp/toto/abdel.context new file mode 100644 index 0000000000000000000000000000000000000000..95e9850b9c4c40073709ba6dc1192053aa8ec158 GIT binary patch literal 229 zcmX|)F%H5o3`Jekf&>E+D+gdB2Vg`DNZBe5;HGW~q)A9zR2ELe)wlzNR{X*C@cjPk z4OtAZE{s!Gbw+KsZKSY0^<(cWQ^znQnZQ)S43%=NWrmf!;2niQTZ^27w)IZJ0;@_J zjjWx$!4nb*bF#r1)6n;6BVDM)`Qa%TDr*X&!XjuTVtEyZKiHeHCi-JJI#P=bjd#}D dC^9UE{+6{7Iq|OZo*`w&?zek{A;Y31<3F`ZNl*X) literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bddd040 --- /dev/null +++ b/pom.xml @@ -0,0 +1,52 @@ + + + 4.0.0 + + com.monnethic + java-api + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 1.5.9.RELEASE + + + + + junit + junit + 4.12 + + + org.hyperledger.fabric-sdk-java + fabric-sdk-java + 1.2.1 + + + org.springframework.boot + spring-boot-starter-web + + + log4j + log4j + 1.2.17 + + + + + 1.8 + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/src/main/java/blockchain/client/CAClientWrapper.java b/src/main/java/blockchain/client/CAClientWrapper.java new file mode 100644 index 0000000..15e5b71 --- /dev/null +++ b/src/main/java/blockchain/client/CAClientWrapper.java @@ -0,0 +1,48 @@ +package blockchain.client; + +import blockchain.user.UserContext; +import org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi; +import org.hyperledger.fabric.sdk.exception.CryptoException; +import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; +import org.hyperledger.fabric.sdk.security.CryptoSuite; +import org.hyperledger.fabric_ca.sdk.HFCAClient; + +import java.lang.reflect.InvocationTargetException; +import java.net.MalformedURLException; +import java.util.Properties; + +public class CAClientWrapper { + private String caUrl; + private Properties properties; + private HFCAClient hfcaClient; + private UserContext adminContext; + + public void setAdminContext(UserContext adminContext) { + this.adminContext = adminContext; + } + + public HFCAClient getHfcaClient(){ + return hfcaClient; + } + + public CAClientWrapper(String caUrl, Properties properties) throws MalformedURLException, IllegalAccessException, InstantiationException, ClassNotFoundException, CryptoException, InvalidArgumentException, NoSuchMethodException, InvocationTargetException { + this.caUrl=caUrl; + this.properties=properties; + init(); + } + + private void init() throws MalformedURLException, IllegalAccessException, InstantiationException, ClassNotFoundException, CryptoException, InvalidArgumentException, NoSuchMethodException, InvocationTargetException { + CryptoSuite cryptoSuite = CryptoSuite.Factory.getCryptoSuite(); + hfcaClient = HFCAClient.createNewInstance(caUrl, properties); + hfcaClient.setCryptoSuite(cryptoSuite); + } + + //TODO + public UserContext enrollAdmin(String username, String password) throws Exception{ + UserContext userContext = new UserContext(); + + return null; + } + + +} diff --git a/src/main/java/blockchain/client/ChannelClientWrapper.java b/src/main/java/blockchain/client/ChannelClientWrapper.java new file mode 100644 index 0000000..5db76b1 --- /dev/null +++ b/src/main/java/blockchain/client/ChannelClientWrapper.java @@ -0,0 +1,28 @@ +package blockchain.client; + + +import org.hyperledger.fabric.sdk.Channel; + +public class ChannelClientWrapper { + private String name; + private Channel channel; + private FabricClientWrapper fabricClientWrapper; + + public String getName(){ + return name; + } + + public Channel getChannel(){ + return channel; + } + + public FabricClientWrapper getFabricClientWrapper(){ + return fabricClientWrapper; + } + + public ChannelClientWrapper(String name, Channel channel, FabricClientWrapper fabricClientWrapper){ + this.name=name; + this.channel=channel; + this.fabricClientWrapper=fabricClientWrapper; + } +} diff --git a/src/main/java/blockchain/client/FabricClientWrapper.java b/src/main/java/blockchain/client/FabricClientWrapper.java new file mode 100644 index 0000000..eeb3ee9 --- /dev/null +++ b/src/main/java/blockchain/client/FabricClientWrapper.java @@ -0,0 +1,31 @@ +package blockchain.client; + +import blockchain.user.UserContext; +import org.hyperledger.fabric.sdk.Channel; +import org.hyperledger.fabric.sdk.HFClient; +import org.hyperledger.fabric.sdk.exception.CryptoException; +import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; +import org.hyperledger.fabric.sdk.security.CryptoSuite; + +import java.lang.reflect.InvocationTargetException; + +public class FabricClientWrapper { + private HFClient client; + + public HFClient getClient(){ + return client; + } + + public FabricClientWrapper(UserContext userContext) throws CryptoException, InvalidArgumentException, IllegalAccessException, InstantiationException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException { + CryptoSuite cryptoSuite = CryptoSuite.Factory.getCryptoSuite(); + client = HFClient.createNewInstance(); + client.setCryptoSuite(cryptoSuite); + client.setUserContext(userContext); + } + + public ChannelClientWrapper createChannelClient(String name) throws InvalidArgumentException { + Channel channel = client.newChannel(name); + ChannelClientWrapper channelClientWrapper = new ChannelClientWrapper(name, channel, this); + return channelClientWrapper; + } +} diff --git a/src/main/java/blockchain/user/UserContext.java b/src/main/java/blockchain/user/UserContext.java new file mode 100644 index 0000000..47fa4dd --- /dev/null +++ b/src/main/java/blockchain/user/UserContext.java @@ -0,0 +1,72 @@ +package blockchain.user; + +import org.hyperledger.fabric.sdk.Enrollment; +import org.hyperledger.fabric.sdk.User; + +import java.io.Serializable; +import java.util.Set; + +public class UserContext implements User, Serializable { + + private static final long serialVersionUID = 1L; + protected String name; + protected Set roles; + protected String account; + protected String affiliation; + protected Enrollment enrollment; + protected String mspId; + + public void setName(String name){ + this.name=name; + } + + public void setRoles(Set roles){ + this.roles=roles; + } + + public void setAccount(String account) { + this.account = account; + } + + public void setAffiliation(String affiliation) { + this.affiliation = affiliation; + } + + public void setEnrollment(Enrollment enrollment) { + this.enrollment = enrollment; + } + + public void setMspId(String mspId) { + this.mspId = mspId; + } + + @Override + public String getName() { + return name; + } + + @Override + public Set getRoles() { + return roles; + } + + @Override + public String getAccount() { + return account; + } + + @Override + public String getAffiliation() { + return affiliation; + } + + @Override + public Enrollment getEnrollment() { + return enrollment; + } + + @Override + public String getMspId() { + return mspId; + } +} diff --git a/src/main/java/blockchain/utility/Util.java b/src/main/java/blockchain/utility/Util.java new file mode 100644 index 0000000..6d29293 --- /dev/null +++ b/src/main/java/blockchain/utility/Util.java @@ -0,0 +1,85 @@ +package blockchain.utility; + +import blockchain.user.UserContext; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; + +import java.io.*; + +public class Util { + private static Logger logger = Logger.getLogger(Util.class); + + public static void writeUserContext(UserContext userContext) { + BasicConfigurator.configure(); + + ObjectOutputStream out = null; + FileOutputStream fileOutputStream = null; + try { + String directoryPath = "msp/" + userContext.getAffiliation(); + String filePath = directoryPath + "/" + userContext.getName() + ".context"; + File directory = new File(directoryPath); + + if (!directory.exists()){ + logger.info("Create directory at path "+directoryPath); + directory.mkdirs(); + } + + File file = new File(filePath); + fileOutputStream = new FileOutputStream(file); + out = new ObjectOutputStream(fileOutputStream); + logger.info("Try write object for user "+userContext.getName()); + out.writeObject(userContext); + } catch (IOException e) { + logger.error("1st IOException"); + e.printStackTrace(); + } finally { + try { + if (out != null){ + logger.info("Close ObjectOutputStream"); + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + try { + if (fileOutputStream != null) { + logger.info("Close fileOutputStream"); + fileOutputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public static UserContext readUserContext(String affiliation, String username) { + UserContext userContext = null; + FileInputStream fileStream = null; + ObjectInputStream in = null; + try { + String filePath = "msp/" + affiliation + "/" + username + ".context"; + File file = new File(filePath); + if (file.exists()) { + fileStream = new FileInputStream(filePath); + in = new ObjectInputStream(fileStream); + userContext = (UserContext) in.readObject(); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (in != null) + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + try { + if (fileStream != null) + fileStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return userContext; + } + } +} diff --git a/src/test/java/blockchain/user/UserContextTest.java b/src/test/java/blockchain/user/UserContextTest.java new file mode 100644 index 0000000..7aeeafc --- /dev/null +++ b/src/test/java/blockchain/user/UserContextTest.java @@ -0,0 +1,20 @@ +package blockchain.user; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class UserContextTest { + @Test + public void TestACreateUser(){ + UserContext userContext = new UserContext(); + userContext.setName("admin"); + userContext.setAffiliation("org1"); + userContext.setMspId("MspidOrg1"); + userContext.setEnrollment(null); + + assertEquals("org1",userContext.getAffiliation()); + assertEquals("admin",userContext.getName()); + assertEquals(null,userContext.getEnrollment()); + } +} diff --git a/src/test/java/blockchain/utility/UtilTest.java b/src/test/java/blockchain/utility/UtilTest.java new file mode 100644 index 0000000..af9979e --- /dev/null +++ b/src/test/java/blockchain/utility/UtilTest.java @@ -0,0 +1,54 @@ +package blockchain.utility; + +import blockchain.user.UserContext; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class UtilTest { + private static Logger logger = Logger.getLogger(UtilTest.class); + + @Test + public void TestAReadNullUser(){ + BasicConfigurator.configure(); + + logger.info("----- START TEST READ NULL USER ----"); + UserContext uc = Util.readUserContext("tata","abdel"); + if(uc!=null){ + logger.info("UserContext is : "+uc.toString()); + }else{ + logger.info("UserContext doesn't exist"); + } + } + + + @Test + public void TestBWriteUser(){ + BasicConfigurator.configure(); + logger.info("----- START TEST WRITE NULL USER ----"); + UserContext user = new UserContext(); + user.setName("abdel"); + user.setAffiliation("toto"); + user.setEnrollment(null); + user.setMspId("test"); + + Util.writeUserContext(user); + + } + + @Test + public void TestCReadCreatedUser(){ + BasicConfigurator.configure(); + logger.info("----- START TEST READ CREATED USER ----"); + UserContext uc = Util.readUserContext("toto","abdel"); + if(uc!=null){ + logger.info("UserContext is : "+uc.toString()); + }else{ + logger.info("UserContext doesn't exist"); + } + } + +} diff --git a/target/classes/blockchain/client/CAClientWrapper.class b/target/classes/blockchain/client/CAClientWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..6e94daae18a7925c0c2334b051b94f8f12aaab52 GIT binary patch literal 2284 zcmb7GYjfK~6g}%WQKBem8@J(+(5AG2V~2{;Kns09FbxSfZfPE+Gt4j>d1I?pB+p82 zn|}o}gmhqrAHa`dI4irh+S(cN!Mm%~xp&XGckh+|`S;Ji0W9Ou1RQ*BhU+$_aKo&= zFvFKNhnqHT;kJ!C_{t1lTUfDS)rdqW!ROQ^0QN zsHJq`t5{&RgJ>sy;NI`;8&q@8la;_%VIokfM!MlP4`>#sdP8Y7 zQC-ot>W8Y<-rrSvOYR2TnW;ve40fdU&2x7%pEP}Hy_9w9rPAD&ydP@WqB`=KYN%u_ zqkXBkcoOwvxBSpg?g*5NZw7yGu#F)5?sHGI5>p`FzGFb6E6~{v$VVuY?@uf-jU`QokBK8rqMf1$6h#{1?qH&oJ$vc$@LgjRb2!{*W* zE754&lA0xz@mJ`hd%G5X61aX0(Ls0k@~ZTbNFNATy_K^bhP-Pgf~LPs^XSa27q~XG zoR2G&;$UWP_CJ9$o>nqZHT7&g&9uiGzBRPAUT?f7>NV4Bov(;nE}pmzm{#HrRyQ;t zxX5qN6u(n>cl%7-SAbXl^ qe8Sut%{H!bl_N5TPnoHa^z1y}UE|I&5jlK@`zccJugeDRVd6iWA5O9W literal 0 HcmV?d00001 diff --git a/target/classes/blockchain/client/ChannelClientWrapper.class b/target/classes/blockchain/client/ChannelClientWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..a349f42cbaebbd5253f4a48a96cb91417a4ee192 GIT binary patch literal 1015 zcma)4O>fgc5PfUA2?=hSwkG{96i`Xb$6mM|3(0eFjNEi7TrhJ70j+GyZ$6Hl5rWC*mlmJI8| zOYvFoTn9f}S27-Egi z;j94b*q|Fjghv$T!QMQ$Qw#25vj*(XgQHsT7Pc#JPO<`G6U9Fe#4o2{@vAAk`1KV2 xH+uJARdmS=(7=GqZ4q__JEURP^^RxwN)>f-c3CSTXPDEV_h*7fkQflsQKz-S7!vht#s@GS6wI{oQV_RYGnf0*Q zh+!K7mA;CS2Z3v~`Wsr68-7m-Ot&3Rb%y(06+D(*mpkX$zAfEd894em-7H4~CnSBl z>-zRHdmtUpN_1MySX3h5Ngxj>m!ifu9nXpG2`tt|ZH6I_@dJm3??vimv{By`nAE%J zhQLB0o@hHbJc#_Ap%YQ<&7$Lm${q$zbZ9j)6KbnIcxkJH$nm|Yv7)N z&kcMbaNZ7-j8tPFJx{qu!QHI2pUUUba;4X|cA~)X`Wy98wP{37m}Ma;dvZUH?;H9I5jxAJTAT7Hk(PnLo!kymK#~>wPdTPV?vE^U z`cqDw#eLW+5Rw-+Eb;3$$q${tm~InXmAIb5G{+e}S)2vuGb_JB{LIA|&T<@&H)n8; zYcm1hJZAYM*c;}E(#9d@66d9r-!b+YrR|m1DE|hbxz=7KoU5-e{^S>e65`mzO&@k8u{`!ahby>B_6lQn4K;e0<-bl` bDOOVEy9Ms7(sm4Mc)+>JJqusrJ}UnLtn6pY literal 0 HcmV?d00001 diff --git a/target/classes/blockchain/user/UserContext.class b/target/classes/blockchain/user/UserContext.class new file mode 100644 index 0000000000000000000000000000000000000000..88c8e70bb1dea8e41afdd62f82f10db2d11fdab3 GIT binary patch literal 2023 zcma)7YflqF6ur~e(o*DMsXPUgM_Ytde4v6TA|#lKMuhL%GL(VsF4=C4`l~d-nE1gT z;Eyt%yW7&TYzh5vXXnn`Gv}PSlm7kp`wtO4qRkW~>3Nd6XobTnhZh{yIK1TWN~3j+ zUTd_W(HlX1HR&kB+?P&G+1B1RQsS+ko(h%}vt}^vq>0%|ht16b^)*Y1Iy|}u18EFj_no%y>b;}jh zZ5$pdQyDJ!2}(%|r$bo)S1 zVpUnnT@w_|<@cdx!#)6|-lDSPPQ6-^&L^W}div}#TruDc=8a^`JyMW2UM!h*`J{Yg zC`+%yKYb4YhPmKpeXP2nLYDMBggCXGfY zO+6&&2A*hydMU;<@f~BP$Paq?Eao8X<-ywu!cKe`SRyb;WJIZkSwr$Lvr}ahck`^8IR$V@eZf3sm!<# zjuj7LO#*AG0~TKlW6jej;lf>_hQn(2VWm&;fS;k>jURt{MC4p`hEjJ4>s#l`kG zqsVty+}<7w9!#)3?$d+Dm9~28jH1EfrI2F(#+Ja~VJL%G5M((7MBpEiPY%+L2a8uj diyzaIkm5wJcs;auIrL;LSiBWl{M57e*?-d|Te$!L literal 0 HcmV?d00001 diff --git a/target/classes/blockchain/utility/Util.class b/target/classes/blockchain/utility/Util.class new file mode 100644 index 0000000000000000000000000000000000000000..5f9ec2d126444dcb2fb7300f176f0c1fdf3daaf1 GIT binary patch literal 3748 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 literal 0 HcmV?d00001 diff --git a/target/test-classes/blockchain/utility/UtilTest.class b/target/test-classes/blockchain/utility/UtilTest.class new file mode 100644 index 0000000000000000000000000000000000000000..7dcb7caa4df2e1c10fc4c5cd327808335ed7868a GIT binary patch literal 2164 zcmbtUZBrXn6n>Tfy9o=0K#TM>AZ-IFY}K~bQd>g^6%9d?0M@s<+1!MMWtZ9A)b_Lg z!av|=btYx(j352rZ*m-;y9p3N$8pBZ!vt|0WTz8cH;f@_BxKgM(p0#J~n6_&) zL))>#m&PV#MFb&Zj7ga-3A0vgI?iSwG4(aAUPtN;xta6aP`r?i!{yMl_SVgVC?08G zE~Ta$+WTV54r~I+x~>T?oO&KG7V zYVBR^q2+Y=NR+*%Z;4e~Wy%3AS>jufU>yNdT}D2IY`e5p$@f50 zaH+dIdTv>ViK;~Hg`N%zRUI{uy#A0Eq@yks4eThmc_vsyLylu5zjDGvPq?0H)L~-O-1asTlW;4PZxT_EXf|5 z?53j&AKQ+#7*%4Y1r+4E&uCxVQrD>+&D^O5>|vNyHfSCk2)CwS;SI;lojI>l8g$e` zuN^|cMEa~DE!04SMRT8goJ#iy7}Fi0MYdk&s}S`mn~93N>wAu~FI+M|pN<-3=jDO$ z9Z}Q*-$ImZlw zrMU>po8C%H^ZCBQH(fzOb|z;7oU>s$&TwT=DpEWD3d+x%^xO<)q|agXC8Ohs@mv_p2_jN=y4m?NxtddAWB7w)OZ zs8qMJSfEs}c#Qc6x=YMP2lFTayv7(oCJULQ+QN7yInl!TjMBn|Omeb?w=##AI-%wU zqkvq-$l?%>9VZo2M1PIwW{GN^1T7Mgq^^zCIL3OJd`qmS!QDOv*GuR{N$AA?CUk*d z7YWuN*xRJ?9TNH;3BB6|^6@dq|3Ik5BaSLaO8Lc;mkx3HSHvV$N>>%> Date: Sun, 21 Oct 2018 17:16:41 +0200 Subject: [PATCH 02/21] desktop setup --- java-api.iml | 2 -- .../blockchain/utility/UtilTest.class | Bin 2164 -> 2164 bytes 2 files changed, 2 deletions(-) delete mode 100644 java-api.iml diff --git a/java-api.iml b/java-api.iml deleted file mode 100644 index 78b2cc5..0000000 --- a/java-api.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/target/test-classes/blockchain/utility/UtilTest.class b/target/test-classes/blockchain/utility/UtilTest.class index 7dcb7caa4df2e1c10fc4c5cd327808335ed7868a..67dc2a15c8d18caca38462160ee8dfc692dde113 100644 GIT binary patch delta 71 zcmew&@I_#QKD(?u12=;LgD`_4gCv6zgFJ&Wg9;F8F{m-}12=;rgD`^F=$TqVegUDWnc!fxf%3< Xstg#!84MZB7>pV07)&RBWN!ulgE0z~ From 2e5d8d316a1993690c98854d5b866a15c799e121 Mon Sep 17 00:00:00 2001 From: GME Date: Sun, 21 Oct 2018 19:09:29 +0200 Subject: [PATCH 03/21] EnrollAdmin Test succeed to enroll existing default admin from blockchain. --- msp/Org1/admin.context | Bin 0 -> 1697 bytes .../blockchain/client/CAClientWrapper.java | 37 ++++++++++++---- .../java/blockchain/configuration/Config.java | 28 ++++++++++++ src/main/java/blockchain/utility/Util.java | 2 + .../blockchain/client/TestEnrollAdmin.java | 40 ++++++++++++++++++ .../blockchain/client/CAClientWrapper.class | Bin 2284 -> 3569 bytes .../blockchain/configuration/Config.class | Bin 0 -> 886 bytes target/classes/blockchain/utility/Util.class | Bin 3748 -> 3819 bytes .../blockchain/client/TestEnrollAdmin.class | Bin 0 -> 2371 bytes 9 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 msp/Org1/admin.context create mode 100644 src/main/java/blockchain/configuration/Config.java create mode 100644 src/test/java/blockchain/client/TestEnrollAdmin.java create mode 100644 target/classes/blockchain/configuration/Config.class create mode 100644 target/test-classes/blockchain/client/TestEnrollAdmin.class diff --git a/msp/Org1/admin.context b/msp/Org1/admin.context new file mode 100644 index 0000000000000000000000000000000000000000..4e2b42eec80f7c1d93c6abada60613ec82570c41 GIT binary patch literal 1697 zcmb_cOQ_sb7(RFItBp#vr4+S`DpIv$Gc)PTee_|QlVmcvlgyn*X6DXRkW40%_au|Y zO>&V+U0AFOkz$1lVx=w=DuRfMF1pc$AT6lXO;KFvMy#8vsae*V{Y z&d2}#mu`Y-*8z|A3`^8SMNo&R?@A8Zj4#3(dQ#|tjWdw~Gc1@DMA7nxo(Fcany@Nl z3}Gl|8lIyLXc~L-PB(zi{@GZ32i{bCbPpcPFAjN_yQF6RZs7YOlJg{d2$dyFjQN1Wr zmZGYlIx(P^`sQGAAVo8keFRnKnIc2rJT>+r9K*mljUezYE#mF_MG?(KS7;X$u3if$xkI*UwK75l9wV(lLo`F9OZN>?qpBR99XBLGj;@@>R_SWZ5Og!Egz8hCQ{H+x^&L&X|T&dj)u{QZgBZUT&8G(*su{i zph|d_!675*X&4CwZoX|86|x|%*5w8x^Ey#l9$`_in761v^Q(Rs8cjdFNEBF4Cj=~2SC*@ij!aCjY@~w1k{t&_Dbd0d`bEXyw7uGVTKE>}u82`OBKOfJVakvZ3GE%mC( zpvz7+KIyavk$c&8hm^0618v1-iSt(#zcF=Y6dW0c;SmKMk zwV-PnQ>^!!!v*meG9FT@LjHYlV*%|>#EssWd31B;-<-Vv@K;xNo*OF#u^n|)@T55A zfk*BUN%d|l*7A1S?-{B%PJH;@#5T5*)}#NCuXOj zY>=9mnA-Q@%@1_kX^Bdv5*g?t@DoAD=w+3S?j0djZ)hdWW2ZVCu}f zxA(69cM1M+sLC`pNxJOv}k^=N~Eg WU;gHS*<^upjj9Kxg}$i{?LPrOtvA8| literal 0 HcmV?d00001 diff --git a/src/main/java/blockchain/client/CAClientWrapper.java b/src/main/java/blockchain/client/CAClientWrapper.java index 15e5b71..5df0efb 100644 --- a/src/main/java/blockchain/client/CAClientWrapper.java +++ b/src/main/java/blockchain/client/CAClientWrapper.java @@ -1,7 +1,10 @@ package blockchain.client; import blockchain.user.UserContext; -import org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.Enrollment; import org.hyperledger.fabric.sdk.exception.CryptoException; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; import org.hyperledger.fabric.sdk.security.CryptoSuite; @@ -12,14 +15,15 @@ import java.net.MalformedURLException; import java.util.Properties; public class CAClientWrapper { + private static Logger logger = Logger.getLogger(CAClientWrapper.class); private String caUrl; private Properties properties; private HFCAClient hfcaClient; private UserContext adminContext; - public void setAdminContext(UserContext adminContext) { - this.adminContext = adminContext; - } + public void setAdminContext(UserContext adminContext) { this.adminContext = adminContext; } + + public UserContext getAdminContext(){ return adminContext; } public HFCAClient getHfcaClient(){ return hfcaClient; @@ -37,11 +41,28 @@ public class CAClientWrapper { hfcaClient.setCryptoSuite(cryptoSuite); } - //TODO - public UserContext enrollAdmin(String username, String password) throws Exception{ - UserContext userContext = new UserContext(); + public UserContext enrollAdmin(String username, String password, String affiliation) throws Exception{ + BasicConfigurator.configure(); + UserContext checkAdmin; + checkAdmin = Util.readUserContext(affiliation, username); - return null; + //SANITY CHECK + if(adminContext.getName().isEmpty()) throw new NullPointerException(); + + if(checkAdmin!=null){ + logger.warn("Admin already enrolled, skip"); + return checkAdmin; + } + + logger.info("Try hfcaClient.enroll"); + Enrollment enrollment = hfcaClient.enroll(username,password); + + logger.info("Admin enrolled"); + adminContext.setEnrollment(enrollment); + + logger.info("Write admin in msp directory"); + Util.writeUserContext(adminContext); + return adminContext; } diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java new file mode 100644 index 0000000..0f0b9ee --- /dev/null +++ b/src/main/java/blockchain/configuration/Config.java @@ -0,0 +1,28 @@ +package blockchain.configuration; + +public class Config { + + public static final String ORG1_MSP = "Org1MSP"; + + public static final String ORG1 = "Org1"; + + public static final String ADMIN = "admin"; + + public static final String ADMIN_PASSWORD = "adminpw"; + + public static final String CA_ORG1_URL = "http://vps577432.ovh.net:7054"; + + public static final String ORDERER_URL = "http://vps577432.ovh.net:7050"; + + public static final String ORDERER_NAME = "orderer.example.com"; + + public static final String CHANNEL_NAME = "mychannel"; + + public static final String CHAINCODE_NAME = "mycc"; + + public static final String ORG1_PEER_0 = "peer0.org1.example.com"; + + public static final String ORG1_PEER_0_URL = "http://vps577432.ovh.net:7051"; + + +} diff --git a/src/main/java/blockchain/utility/Util.java b/src/main/java/blockchain/utility/Util.java index 6d29293..464c9b1 100644 --- a/src/main/java/blockchain/utility/Util.java +++ b/src/main/java/blockchain/utility/Util.java @@ -15,6 +15,8 @@ public class Util { ObjectOutputStream out = null; FileOutputStream fileOutputStream = null; try { + logger.info("Write user "+userContext.getName()+" of "+userContext.getAffiliation()); + String directoryPath = "msp/" + userContext.getAffiliation(); String filePath = directoryPath + "/" + userContext.getName() + ".context"; File directory = new File(directoryPath); diff --git a/src/test/java/blockchain/client/TestEnrollAdmin.java b/src/test/java/blockchain/client/TestEnrollAdmin.java new file mode 100644 index 0000000..3b27963 --- /dev/null +++ b/src/test/java/blockchain/client/TestEnrollAdmin.java @@ -0,0 +1,40 @@ +package blockchain.client; + +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import org.hyperledger.fabric.sdk.Enrollment; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class TestEnrollAdmin { + @Test + public void TestAEnrollAdmin(){ + String caUrl = Config.CA_ORG1_URL; + try { + CAClientWrapper caClientWrapper = new CAClientWrapper(caUrl,null); + + UserContext adminContext = new UserContext(); + adminContext.setName(Config.ADMIN); + adminContext.setAffiliation(Config.ORG1); + adminContext.setMspId(Config.ORG1_MSP); + + caClientWrapper.setAdminContext(adminContext); + + UserContext verifyUser = caClientWrapper.getAdminContext(); + assertEquals(Config.ADMIN, verifyUser.getName()); + assertEquals(Config.ORG1, verifyUser.getAffiliation()); + assertEquals(Config.ORG1_MSP, verifyUser.getMspId()); + + adminContext = caClientWrapper.enrollAdmin(adminContext.getName(),Config.ADMIN_PASSWORD,adminContext.getAffiliation()); + + //Check Admin Enrollement + Enrollment enrollment = adminContext.getEnrollment(); + System.out.println("admin cert : "+enrollment.getCert()); + System.out.println("admin keys : "+enrollment.getKey()); + }catch (Exception e){ + e.printStackTrace(); + } + + } +} diff --git a/target/classes/blockchain/client/CAClientWrapper.class b/target/classes/blockchain/client/CAClientWrapper.class index 6e94daae18a7925c0c2334b051b94f8f12aaab52..9edb4571625e5b6534dff9a3f0de8c162a354686 100644 GIT binary patch literal 3569 zcmb7G`FGS*6#ia2ZQ2kDP5~*43@TdMLIeuPB3f%J)oDfBf(xjxnangaO~y=yQulq| z_wA3sh0>$v=x_eu-{kT5y<|F*wlf6}CGX|EdvEUd-EIE<_qRU)^y9~NY{Mh!aYn}u zJgRn&smHj^$ApeaoYip-kE_QMI-bN+I?m&Qj;HaAj%Oh?OzG%|HLW(}blAwZp`g}j zrRB8Yq7t8JgR69BHF)aM*H9E_b^SuY4g|Wgeo!!FQCics$;1AOW;VJyA<$yU$-osz zXD`Z2(sZR)Fvr8d@d~`ui-BLXgV3={0$XB9J{QO$(J6llEB)Eky*H^@2g7>moKEo7M-3I78)U5Yq~kf^DS_VZ)d8y? zAVq>cblI|tq2qfc4bN!^G;kAYC~LT+VNSzkGNnulGVWth2qqcikvp0+S8>O{UyxOxNSHO>ykWSvuKPl%>*~ALRILna?|} zBNbwzXWm;g6-V^gt=TAB?_3MlP~^W7B%1Z(p|oa3Wid(=4f7hF=O<4xIpTom<9<1? z>|sac)}|H7vR@UKfjzjxz-_qQz(JfcunQRjyK$?5dvHp_iw0i7s~TQ2@H*Zw@Fw2U z@V0?>)aAPd-oyL+u7MBmp@xqPe2h;7ZmE^+SlM;Y_zsIHsD|6XPTV4}BLbh1ZeYvY zd?u#A&h=$VGfq*%rv^U5=K`B2g859Xn)kuhpmy?4=s3 z6hcDno*Pmd@h(Z%$qfXBvdX%I{;nFnG1jCtJ!*&3e$uhtnnYmdUD9UK96OvUfe9I~ z?Ii4NPXuFSlM?8x*{bSj_(9<48Zhd0f!l{=lmY@;b!Uut9-F%2S51`;I+o}g0*4wl z#I>4DcYV)RPaT1qEEYj%kJ)o0Q65;V*NKMRY2~>4U){Qc18W(${_eFJPCW`wsAhbt zLbq&w-!Ds!#mSg=3gtku%mmu4$}92QoQy9Aw(8E4TsgB;2S|)nfx(8@lb!i`eOO~0 z$D%g8i2rg*tI}xc`4!>{H%+LS*%p~G zVu6YofxB>^j&jpV<(+kv58@C%p%6%}&0ITsuAy0>NcHqxr61SOT7$EN1c9`qNLV{* z>EN7BlNJRp6RTI@bw&g#Fr8|A(|kYoX|&-mj^HTn#xc@%0w;OH$zE~eJgq1qcPv87 z_K<}X|F{WZQN5$$ONs%w7x$5+Mji+Z;QrVH zp=fBO)xsk5eZ7lVcU-w37GNx3{dZXRJ35}Yh7EsqrT#+4&)As0X#wf3)D^YuT)?Kt z%f1C{KHj2^w!}xGt7QQHyDCo2QIL;dJ@@XYdzc`O@Z=aN zJ5DE0;vv#CPC!o)(i9z6fKSCPSIIA6kO5KT7w`agiqZmxxND~E3m9hRrD$yr9>i$| zb%girX!-}cG(5B+;weS-hZ(IbjmJs8J2FVY^tMH8{{hlX))OzM9{ee2H78PnKkC)ptRR?aCWb^o@z`XmgdQb&4uX_TZ=7QCW?Ks49}Z{8=# zd&`mQj$Mn&HnV93MB0(cgXyLg` YJg;{rbZb>PqAIn!J zzVHM1p^T?x#`?y+IX%DU+&(?$-2VLa{Re;wj&oST!z>1K*6F-=+6@g) z81nU6FSdWzwlq8?fhuO(Z1-Z}8AIWZVAqd;+&xIQ@WSwAGj_)NMWwdNQ7)wQk_&NE+urmt7$*Ez?C)1N^wQ_u< z`}2{mM0i>)om4KV(-t@VU?2h!=;AXUPduT!{+MB9{Dr1fN_ey~%3X%7i4Z|a_o2@;xGk`xH}n F@Ef}WucZJ0 literal 0 HcmV?d00001 diff --git a/target/classes/blockchain/utility/Util.class b/target/classes/blockchain/utility/Util.class index 5f9ec2d126444dcb2fb7300f176f0c1fdf3daaf1..3a430d4b0a4d8f4571e48c32433aecc28355685e 100644 GIT binary patch literal 3819 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 Date: Mon, 22 Oct 2018 18:29:26 +0200 Subject: [PATCH 04/21] Register and Enroll User with Test Success to register and Enroll User using default Admin --- msp/Org1/UserJavaTest.context | Bin 0 -> 1870 bytes msp/Org1MSP/admin.context | Bin 0 -> 1700 bytes .../blockchain/client/CAClientWrapper.java | 36 ++++++++++++++++++ .../client/FabricClientWrapper.java | 11 ++++++ .../java/blockchain/configuration/Config.java | 8 ++-- .../client/TestRegisterEnrollUser.java | 36 ++++++++++++++++++ src/test/java/blockchain/query/QueryTest.java | 31 +++++++++++++++ .../blockchain/client/CAClientWrapper.class | Bin 3569 -> 5201 bytes .../client/FabricClientWrapper.class | Bin 2151 -> 2976 bytes .../blockchain/configuration/Config.class | Bin 886 -> 886 bytes .../blockchain/client/TestEnrollAdmin.class | Bin 2371 -> 2371 bytes .../client/TestRegisterEnrollUser.class | Bin 0 -> 2378 bytes .../blockchain/query/QueryTest.class | Bin 0 -> 1784 bytes 13 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 msp/Org1/UserJavaTest.context create mode 100644 msp/Org1MSP/admin.context create mode 100644 src/test/java/blockchain/client/TestRegisterEnrollUser.java create mode 100644 src/test/java/blockchain/query/QueryTest.java create mode 100644 target/test-classes/blockchain/client/TestRegisterEnrollUser.class create mode 100644 target/test-classes/blockchain/query/QueryTest.class diff --git a/msp/Org1/UserJavaTest.context b/msp/Org1/UserJavaTest.context new file mode 100644 index 0000000000000000000000000000000000000000..763a487596ace7b4e5cdb797d3e0af3cdcceefca GIT binary patch literal 1870 zcmb_dO^n+_81-hiyREyZrB$gY60{Nm!ImVOO}4v~QpWZqb`m>r)=4%gh&s08*s){B zKe3$(q+WX9fDo17*j9^F2~{c=4jg*ui9^*rpkARpR2+%`Aue!1jI+C4R5&2SNFI;A zdGo!Qr}^I8_z~OVI@og^!;<<^Pt*oU-&LGs9d)EN@RZQQw%Swzn=NB=q9j@V!1J&} zWnCPJDMK8nsWs2h2I}cDwqNXaHA53U%^D1`_pzxmhARWdG7M9R7rk7z95vO8Y{fAY zSyh}=SL`^Nlyc>M3O)v+OnXe%X5{T0GXv37w#R!=HpTU@16%yQrx~d=#XB9^wujB2 z^o!^`C(%Fo7nxxsCAmvlq3i2`o{@W+cV&wyCE3O5|Zjw}@Ot z@*T~KQY9s-ikgE6z3B_D#f^XkhC5Een!w~45(sb-#aV_S+X6`fHBv#q5I|+>oa|>8 zl_9w%M0$(%Tir#z&n+9Ze1#84wZ)XIHZ#`K5a9z{q+po^{Q_95L!!r$jRqU$$Dl!| zTmxkjsD5rF4Qdtxxt?UMx?(feV{3c>)fUy@`4SETk5SeMLo!37U62h)hgBA&Cke@r zE!51sCYgrL*7`v{m@J}TNSLi=F%p}shqp4&lQNA+HX9L3WY;MHW?2D5tPV5i3)s9B z$8x)|RvZgB0ZK6u9&bHnYGp#Z-OQy~;O?-)&Qfu}3b4Tv>?8(4mTjzahSaxvvYD^9 z*SR##=KBE*TJ*LsB;X&5L;+r+cojglp5=9aZM4#+>M0kRjGS9`q97&F@+v;=k2oqr z^zCps$Pw#i6xLO^Sj$u@3u}WQDu_PtZ@YiXSz)F5wxdShG{%-Vu1lfcSyg2Q#WQ)G3hE%e<0Zw2VgDhmm|MWc%g z8%wU%TCb(00jpI8t|k^*KHqGcVl%W+-0ozuT16|4BvT3*Ezs~7P;2I*P9}6a&4w>S z12Vd$J*jpKj#7z>?RG0S*?*a~zyB#V`t zvsACP{Vq3LZI_8`X;~`sXYffWL5})+d7&~t5?fGmr!teoI0XkL%BOxsah7r7?dhiIr4 za+;nwv7yk$JS+i8-@y{+h#S8i{cU!y@F0OO=?=HGV zO%vG6B6sk^hc|!u=-wZF$B^^7UiaA0GMs&XMDXh0)5-A77cj zq(4Xo7ryvm|1-BX-nx3b@zn#44UtH1{1=gSbUtxq{K3W}`o({(QLNQLKklDKvYbn| f{!x&V+U0AFOkz$1lVx=w=DuRfMF1pc$AT6lXO;KFvMy#8vsae*V{Y z&d2}#mu@1{u7f<nA zHU82wF%tF{By0oec~QV(FsxK0z!u=_#qjszr_~E7B*h|AqU3m+Xp_1WdB~m(ELReJ zNA;piS&FKH>cp5{>YIbfffUVD_7PN_XNn8~cxvoLIfj9A8bN?AErWo8KxUe)mcQIx zvYUB>>N%AanqdRmRlNqy>H#5ln6lMn*0d}Y=Le`jQY;5_8swT3R5+s5;=q8S=px^IXYRpmf-+>i)4 zx^5O#(KIx!t_Q_nTtreKG&}93NN95&+QBJL#9L9{Y(*T*uaG>I=XeltJcU2$}W`~JwBTL{wCY|z#^B$POiPdMq50R=NbEn&YTlYmQzMoV=L zg24g>G!T2n9p)`qZ7cf5Qnotr;IusIzk?EIXmg+h6WBuOwxic1ZSLTM7TWmsRS z)R()ZLN3b?nw(p9a|?%DCOu;38f%~oWqG9N+H$p4BY|8g0TNO`g-kBTH_J}mJ? z-dfN#jVadq&EbN03>^gG5lQuKESB?j+wU2wI8J={-o!hhSWhwTu|&ANc*%&7D7c;>VVWptqJ-IwwW{{x z^|QMVE`5A_^3*GkeR1yvbgSqcauOm_ zXWqTNcm2m}-=1#}KYj7#>Bsj~PMkUX!AGBd|J1H+zdrlR=#BD~->~v0C)RJMf80>u z(F50&<5zmZTbJLzd~3&RUr&cINk{(+Nq2aD?CrI)7k@52@vk{bxO&h}?uTMpPG&p* TNXh^5x2+xSA=5(NREPGTjiETT literal 0 HcmV?d00001 diff --git a/src/main/java/blockchain/client/CAClientWrapper.java b/src/main/java/blockchain/client/CAClientWrapper.java index 5df0efb..fbfdd24 100644 --- a/src/main/java/blockchain/client/CAClientWrapper.java +++ b/src/main/java/blockchain/client/CAClientWrapper.java @@ -9,6 +9,7 @@ import org.hyperledger.fabric.sdk.exception.CryptoException; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; import org.hyperledger.fabric.sdk.security.CryptoSuite; import org.hyperledger.fabric_ca.sdk.HFCAClient; +import org.hyperledger.fabric_ca.sdk.RegistrationRequest; import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; @@ -36,6 +37,7 @@ public class CAClientWrapper { } private void init() throws MalformedURLException, IllegalAccessException, InstantiationException, ClassNotFoundException, CryptoException, InvalidArgumentException, NoSuchMethodException, InvocationTargetException { + BasicConfigurator.configure(); CryptoSuite cryptoSuite = CryptoSuite.Factory.getCryptoSuite(); hfcaClient = HFCAClient.createNewInstance(caUrl, properties); hfcaClient.setCryptoSuite(cryptoSuite); @@ -65,5 +67,39 @@ public class CAClientWrapper { return adminContext; } + //Method to register an User + public String registerUser(String username, String organization) throws Exception { + UserContext userContext = Util.readUserContext(organization, username); + if (userContext!=null){ + logger.warn("User already registered"); + return null; + } + RegistrationRequest rr = new RegistrationRequest(username,organization); + logger.info("registrar is : "+adminContext.getName()); + String enrollementSecret = hfcaClient.register(rr,adminContext); + logger.info("User registered"); + return enrollementSecret; + } + + //Method to enroll an User + public UserContext enrollUser(UserContext userContext, String secret) throws Exception{ + UserContext uContext = Util.readUserContext(userContext.getAffiliation(),userContext.getName()); + if(uContext!=null){ + logger.warn("User already enrolled"); + return uContext; + } + Enrollment enrollment = hfcaClient.enroll(userContext.getName(),secret); + userContext.setEnrollment(enrollment); + Util.writeUserContext(userContext); + logger.info("User enrolled"); + return userContext; + } + + //Method to revoke an User + public void revokeUser(UserContext admin, Enrollment userEnrollement, String reason) throws Exception{ + hfcaClient.revoke(admin,userEnrollement,reason); + } + + } diff --git a/src/main/java/blockchain/client/FabricClientWrapper.java b/src/main/java/blockchain/client/FabricClientWrapper.java index eeb3ee9..5c7a13d 100644 --- a/src/main/java/blockchain/client/FabricClientWrapper.java +++ b/src/main/java/blockchain/client/FabricClientWrapper.java @@ -1,13 +1,17 @@ package blockchain.client; +import blockchain.configuration.Config; import blockchain.user.UserContext; import org.hyperledger.fabric.sdk.Channel; import org.hyperledger.fabric.sdk.HFClient; +import org.hyperledger.fabric.sdk.Peer; import org.hyperledger.fabric.sdk.exception.CryptoException; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; +import org.hyperledger.fabric.sdk.exception.ProposalException; import org.hyperledger.fabric.sdk.security.CryptoSuite; import java.lang.reflect.InvocationTargetException; +import java.util.Set; public class FabricClientWrapper { private HFClient client; @@ -28,4 +32,11 @@ public class FabricClientWrapper { ChannelClientWrapper channelClientWrapper = new ChannelClientWrapper(name, channel, this); return channelClientWrapper; } + + public Set queryForChannels() throws InvalidArgumentException, IllegalArgumentException, ProposalException { + client.newChannel(Config.CHANNEL_NAME); + client.newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + Peer peer = client.newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + return client.queryChannels(peer); + } } diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java index 0f0b9ee..bd1200b 100644 --- a/src/main/java/blockchain/configuration/Config.java +++ b/src/main/java/blockchain/configuration/Config.java @@ -4,7 +4,7 @@ public class Config { public static final String ORG1_MSP = "Org1MSP"; - public static final String ORG1 = "Org1"; + public static final String ORG1 = "org1"; public static final String ADMIN = "admin"; @@ -12,7 +12,7 @@ public class Config { public static final String CA_ORG1_URL = "http://vps577432.ovh.net:7054"; - public static final String ORDERER_URL = "http://vps577432.ovh.net:7050"; + public static final String ORDERER_URL = "grpc://vps577432.ovh.net:7050"; public static final String ORDERER_NAME = "orderer.example.com"; @@ -22,7 +22,9 @@ public class Config { public static final String ORG1_PEER_0 = "peer0.org1.example.com"; - public static final String ORG1_PEER_0_URL = "http://vps577432.ovh.net:7051"; + public static final String ORG1_PEER_0_URL = "grpc://vps577432.ovh.net:7051"; + + public static final String USER_TEST_SECRET = "frwcKfCYPxWA"; } diff --git a/src/test/java/blockchain/client/TestRegisterEnrollUser.java b/src/test/java/blockchain/client/TestRegisterEnrollUser.java new file mode 100644 index 0000000..45a6ae3 --- /dev/null +++ b/src/test/java/blockchain/client/TestRegisterEnrollUser.java @@ -0,0 +1,36 @@ +package blockchain.client; + +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.Logger; +import org.junit.Test; + +public class TestRegisterEnrollUser { + private static Logger logger = Logger.getLogger(TestRegisterEnrollUser.class); + //Success + @Test + public void RegisterEnrollUser(){ + String caUrl = Config.CA_ORG1_URL; + try{ + CAClientWrapper caClientWrapper = new CAClientWrapper(caUrl,null); + UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + caClientWrapper.setAdminContext(admin); + UserContext userContext = new UserContext(); + + userContext.setName("UserJavaTest"); + userContext.setAffiliation(Config.ORG1); + userContext.setMspId(Config.ORG1_MSP); + String userSecret = caClientWrapper.registerUser(userContext.getName(),userContext.getAffiliation()); + logger.info("uSecret : "+userSecret); + userContext = caClientWrapper.enrollUser(userContext,userSecret); + logger.info("userContext enrollement : "+userContext.getEnrollment()); + + }catch (Exception e){ + e.printStackTrace(); + } + + + } + +} diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java new file mode 100644 index 0000000..2d6d74b --- /dev/null +++ b/src/test/java/blockchain/query/QueryTest.java @@ -0,0 +1,31 @@ +package blockchain.query; + +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.Peer; +import org.junit.Test; + +import java.util.Set; + +public class QueryTest { + private static Logger logger = Logger.getLogger(QueryTest.class); + //DON'T WORK + @Test + public void TestAQueryChannels() { + BasicConfigurator.configure(); + UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + try{ + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); + Set channels = fabricClientWrapper.queryForChannels(); + logger.info("Channels : "+channels); + }catch (Exception e){ + e.printStackTrace(); + } + + + } +} diff --git a/target/classes/blockchain/client/CAClientWrapper.class b/target/classes/blockchain/client/CAClientWrapper.class index 9edb4571625e5b6534dff9a3f0de8c162a354686..2a0e140fe9a117c36d604011feccd8bd58e168a4 100644 GIT binary patch literal 5201 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 delta 1111 zcmZ{i+jCP@6vlt&G|5g5o3@imhe-=GT%@Fy+ENM>ER>5N)+z!baxX2RPy!TCt3bG; zs9btf5Pb33r%uGl@WA-&n={V%=HGzND)Q|UE;=KV$y#e?t@W+-eJj5-|ItwV`Qg3$ zKqud($nd5!Zv`~6!9{O7voVm_6tJ0h0=Dq3Gg|}RV_U#>b_DEXSHN!e7zP5WE1i3j z3Fv*DPJ!D7~T=uZx$iz<>zy7FU)Nssj+;GD1zTpGIhouL8 zn-?21d=&l`Z{IM77cH}xZRw!LGJ_^dmYJ4U=rNqM6ggu!YdObx%LOhPE?F+S zv`4jt|I|+V-`WlqXz0A~`({vh z3#U_Ynj{P9ViAj3BHBw?ri^ay<|w~iC{BpRGNvz=`+=Cg@iNKcU3`Up%a5d<>66wf zNXM9ztP?;3xqoTZ_;{I^6kN^<(SF_v9=)urtl;@tAtBU!nV_|$%%pC&L-=d$u1JF} zCM(&hqBb47Lo7R`z(S4c(l1NItXojaST9x^HFlc@4+!3A)KdX|s!^U*(#>gF2b3pzLNo<`k(%8_JJU diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index d40738fa595be7e366ffa5186c3bf74589adb904..be8706591a746b70c3c1e47882404b209bfc6c35 100644 GIT binary patch delta 1156 zcma)4%Tg0T6g?dtoy0*PM4lofnh-!U;Ta`}JOl)zps1*zGK6LbOlHE6@L2H$Zp;r@ zet{NN7A|ya`3L@ht}Oq+^7e!(EGes8^zGYy&pr3~z2K<@B ztc0P?ve$$y?5Nn+GFd}JQ&xtdRkyRLAywVY?hM4^{e8VrYj-1Riri2< zHV{*gfyq!W>y1S%TknzH1OMsXqrgH|!8WK_p~B0`(9vw!BntbT>g^@T%;I?TZaagn$#k-Y{SA%xL^2s+V)ZbDqf6(`bH-f<`+ zopqSn;2{P-aY*(qiVG^Nl%3R~PEj6IA%-6E_tWV`ANk5SvivZeehko$Y{3@YF1ovA z3w&pa;ERr?_^OIHThgodd^JVXCZ(af2;WJkd`|ojyu?~h*#{|qnOA*@^Ej^{AJih_huih#E delta 489 zcmX|+%}x|S6otQ{2Wq-)m;JBVm0P7YccC=xWk|tqev)^tXzEV%Dv+M-aJnkl542HE>V_qR^PDZf<}UrxL$Rt(l+soW!;f_ JHQusBcn4o0Fwy`3 diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index 2a8480ff5ad1c1c5d468f72e0e7bf7d352818426..f99ed3ca73b3cc0677b61789cafc390618f78ec4 100644 GIT binary patch delta 32 lcmeyy_Kj`BZbruZ$$JsbXaJE5Hn-`W?|-8tda^0sSJt?EeuKwiy2fImN6(ZEN4(*Sk0h5`4~qn0QGYU Axc~qF delta 44 zcmX>sbXaJE5Hq9yW?|-8tdjB!sSFAXEewhbiy2fHmN6(XEN4(=Sk0g|`4~qn0PuVY Ak^lez diff --git a/target/test-classes/blockchain/client/TestRegisterEnrollUser.class b/target/test-classes/blockchain/client/TestRegisterEnrollUser.class new file mode 100644 index 0000000000000000000000000000000000000000..ddb4a8dc984d7d48dd540360d4f42851153f7838 GIT binary patch literal 2378 zcmai0Yj+b>6y3K;JLxc`CA5^5S1UeRC>>OPs$4sF1Exc8nj=bU@aKKtIAzyJC3F91{cUdM6FXt+oOH*L>#{K#B#>d`Hy;?^T4yy}O6=PlQrkQ-)qYq_6osM&6Sn)vO!_~XCQ;XcdmpyH3IrJ2I79-1Eo3&~!Fo?Vcn|&bMw;F!rt~)Dk z-6d8tz8^%EI1{SARx4H;#JmL&<7F-pvbYEOV$cX}=b9^sA8HTbq@-)$RlKHfEQx#I zm)%MuZ0%&SR!Rh>8b!67X>Qc&=clKq&YhhMHmZ}p6Xm8)pPy0~O-6`2w*zI_szhRt zLT5BM2Fj=ysKRB23Fn=lD;Uy(n@m>fFtCa>10L2Cw0VY_U0g7*E;=89ftn0oAT;nY zUQrm_*^?^`*DDDx^hVsck=%%ZIvBWtK*NTCFLBqvJ$$7woapw5(;}a;Ig@iWn0N=5#+o9%*tBy@xB~&r36i$vMD7DG8Sks7H&s+!t zQa^H?`b9a4gNYpEyBpmzmpSvagpO4bbhj9te{SR?ugCxAl=Rk}XhsgyR@{-X7rIEA z8lC2>bvZC?k`Rl%61H4s1ubrp@l?##Yd1(Mt@6~ne{6g=I&`MNGtNf1d8-Hj3K!aJ zx;swW&|PxX_)Owdn;5%2HYq44HVU4$bnrPhD-Vq8mxCRk#N23gSC4ra7cuu@nA_Ep zBnN@mao_b2wfNQ*-Ybj~T*9S&p%n>aYs z$)Sm%CWdJ#(xF^BVRKk)=zOG!qp{g<$jnYOG4hakrtkxP<0~1Gs=eT*pBaF~o~?nEpo@;V^!}5&S|R1&!;_=zkxRgsy{r5l+)L z#W-c0s?m%`7O=2spxYWJh#UvAN%;SCKrC=D0WxWo_A mfHyg3aCxg&qtwZ-J3IOqFa3dj=@+TUG47X6=`Bhfc>6yCJaqd2 literal 0 HcmV?d00001 diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class new file mode 100644 index 0000000000000000000000000000000000000000..471931668681cc36dc65f6acea03567c85826225 GIT binary patch literal 1784 zcmah~>r&fB7(MG4WXlRBhTs6XkfbRlfhb8SZ84<*H}qym69Xx|jw}na#7M3zcfu3( zciI`lG&6mGK1H6S?ODktB5qQ9=3DKz-}RhtrN93E<4*wd_({hY=5@S}1q~mh@L>wm zIzGaphN2D)OGpBhk zjO04J3KSj`VAR0#cbVB+48>ii)FS0*)S`P$|zXy`AFNa z+`9STne8+K>A5@`uxba=6}S{n)owYyxkXX(+`xIJVvL<`_^{b)`ugc~OR+qaz?W{l zxJ>u6mB6x}u3OCzD)OS?E3!l~9=F{<9yr^wC5hyU>w1BuY9lDaAyNBnGGcbYODz$G zh#|e=wSC)JlZua_6NGQ8?hTA%LPOcWIwl0J#0arHcURWiewf5$gWQp5j>KIJ8wMWY zYk?bahd1J`vOF^I7!?C~ToA~I$cGq5y|1=qqo$b5^r)U%oHDS9EhV-MJi#{_b_{%r z?>Gdn+)pSn@V)9_B396ABW2(R{7A4~IX|rKJ9Z#28FPA_Qh{rIw_w$3aRg8B@mP1d z2NyBU$HQ^DWN>J1apnE+9jg|b7lBfte-8RJGygMmQ-!x0s2e&QqOs=rJ%9zy6=qJ) zB{EdkQ7%gWUe$Ps zy_9S<+vIf$!i%)&TQ(U<*PWo}JRA2aHLO;Pb-p205m)&Z9phV9Kv$#7r!#!!rJaGL${}3hvk@8KGOlnZFh%D?==_qwlGGKCk;o-;1IHLFzks%L z>j<~qoBFx78NkkBxzVGcsW?Ihueu(-oDg}W!PU8TGFrE{alIR86z1s%T#lo51U L?(T7yz Date: Tue, 23 Oct 2018 20:23:52 +0200 Subject: [PATCH 05/21] QueryChaincode Test Don't work, grpc Unavailable ? --- .../client/ChannelClientWrapper.java | 21 ++++++++++++ src/test/java/blockchain/query/QueryTest.java | 32 ++++++++++++++++-- .../client/ChannelClientWrapper.class | Bin 1015 -> 3060 bytes .../blockchain/configuration/Config.class | Bin 886 -> 939 bytes .../client/TestRegisterEnrollUser.class | Bin 2378 -> 2378 bytes .../blockchain/query/QueryTest.class | Bin 1784 -> 4627 bytes 6 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/main/java/blockchain/client/ChannelClientWrapper.java b/src/main/java/blockchain/client/ChannelClientWrapper.java index 5db76b1..bfd2f3b 100644 --- a/src/main/java/blockchain/client/ChannelClientWrapper.java +++ b/src/main/java/blockchain/client/ChannelClientWrapper.java @@ -1,7 +1,14 @@ package blockchain.client; +import org.hyperledger.fabric.sdk.ChaincodeID; import org.hyperledger.fabric.sdk.Channel; +import org.hyperledger.fabric.sdk.ProposalResponse; +import org.hyperledger.fabric.sdk.QueryByChaincodeRequest; +import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; +import org.hyperledger.fabric.sdk.exception.ProposalException; + +import java.util.Collection; public class ChannelClientWrapper { private String name; @@ -25,4 +32,18 @@ public class ChannelClientWrapper { this.channel=channel; this.fabricClientWrapper=fabricClientWrapper; } + + public Collection queryByChainCode(String chaincodeName,String fuctionName, String[] args) throws InvalidArgumentException, ProposalException { + QueryByChaincodeRequest request = fabricClientWrapper.getClient().newQueryProposalRequest(); + ChaincodeID chaincodeID = ChaincodeID.newBuilder().setName(chaincodeName).build(); + request.setChaincodeID(chaincodeID); + request.setFcn(fuctionName); + if(args != null){ + request.setArgs(args); + } + + Collection response = channel.queryByChaincode(request); + + return response; + } } diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 2d6d74b..18b298f 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -1,14 +1,16 @@ package blockchain.query; +import blockchain.client.ChannelClientWrapper; import blockchain.client.FabricClientWrapper; import blockchain.configuration.Config; import blockchain.user.UserContext; import blockchain.utility.Util; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; -import org.hyperledger.fabric.sdk.Peer; +import org.hyperledger.fabric.sdk.*; import org.junit.Test; +import java.util.Collection; import java.util.Set; public class QueryTest { @@ -19,9 +21,33 @@ public class QueryTest { BasicConfigurator.configure(); UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); try{ + String chaincode = "mycc"; FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); - Set channels = fabricClientWrapper.queryForChannels(); - logger.info("Channels : "+channels); + ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); + + Channel channel = channelClientWrapper.getChannel(); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:7053"); + Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + channel.addPeer(peer); + channel.addEventHub(eventHub); + channel.addOrderer(orderer); + channel.initialize(); + + + String[] args1 = {"a"}; + + Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"query",args1); + for(ProposalResponse pres : responseQuery){ + ChaincodeResponse.Status status = pres.getStatus(); + if(status.getStatus()!=200){ + throw new Exception(pres.getMessage()); + } + String stringResponse = new String(pres.getChaincodeActionResponsePayload()); + logger.info("RESPONSE : "+stringResponse); + } + + }catch (Exception e){ e.printStackTrace(); } diff --git a/target/classes/blockchain/client/ChannelClientWrapper.class b/target/classes/blockchain/client/ChannelClientWrapper.class index a349f42cbaebbd5253f4a48a96cb91417a4ee192..f0e517c0bf1f6b3d35711331ca021d5fd9c94f42 100644 GIT binary patch literal 3060 zcmb_eT~`}b6x}x&GB8YODG0`@wUj~#9}&c=K*16~&=gugQ0qr0lOYTY6PzSfUi?kE zmPD5iKKkJA@NejH-;hnZ}!i-4X$nssc;t?YWn zG4~4$=kiX;Jft$)&6xhT%!&`cuu&Q;T9tL5Pj6}@jFFNp70C8_&UUT!>QUbEwvD{w z^Dmi(vtxL+e6I_Y%D!C|NQKz1bG}SKBZ2xSfgy5e$?ZO(LL3qpp@vp{Pt4h_U6~hn zmTLCA6&@{G8rc!J@om-eP8Lt-s_h0L-3YVVR1;5|snzpTt=LW`TXG!Btk@-&$-L$# z++@Only>e_{ZGN0Vt7U7rYA%r>%gYH)ooBY!mSh1$r_pvL zdToiocF!swm)tT-sxR=h*|EOdg<9jGsMp(aC}J+k`eUzjTq+yRX5H-Uyo}sd#V`*a z8OOd}6^~Us5zv;uH?3nC+_H*I6|j^LXF5K|7xY)hQ+%!B8y(L;OdclVprZgw z#~zA0_F=0y&~XU%r=jLk7Dj-T|DvQf@&~L{fvJe%xT3;nFaku&jfxU@5V6r}Bs8<; zJ~te@@X#w(kJviTGA(ewC48fd&H>{odD8DS2PU*rb;!o&w`TV1=)SkQ5^Q9l-i;vF z*e1~LTHpDBY_P1KQ#u!I>5Aynutt@ORof}Z`$aul>1({MysTrC%NCo+FfLEj-J41%Uw^_NrLbd(-p|R ztPk6s;g$`*v%l!SGA1l$=3prm(%~b65~^?@IxE3n%7tr9wse79WE8F{uq*B~wyG}v zXaRA=WEbNqCL5VQvzKvh11}Erb9|L=8O}mV(?3J}=xkWU!bH%Pa)D{r--G;PZ9r#@))ES zeRLLNtKc>|Xt;~v>7fqkRXV`ey`m;RTrw2Be!yb>N`@>>n|CqDS^E4Jb*r2g7_fK^ zZ8aojlwYBa*3e!<$4pyNNm8gKm9ZK+cgO#b%kdiYT>@fBrG{%WiDW`LtoS4c(9ZQe zhIxnvhDkNW)d&fuF^O@^F-MZ{YGC$^@B%U2q(&;--%VO_HB5Azy58|MD89x~j4=>% zl#gSAsm*YwOllx`o03UNIwAhXq>3q(;AsjHRQWFM<2|lpc%RP){%Qtaan`6{nLqJg GBKa>D(Ni-3 delta 418 zcmZvYJx;?w5QV?B*ETjwaDs_L!e4+QF$E1Zcc6e%Z~>|u!ZmjQ34}z!0XPp*I>g&e zD$C8AnbrGtXWwtV&aQs`zP^E5E^`u&y_|SCEl4@bIM0~B-LFmiVwa#*u^;} zT(os^w~80bN9KZ3-4qicpSs9fLzP?AV%TFK-Pd%ZYE+Zv9rGG&r8EtPj-h(DF)-pl zlcC~J+J&Q4mo9thF?A0ecj2lRo^Z5#SyuAbH;9?Oa9QZi&aWpNrpKFALL|?W9jtQ=e z`rTOIgs^OFo=RheiH-zL2}_~O|FZc&_XO$;_(f@@3(z10{~(rqCD3FNUdcFCy}TeT zZf4Sr!z5D7Y^-gYxHnbY)f6}*tk^{bDC#?e)q&warc9O_6>60UoKHU|r44M(9_hQn z>&AEYx7Xuvls*h4s&M#PAecQl^P39R;DX>Waj?#gz&}~Hm^ADRxV2Z%+(xRb9%FFH SHfvzLiyiFpMA&0>u>T8t4nBtf delta 284 zcmXw!F-`(O7=_=z3+#j?SV5(zfFc44=mjRb6D5IJGK5&}4ZMPtH8FbwS}R)%4#0sd zER2uc(7gQr_ujle^BMe98vDQR9e_tXRN><)z;%G$M`QYSBPb>AX`;{lbV_JLB8M#>12cmF122OhgD8U#gA{`>gEEk%#URFD$RN&O!63ol!63lbV_JLB8M$612Y3Z122OBgD8U_gA{`hgEE5%gBFly$RNgG!644y!63nq#30F# a1C;G#kYng!kYVU$kY$+2pg4IR#~J`>)(V;c diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index 471931668681cc36dc65f6acea03567c85826225..fdea080a0a09d0eca6d918f90fa7fd0a28cb612f 100644 GIT binary patch literal 4627 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 From 85247dcb4647289b67f1ce4b7470d54a8863ef7a Mon Sep 17 00:00:00 2001 From: GME Date: Tue, 23 Oct 2018 20:47:58 +0200 Subject: [PATCH 06/21] Update config port --- .../java/blockchain/configuration/Config.java | 2 +- src/test/java/blockchain/query/QueryTest.java | 2 +- .../client/FabricClientWrapper.class | Bin 2976 -> 2976 bytes .../blockchain/configuration/Config.class | Bin 939 -> 939 bytes .../blockchain/query/QueryTest.class | Bin 4627 -> 4642 bytes 5 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java index bd1200b..190bb05 100644 --- a/src/main/java/blockchain/configuration/Config.java +++ b/src/main/java/blockchain/configuration/Config.java @@ -22,7 +22,7 @@ public class Config { public static final String ORG1_PEER_0 = "peer0.org1.example.com"; - public static final String ORG1_PEER_0_URL = "grpc://vps577432.ovh.net:7051"; + public static final String ORG1_PEER_0_URL = "grpc://vps577432.ovh.net:8051"; public static final String USER_TEST_SECRET = "frwcKfCYPxWA"; diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 18b298f..0507e26 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -27,7 +27,7 @@ public class QueryTest { Channel channel = channelClientWrapper.getChannel(); Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); - EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:7053"); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); channel.addPeer(peer); channel.addEventHub(eventHub); diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index be8706591a746b70c3c1e47882404b209bfc6c35..904b4f6332f8d96265bf963f5812a8f754923092 100644 GIT binary patch delta 14 VcmZ1=zCe6KE(@c@<~$Z7b^s($1SbFh delta 14 VcmZ1=zCe6KE(@di<~$Z7b^s(w1SS9g diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index 78fe39e4ae26fb3ae6d8146eac830e9571f4fb1e..8b1c44ac7c42d84391683170d8703cbfa839cf94 100644 GIT binary patch delta 14 VcmZ3@zM6eQD-)x|<~Al(MgS!61U3Kw delta 14 VcmZ3@zM6eQD-)yn<~Al(MgS!01T_Ev diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index fdea080a0a09d0eca6d918f90fa7fd0a28cb612f..ef729d8e22791f64448151805e3c6eb14ad88bf9 100644 GIT binary patch delta 595 zcmWlUNlcSb6h_ZaXy5DW6Qj`xt%=d#Lc2h%#4d4VV%(UhOG!hT5>u%uh~iXno>1{Q z;Vj~e0@e`~6=xi97IDCN);$~J|2F4-_vYs2T$5j)pYHhA+6Ii}uX0hLm`$Z%j%2Q+ zN->Z5k_Cc=3dtf#+SbL2YL?ivRI*I6T(N?cl2ww`Hm;GZm8`R|MzNj^78@;UEj9^^ zWV2+8B3;c^Kik;ur;Z&KI|aKG!`Q7TVvk_2ZT2aKv)`tAMUVqN#?T-*s0dLZIb`c$ zizAAo9JAZU1&y{jAvo#aO(f&-Sjr)9QZf}Uh|Y?Zl*S4YNz;_m$M~IUr#VyO^k#(` z1ud?g`>^1YAR{;}I3qYKm?k(UIPdBSnq4o`l3kpALDOmmctV35^wjcLYGSl9Iwe+K zA-Jfy#AP$V6CTp$;G0=hQW`BQizPHyxauC)T%%ocog1dkQ>Y`O3P%fWYHo4cbbChl z+(B4#hr335BY_U?xi*^nJkUI(Q}c+&nkTfI>E5Bir#y4*G|zeADr#QRrFliSL&(&s z!DeJuU!{4?8;iH5)0^A>9X*eCLPeClQB$nd}5S fnqT}j#bRLgABV7eIcU0a`eho#4CQHJd{N$iLkpa` delta 591 zcmW-c$xqWk6vsb5LOau8V$gViHqmJCKzgWJ2^{fmV!UwiU~1EpG^JI7C~n1l1;ugS z#SKM8tcs$dxQqL~*ImTr5AZ_#jhD~+zRAmbpJ^>IC7Hg#?jB$Qf0TJ81~w_6&fmOXyWpg2 z=KfXCDL5s_3Qh~o2&x2U1zoP0pu<%%o%z%9&uPw^;hvxrbZahf(NuZDBQH7lY8s-| zkyI*{)bw!K-KM!hujVS(Oq-`nmyazQC%CS;!A&#ZDfPJzVa+XWn}D~%e}_Kzyyht{AP;dAEEilFNeZJq&^Z#MpE(6 Date: Wed, 24 Oct 2018 18:02:17 +0200 Subject: [PATCH 07/21] Test query Access Denied --- msp/Org1MSP/admin.context | Bin 1700 -> 1695 bytes msp/toto/abdel.context | Bin 229 -> 0 bytes .../java/blockchain/configuration/Config.java | 10 ++++++++-- src/test/java/blockchain/query/QueryTest.java | 4 +++- .../blockchain/configuration/Config.class | Bin 939 -> 1077 bytes .../blockchain/client/TestEnrollAdmin.class | Bin 2371 -> 2371 bytes .../client/TestRegisterEnrollUser.class | Bin 2378 -> 2378 bytes .../blockchain/query/QueryTest.class | Bin 4642 -> 4627 bytes 8 files changed, 11 insertions(+), 3 deletions(-) delete mode 100644 msp/toto/abdel.context diff --git a/msp/Org1MSP/admin.context b/msp/Org1MSP/admin.context index 3de9c8c9519b2852a335088aa84b4a7e0039210c..0e3ec729dd6ec68cd9f6e4837608711d57bacf30 100644 GIT binary patch delta 502 zcmZ3&JD+z$F{8AG@F0O{YA?fA5 zZut=|A+DyrA&!+`u`J)op-d6szLicTDcOc)5zhL7CYCPd0md1Q72et*si~sWVdd^zl`cm9CZ#^6&S3?WZsDZ{*|}xq$@*bAmfl5K zh2fc#S(t65GJQ&evn<2P$}`iwEEA)=L$d;ki}E5ZL-Qv`GrLFWSLGNNb7h)Z$c^Cu*x`h-ayJ%~BBsqE(_>~qUr&BRK?4`)uTxp)Xbql!IIJDY4&e<|EvM+RDc4A;T)427f>E43<&i&4B{yth5*VHeo9HuA+AP#E{^5C zZut=|A+DyrA&!+0vCzq(OcCLpsoC02m5HXl=HWRxelDiTWkKn|p6Mak&K~}SMwR83 zCi$-AS)~D`6%{$5rP`LxramRv&WT(`MtS;1Mj6fl&PAb#F523Wx$Y^Yg}G)H<=O!T z<>8ZAm~ExpBTG!ev<=OToqY_mjhqWi%yP3T61}}#TqZ{|yGMB%8is^&nH3j@c_js8 zqob4E+D+gdB2Vg`DNZBe5;HGW~q)A9zR2ELe)wlzNR{X*C@cjPk z4OtAZE{s!Gbw+KsZKSY0^<(cWQ^znQnZQ)S43%=NWrmf!;2niQTZ^27w)IZJ0;@_J zjjWx$!4nb*bF#r1)6n;6BVDM)`Qa%TDr*X&!XjuTVtEyZKiHeHCi-JJI#P=bjd#}D dC^9UE{+6{7Iq|OZo*`w&?zek{A;Y31<3F`ZNl*X) diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java index 190bb05..c7dce62 100644 --- a/src/main/java/blockchain/configuration/Config.java +++ b/src/main/java/blockchain/configuration/Config.java @@ -4,7 +4,7 @@ public class Config { public static final String ORG1_MSP = "Org1MSP"; - public static final String ORG1 = "org1"; + public static final String ORG1 = "Org1"; public static final String ADMIN = "admin"; @@ -16,7 +16,7 @@ public class Config { public static final String ORDERER_NAME = "orderer.example.com"; - public static final String CHANNEL_NAME = "mychannel"; + public static final String CHANNEL_NAME = "mychannel_mycc"; public static final String CHAINCODE_NAME = "mycc"; @@ -26,5 +26,11 @@ public class Config { public static final String USER_TEST_SECRET = "frwcKfCYPxWA"; + //TEST + public static final String ORG_PEER_URL = "grpc://vps592802.ovh.net:9051"; + + public static final String ORG_PEER_EVENT_URL = "grpc://vps592802.ovh.net:9053"; + + } diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 0507e26..7f5ff95 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -21,13 +21,15 @@ public class QueryTest { BasicConfigurator.configure(); UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); try{ - String chaincode = "mycc"; + String chaincode = Config.CHAINCODE_NAME; FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); Channel channel = channelClientWrapper.getChannel(); Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG_PEER_URL); EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); + //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); channel.addPeer(peer); channel.addEventHub(eventHub); diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index 8b1c44ac7c42d84391683170d8703cbfa839cf94..e556f14213571e405e2aa8de7c15f26833b4fac6 100644 GIT binary patch delta 433 zcmaKoJ5K^p5QWby!rmys!~_!xANWF9g=GN+v{~T>F|bP(ALSOtXoW-#t(CPQ`wwib zZ7fV|EG+#e{sH5#Hzrm#Co|uioSA!{^kP{Q6MA~1Ap>ew13t-Bmy!u6U3 zfjl8{;}5gh5|jFY z?KraSD^liUCM~D#HY77+Y}*c#IJYY~%M{olOoxjUQ1O+~SJJ44JDSQFo>3#ruvZaz zBAp{;-wkxSk1Sz1c%Xf9gHL)tB+Ol056)`&{BUqnu38n-%3TdFbN%z%TGcG`6aSqT zk%q?K2PA?=?afGG9#IftOf)PYg~dO8nkNK4fORG4M`kmt?2B;+&RAoOhjkPgtaC@$ IVAYWQ0ijA$*Z=?k delta 312 zcmXw!y-ve06ot=iD6vWeQ&#?eTWFh7*iB;5O0845LX3F?9)XDmsPY(03<$x1#KOSa zup`8&Ef(M7&!5hfpVecWe*M0^0~q46g$PG6j$@oG(!qUOuu{6~Oraxa>S8*!3a5f~ zAFG+3&u>dtD4Yq_a$POm>c&kJx&(YN&bR=2g5)1qJv9n_l6<7CHIpikjLjrto0o+l z>nyc_Z({Gvu&b|dF4*vk0tofP#dj(fbtVtdCbsHVxstp3M?PEFL4%(Hk~)b#Mgjo^ jp4((SPT_2}Um#Bm4eG$EhY@y}lOSLZ`@9Jbymj~o>aRBR diff --git a/target/test-classes/blockchain/client/TestEnrollAdmin.class b/target/test-classes/blockchain/client/TestEnrollAdmin.class index 98cb24a4f6674995b7a95e8447fd6cc428d31016..5d5312dda3ecffb51eb8015ad106be73a90b42b2 100644 GIT binary patch delta 14 VcmX>sbXaJE5Hq9yW?^OnHUJ|*1HS+O delta 14 VcmX>sbXaJE5Hn-`W?^OnHUK061K$7u diff --git a/target/test-classes/blockchain/client/TestRegisterEnrollUser.class b/target/test-classes/blockchain/client/TestRegisterEnrollUser.class index f8d05b2c908c5d79217e38d1544e967e3a6ae037..623e0789fc3ef40c2702b5f095ec62e4d25defc0 100644 GIT binary patch delta 14 VcmX>lbV_K$TP8;T&F`3E*Z?nM1+4%8 delta 14 VcmX>lbV_K$TPDW*&F`3E*Z?pi1_ioj#i?ia&+j^T@fYJOgH3BBHC>6|> z%#lnsDPyi=o?yO-WPxO%UCT`>SY)e8$zsV8lcg+^ESIdX98V!z*4Vh}yPxWw=F&hX~u`P>D?HNDkFW3bBj z6Ozy%IIf-Pw+fmBCj>#kNx>;Wj^MQ5jCLky)RwHK(5azk73Zw}j(C+_;!hSdE6#Jl z%5iuGUNi_VEX&RF78Usl6fIoR6BUaJKR;=qg~O#eZ>P>t-`Qa*Fzp@yNbs=(Vi7g zd8T;I3xfn}rgT}uLn2MZOJ3P{ZFPo4^?O67Vk~bJ?|5&k50(_}sE>S7e5O%^))0Tk3Tec#Hh*>}mPF+<@S_f#=_*u0DN(LD36X#~DkO zj&Kq~m_i&rozirMQOXD^b#}Fk)On2}NTU9$B-%-)TL=A38~RBqzZk=BGJ+kE6AZ^O I#$`tT1>rKbK>z>% delta 700 zcmWlXS4>nv6o$V`*qzH|#1f6bs)(W}7}`SE_=Ha;Modh^Hzgagfkb2tAc_saUQlst z*g;fO6mYGmh}f}U7c2HIKKR6oaqi1E|H(}L^PikiF|{#e9sgQdfmC`djbe+rlnCaT z%r_~uSinM)MS{f^CQD4p>~pC_ITf~AX0qI5g~du%nXEQhW6QNB>rB?$veIG$8*OZ| zQDtMZK$&bY*=kW%&bCmtvm=yhcG}n_*ljU_Jr)`473{N%{T8FBu~n^wivuB~P$xKO z5l^wnA^SXRqu$~ONA1_g1Pyj^TyVm`neWfd^%WXKO!gP%CVJ<1bMkzN`F_|~ z%qsE~PV$y`r}>JC1s5b2xuhmK+)=FtA+t+!^1KBFzI@4L+H?cS71||Nxu&Weu`08b9N1b<0hLV>S%yuNlzZgE>lrzf(5J36D}F83t&>6AR+ zq2v+mYNj*V^_V9*v*anyba2UYx+E`nX%MfftRX5csIMh?#cLaHRHrk1z+1W{>AaJ? z=Yy?2s$OSe_$NL~zR)fBD*48D$qzgRk!q?D>5%;7m&z7{f`1#hwX;igh4l~AiB2 Date: Wed, 24 Oct 2018 19:52:24 +0200 Subject: [PATCH 08/21] Last hope test --- .../admincerts/Admin@org1.example.com-cert.pem | 14 ++++++++++++++ ...79f1565b858048111bc01cb46ac33c77fc94011f7b89_sk | 5 +++++ src/main/java/blockchain/configuration/Config.java | 6 ++++++ 3 files changed, 25 insertions(+) create mode 100644 msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem create mode 100644 msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk diff --git a/msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem b/msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem new file mode 100644 index 0000000..574766b --- /dev/null +++ b/msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICGjCCAcCgAwIBAgIRAI78GIwc1BJbESAVBAu12zgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjExMTQxODI4WhcNMjgwMjA5MTQxODI4 +WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ +MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHc7mBPjvRt41DHUQOwBmPdosuyBiR5q +9ODr4IRm0nSPy8qNMOwNzjq+FBlD/h5q36rHwGVmyK31BlIX3SN6u8KjTTBLMA4G +A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMsE632KJqem +rpj0tWcvTaIXe5aa0DPs8dxIkaPosSv8MAoGCCqGSM49BAMCA0gAMEUCIQDxrPnJ +H6UDSPyTAkIZ156RRuAXm3S3quTrXYAVEP1bNgIgNmaykOaIbTBTw7LSv8zPZopP +5XHsa6MEFFL0KM6whQk= +-----END CERTIFICATE----- diff --git a/msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk b/msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk new file mode 100644 index 0000000..8151aca --- /dev/null +++ b/msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2KnGkVeiwErPZq2n +WX0AjHkS+XOx2sqON1n4kiTw5QuhRANCAAR3O5gT470beNQx1EDsAZj3aLLsgYke +avTg6+CEZtJ0j8vKjTDsDc46vhQZQ/4eat+qx8BlZsit9QZSF90jervC +-----END PRIVATE KEY----- diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java index c7dce62..9ef898c 100644 --- a/src/main/java/blockchain/configuration/Config.java +++ b/src/main/java/blockchain/configuration/Config.java @@ -31,6 +31,12 @@ public class Config { public static final String ORG_PEER_EVENT_URL = "grpc://vps592802.ovh.net:9053"; + public static final String ADMIN_FILE_PATH = "msp/AdminFiles"; + + public static final String ADMIN_KEY_PATH = ADMIN_FILE_PATH+"/keystore"; + + public static final String ADMIN_CERT_PATH = ADMIN_FILE_PATH+"/admincerts"; + } From e9c8d87695b857e6f8a3fcfa0d0dcc55ef1ebba0 Mon Sep 17 00:00:00 2001 From: GME Date: Wed, 24 Oct 2018 21:18:36 +0200 Subject: [PATCH 09/21] WELP. --- pom.xml | 5 ++ .../java/blockchain/user/CAEnrollement.java | 27 ++++++++++ src/main/java/blockchain/utility/Util.java | 47 ++++++++++++++++++ src/test/java/blockchain/query/QueryTest.java | 21 +++++++- .../blockchain/utility/UtilEnrollTest.java | 37 ++++++++++++++ .../client/FabricClientWrapper.class | Bin 2976 -> 2981 bytes .../blockchain/configuration/Config.class | Bin 1077 -> 1263 bytes .../blockchain/user/CAEnrollement.class | Bin 0 -> 845 bytes target/classes/blockchain/utility/Util.class | Bin 3819 -> 6156 bytes .../blockchain/query/QueryTest.class | Bin 4627 -> 5329 bytes .../blockchain/utility/UtilEnrollTest.class | Bin 0 -> 2077 bytes 11 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 src/main/java/blockchain/user/CAEnrollement.java create mode 100644 src/test/java/blockchain/utility/UtilEnrollTest.java create mode 100644 target/classes/blockchain/user/CAEnrollement.class create mode 100644 target/test-classes/blockchain/utility/UtilEnrollTest.class diff --git a/pom.xml b/pom.xml index bddd040..38cffd1 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,11 @@ log4j 1.2.17 + + org.bouncycastle + bcprov-jdk15on + 1.60 + diff --git a/src/main/java/blockchain/user/CAEnrollement.java b/src/main/java/blockchain/user/CAEnrollement.java new file mode 100644 index 0000000..f923bab --- /dev/null +++ b/src/main/java/blockchain/user/CAEnrollement.java @@ -0,0 +1,27 @@ +package blockchain.user; + +import org.hyperledger.fabric.sdk.Enrollment; + +import java.io.Serializable; +import java.security.PrivateKey; + +public class CAEnrollement implements Enrollment, Serializable { + private static final long serialVersionUID = 550416591376968096L; + private PrivateKey privateKey; + private String cert; + + public CAEnrollement(PrivateKey pkey, String signedPem){ + this.privateKey=pkey; + this.cert=signedPem; + } + + @Override + public PrivateKey getKey() { + return privateKey; + } + + @Override + public String getCert() { + return cert; + } +} diff --git a/src/main/java/blockchain/utility/Util.java b/src/main/java/blockchain/utility/Util.java index 464c9b1..621e99f 100644 --- a/src/main/java/blockchain/utility/Util.java +++ b/src/main/java/blockchain/utility/Util.java @@ -1,10 +1,22 @@ package blockchain.utility; +import blockchain.user.CAEnrollement; import blockchain.user.UserContext; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; +import org.bouncycastle.crypto.CryptoException; +import javax.xml.bind.DatatypeConverter; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.Security; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import org.bouncycastle.jce.provider.BouncyCastleProvider; public class Util { private static Logger logger = Logger.getLogger(Util.class); @@ -84,4 +96,39 @@ public class Util { return userContext; } } + + public static CAEnrollement getEnrollement(String keyFolderPath, String keyFileName, String certFolderPath, String certFileName) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, CryptoException { + PrivateKey key = null; + String certificate = null; + InputStream isKey = null; + BufferedReader brKey = null; + + try{ + Security.addProvider(new BouncyCastleProvider()); + String keyPath = keyFolderPath+"/"+keyFileName; + isKey = new FileInputStream(keyPath); + brKey = new BufferedReader(new InputStreamReader(isKey)); + StringBuilder keyBuilder = new StringBuilder(); + + for(String line = brKey.readLine(); line != null; line = brKey.readLine()){ + if(line.indexOf("PRIVATE") == -1){ + keyBuilder.append(line); + } + } + + certificate = new String(Files.readAllBytes(Paths.get(certFolderPath,certFileName))); + + byte[] encoded = DatatypeConverter.parseBase64Binary(keyBuilder.toString()); + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded); + KeyFactory kf = KeyFactory.getInstance("ECDSA"); + key = kf.generatePrivate(keySpec); + + }finally { + isKey.close(); + brKey.close(); + } + + CAEnrollement enrollment = new CAEnrollement(key,certificate); + return enrollment; + } } diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 7f5ff95..6af5304 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -10,6 +10,7 @@ import org.apache.log4j.Logger; import org.hyperledger.fabric.sdk.*; import org.junit.Test; +import java.io.File; import java.util.Collection; import java.util.Set; @@ -19,8 +20,26 @@ public class QueryTest { @Test public void TestAQueryChannels() { BasicConfigurator.configure(); - UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + + //UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + try{ + + //TEST FAILED + + UserContext admin = new UserContext(); + File pkFolder = new File(Config.ADMIN_KEY_PATH); + File[] pkFile = pkFolder.listFiles(); + File certFolder = new File(Config.ADMIN_CERT_PATH); + File[] certFile = certFolder.listFiles(); + admin.setName(Config.ADMIN); + admin.setMspId(Config.ORG1_MSP); + admin.setAffiliation(Config.ORG1); + Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); + admin.setEnrollment(enrollAdmin); + + //END TEST + String chaincode = Config.CHAINCODE_NAME; FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); diff --git a/src/test/java/blockchain/utility/UtilEnrollTest.java b/src/test/java/blockchain/utility/UtilEnrollTest.java new file mode 100644 index 0000000..63d812b --- /dev/null +++ b/src/test/java/blockchain/utility/UtilEnrollTest.java @@ -0,0 +1,37 @@ +package blockchain.utility; + +import blockchain.configuration.Config; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.Enrollment; +import org.junit.Test; + +import java.io.File; + +public class UtilEnrollTest { + private static Logger logger = Logger.getLogger(UtilTest.class); + + @Test + public void TestAGetEnrollement(){ + BasicConfigurator.configure(); + + try{ + logger.info("----- START TEST ----"); + File pkFolder = new File(Config.ADMIN_KEY_PATH); + File[] pkFile = pkFolder.listFiles(); + File certFolder = new File(Config.ADMIN_CERT_PATH); + File[] certFile = certFolder.listFiles(); + logger.info("----- GET ENROLLEMENT ----"); + Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); + + logger.info("KEY : "+enrollAdmin.getKey()); + logger.info("CERT : "+enrollAdmin.getCert()); + + + }catch (Exception e){ + e.printStackTrace(); + } + + + } +} diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index 904b4f6332f8d96265bf963f5812a8f754923092..219bcf4c691176571d215063758979d9a1b7bde9 100644 GIT binary patch delta 28 icmZ1=zEpg}XJ&rB+{)yP#Js%JoOmEBdGlZ9#q0o~Yztlh delta 23 ecmZ1~zCe7#XJ#(W+{)yP#Js%JoXt!ui`fBb$_P&Y diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index e556f14213571e405e2aa8de7c15f26833b4fac6..3e21f238a85e14c0b67101364a97d074e3dda741 100644 GIT binary patch delta 555 zcmZ9JOD_Xa6vzL!HC!|rl192z?`I$0Z)4`7QBy_{t4ULnXlRMC(3OQfY37qyh_LVh zd<83?Kzspl=1xi3oSgH!|MNfRU^9z6ph$bXk5Jaj8bVkr2xeboh-@`V=VU20OLQR;t8r0n+yK$dbObKBCgYFx<4Y!pl zh2wm=Y@b?`6=tdMhb#*V*eRXv|DVet=#Ubj5%NkII9uc^g7Q+-934?}= SPz=dj!6?S4V$|XdN_+!~2yyWM delta 372 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 delta 1627 zcmY+DTWpk75XXOKySwMx?Q)TV1r%6BD0IQL+{98qC|GW7DO5p3VGG-`we6N=TUrpd zT)d!AEh|_rs7OqVi7})J5)&19G0_JTVnPg0#uyVx^uZU6vGxCL+YL6`bLPx9znM8R zbIz3BnU?-`@bfQ$#e5KC0lR`c%`*Wa?6&L);$@dZ)ZH6`%w?~`K6j6~n#Lea?01Me zG&?+NX$dl(R(EN0NVt2uGMzbU*No9a^|{cvJ;||Hw;rVy`HHJ?xA0Y`eb+b zP&P)Qp*glU6>dxg)%H?j&?>%;)#+C zwd=a}#@bWyL|cfrDa+K^1$pl%r{i{+a=IAeUEa%lZNnK)V2YRbxs;g^m{c@A%eO?^ zno8t1-qtkgGOMcJpG+KzHnhYB{tjF*nSaMr?1*R@zz}pRCCMvU1=PAwrxNW(yRY~& z%oPb97HRcol>to?goX`R!cv_AJj^m_77p}{{l%nR3`fOpxD+Jf=Bl z;$99gnQo?Vj;Zu(MlLg*Pnf|~!rWvgwBz=NicB6A;e%`E1bA{LlpA|}FoQ=-vWM5$S>!mpBpHF8iX z2UT*gkvV3wxGmy#h}$J@x45XdMsdyJlHxkWb&ES9u1DNS-QTTBFJpDVbRUmUuA4W} zt}2wPx(8^af)%R7Wf`uNexdufh)NA~{`UPKt_mzd8y$BB_a|Sj`#* z_n9=6tVNqOM_H##JXGmJD-(xQW4~p+WrJm-WmERI8UCVXjiuT<&RwhYfB*lEHACEk zlLO^UjjRFJ$e(5WLyD4jw?)9AmMz(7I6R?Zcp9!|=dE0(%XOOyIax`u?y^L;S)u%^ zbb~r&zmpB@W+VHkR`oU!XESYbmz2X!wrOJOIKozXsON;PcuJQ%Ev8pYM$82<{bDYP zxg_R8wx#(<(8q#46?BF53<$U;;0poQ1>6wujeze2e6JukW&eZhf0X@bSBo`rZYzCC zdG<&H<0DP*DW&0d_>|D7)ITDneF{FRyfGp<3Xtod=Dbd>-M`xkTdvZ16x{8qN7cHe zl>XSVL!Ejt3)j@azFTFn`sJ8!M_OHngOeztcxeYGElCv$Ip dX7)krDNl%8WBven?z=a4z5Ad}JEimR)PL}v577Vs diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index 18780f12e7c3f1a83b6bb4ecb7c8d7b43bfc8f80..f3af98de845c18e381f733cf31816cb2e412aa1b 100644 GIT binary patch delta 2179 zcmZXV33yc16~})!nVI|M&C4Y7vfw0$fY}ogAc4SO(Xd%CKq*ujZP5^hWMDFZ%t)o% z)V69{iq$^4(2Y{t(rVR0>PT+%_hkEjqoh?S!^(?AF%kK(H}D6 z!)9^6%}4mCaX)79am^=eDmY;ANuv+ie2UwR^=XUGSbWyz5TCR1eBR;?W8Z1<1&h0k zdAH3ye9?%*MjSC>RCBMzmn?j9&{%|{9E)(AaU;I0xzDDJ`)ztSp?SbKU$L2Es&3<} zHVu3&%woQ-`G!pwdn~?b^tbAbe9-10PMY+GHIEqQ+nVnvLh0dwf#irH?j4NQcoB7j zI_2$E_jqTE8#h@ywyzjYZ!yc!o^5@*`r1>&?JH90&0bZoHa}%3yQ95O zfGIxPzCF1+n;RZUIxOW$hadA3LE>dOeWqU1Mb_b`JgEq*9T}M8@H4aH=SKX3r!;3A ze#x&Ke$8(rWoUPQzoKq)dbodk|6pG#)83y>CB18d7t}B1w}Pi64EAL*$@DcQ)!}#i zUYd0H15Z1g<&WO}V1qY16m=HNo;OGHCx<`tjQ2#aW=dCAXUE*O;a!7mnPe^@%N-8S z@)yquEvWu0e-oS>{?2m_|KOhv|Ki^c|KVwGQ)oub^GpbC4(AjCo}-j1a#XPjC|bPR z?5SRJQK{{ypb8nGy+=b+%9X`ajtVPVAW{*BZkBixp{BTUREeXa(zz;iRGEr7%4M0N z+FPfpr#Y%zRVc~|7m)7D479J^ye-+E)2dR@A-`4QosP!r+V#1<+;v$2%7jW@B7>sd zJ6KfjJ*%HdRyIx&tZ>Zw+(;@ju&C)uML3usdTC@ml_rt>VZO*x3{F)J7ZP5QSm41NE%iuQeIiO&YK-^~t#0rt2LNLbVVmp%wypomTDOSnmBD1-;O=eYvgjOA;Xq@8SF#Vx8w4=7jG2p_|zIL71W9Lsoxm5kA~i2w{d+U8V|>{+Z2!bG$%^qrN?MdB+BAt z$7ogTr`K4s6c5mrh{a<*?Fl#T`pk~;-~r0UnbT{cbI0g7F-}9i;B}5MFHwGk`Qvm6 zObgtFK8bj_2%kkhmmE5G`ys5J7N1uf7Kn>gw^}AsG*GyVTew(&uacXaMudx~WIEN% zppKce%GzA97Emu!xq%Hda+O3kF^fT&*gNyg=6X5mCOX*1JQ?}(xkE(v8w%tE%K`i3KJ7EU)AB zLcdL%k?%SgAcH*4HC&6uPEOIsX2R0YL-eynIDHf2B-tvs?Bgy5B-@b|50GLTCDPcg zJljbVmHtu;k)c$&2r$eJ!)mqa1y=8Tf#;K1Bb1Vr$OeMvWbDQ?In8yNU79z%D6iM- z*1S>kCe52QZ_&I}lh?dWbA#sX@I0NGcj&FW^Bm16IRlnxZVX7xlMn1>(H8Ie-&>qv pN|I05U3`>FN11QlqdMna#}?8SE78i((5w(A1aVLtN!!M3(X!2M zi&jczrDbMFT~JapTg=R~eKFh1vh+iJEjw3w>O=E9bGG+A=l<_G|8o!K+qv<*e{I_V z4CgmXM9g9VZHntm7Me`6Sj6=vHz;njFuBR(W>?287ITYhEit*(~S+j$kQd{#XyELz{+dh&oG-Fgn zWm!c@OWUlHXe1UMRW?G3ysmkJH|>0tnfAZqVVbwtV^33+8E>;!fNI`hpXOcmYu@94 z<{-Q5O)4kzeLfK2nh*I%&}%;C6V0c5W>9DwzCug$IbXQqkey|wrSm0+H6!^-^EKbN z*0-7woNkXZ^Hceb?=?SgSn;FgCyr=-mKR@YW@YdTM-5V%>e}i`o9m(tr4wf~Me1XU zU+tY{rG3bk)tT*2H;U6{G`G~xmS!|YOBci%n;T<`N^3+LB)3NDX4cG)w2p0w#v%)2 z24n4ZJ=87^q}Zzix^r3JOt0N;rKR@E8~@*9CdFDCqYb0;CwJ~nE;Zs6LRm1dT+Cwi z5nE;?a+G+bq7Bi$f-Z~>F+7AtCY%hWFj{Qgdx0}JQ#^ySB-!I8d)n}lEU`bj@dUj= zUpEQkgQ~g*v$n7c|AgY8<-`euy&WQUY+!bzuZFz9efSeaAGLYA-6Ak+DYkQaIG61(#6o7JyO(l^18?mCvBmihr-$} zih_cyB$On=q12&l{fTw!F{_Il$~&YN0giG^7Rh_EYfWTGH~LA7Q{^O`Btpc~B$!Qq zhLFWD2FSwZP%TSZ!yu-UOGMIVlSdl`ERpS8OOb43F`bkM@-p^Q&JkJVqcXK)GQ;CC z#oy&|?r2s@`!`6%vl&aG+|1xy&XdQkr&fB6#f?5NVXLq210?PF}bvuK-ALo5}-83HKfIu6g#vu=|z?ovsjiKNzRlP z$PE3_JVt+~oiVhT=>znI`mfWok_jd*(@HbDdoFt}-`TVK=ik5o0pJdvBya_H6Ij4v z9G9`A;^PFC@ri!lPWl-VQm|(kaUL`_4kCwaJ^8m9J6lj8N$|E zzOaOUpg*KJZ@Z3VmAU7Wr(ro~*SH^Yd4tz`~?10v8&^1x-b+7LFw+d<-c2Tkr;yh>Q;yGF$ortVeidKiX`f?P53 zG8#Iu47;Z1e=vE|7miJ`3nkw$>l;Qh$ePe5M7LVDFB*JXc!J=_+P32xQk~Ek3Y_k@ z2v)t5y1Haq9heg(r{$VF%xm~8NVjGF8q%0ju%qE?Olf!%S1GbN`K3$c>{dBl&X>w* zNh^4y;W55p(7J(RxY|_?)3J9&t>p&M>A8Sn7;AV4mh0UDOopX%N_#L|uc03WJi%Q?^o}A<5xWL$8XX!NwHBWLLi3$4{cK!9kN@ z>Kv8R6H0|U^{`pl=O&%bYdwv#VtB#~VU(acbZ+A(7|V2fHiVr~@I#~me%unC9~6n<;&i5`5tJJDi$;T7k4$H}Om|FBMCW8q{YG2Q^rGmFtz)3q z`>N_DcbVA8Rjv9h4s3sk4Ke#8#u3=I&;v_pM{cLxN zIm__8#mu=^GN$O2xI#|{Lqc{xts=ChOM%8~MCmj$nqxCZU@vIVhwC)<2h1dH&{_)> za1(D4MfV_W?vtC@J;X>8cz%q&Ul2(}+lakH|4vFhLcDORjl@PkCW$Q05xEeRY8t7f z)Y-^<8y8Z^@o2C(#=t_1q%SeJbA+MP#WqsovEMMv(8fp`qqM0@e5oTIlj2k;{u!!t zI{t!!jNlm#=^cv%=`3J?!W<%M7)gv^l>P}^qV&cvLt66~rzdg}HA3qdrFTe3{YWVN zL>dx;`%q}d6HFsRwkPOHnZYdr;RY(0C0>N+$Cx8tlysMIn{bVhg(%*^y8(R9JMhhu zwK)3z!l8oqqV%GNSieuRiVt3uMV3c?@zlgICVxdlmWJL&8pG1aqI^hHA3pjA=Xwu) literal 0 HcmV?d00001 From 86079b6cc9437793a01f9bc634ee831213e18013 Mon Sep 17 00:00:00 2001 From: GME Date: Tue, 6 Nov 2018 09:15:56 +0100 Subject: [PATCH 10/21] Clean for next test --- msp/{Org1 => AdminFiles/admin}/admin.context | Bin msp/Org1/UserJavaTest.context | Bin 1870 -> 0 bytes msp/Org1MSP/admin.context | Bin 1695 -> 0 bytes .../java/blockchain/query/QueryChannelTest.java | 4 ++++ .../java/blockchain/utility/ReadUserTest.java | 4 ++++ 5 files changed, 8 insertions(+) rename msp/{Org1 => AdminFiles/admin}/admin.context (100%) delete mode 100644 msp/Org1/UserJavaTest.context delete mode 100644 msp/Org1MSP/admin.context create mode 100644 src/test/java/blockchain/query/QueryChannelTest.java create mode 100644 src/test/java/blockchain/utility/ReadUserTest.java diff --git a/msp/Org1/admin.context b/msp/AdminFiles/admin/admin.context similarity index 100% rename from msp/Org1/admin.context rename to msp/AdminFiles/admin/admin.context diff --git a/msp/Org1/UserJavaTest.context b/msp/Org1/UserJavaTest.context deleted file mode 100644 index 763a487596ace7b4e5cdb797d3e0af3cdcceefca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 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 Date: Tue, 6 Nov 2018 09:16:12 +0100 Subject: [PATCH 11/21] Clean for next tests --- .../client/FabricClientWrapper.java | 2 +- .../java/blockchain/configuration/Config.java | 18 ++++++--- .../blockchain/client/TestEnrollAdmin.java | 1 + .../client/TestRegisterEnrollUser.java | 2 +- .../blockchain/query/QueryChannelTest.java | 29 ++++++++++++++ src/test/java/blockchain/query/QueryTest.java | 37 ++++++++---------- .../java/blockchain/utility/ReadUserTest.java | 17 ++++++++ .../client/FabricClientWrapper.class | Bin 2981 -> 2976 bytes .../blockchain/configuration/Config.class | Bin 1263 -> 1313 bytes .../blockchain/client/TestEnrollAdmin.class | Bin 2371 -> 2371 bytes .../client/TestRegisterEnrollUser.class | Bin 2378 -> 2375 bytes .../blockchain/query/QueryChannelTest.class | Bin 0 -> 2175 bytes .../blockchain/query/QueryTest.class | Bin 5329 -> 4638 bytes .../blockchain/utility/ReadUserTest.class | Bin 0 -> 1396 bytes 14 files changed, 77 insertions(+), 29 deletions(-) create mode 100644 target/test-classes/blockchain/query/QueryChannelTest.class create mode 100644 target/test-classes/blockchain/utility/ReadUserTest.class diff --git a/src/main/java/blockchain/client/FabricClientWrapper.java b/src/main/java/blockchain/client/FabricClientWrapper.java index 5c7a13d..1c37e61 100644 --- a/src/main/java/blockchain/client/FabricClientWrapper.java +++ b/src/main/java/blockchain/client/FabricClientWrapper.java @@ -36,7 +36,7 @@ public class FabricClientWrapper { public Set queryForChannels() throws InvalidArgumentException, IllegalArgumentException, ProposalException { client.newChannel(Config.CHANNEL_NAME); client.newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); - Peer peer = client.newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + Peer peer = client.newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); return client.queryChannels(peer); } } diff --git a/src/main/java/blockchain/configuration/Config.java b/src/main/java/blockchain/configuration/Config.java index 9ef898c..d5c4606 100644 --- a/src/main/java/blockchain/configuration/Config.java +++ b/src/main/java/blockchain/configuration/Config.java @@ -2,41 +2,47 @@ package blockchain.configuration; public class Config { + //ORGANIZATION public static final String ORG1_MSP = "Org1MSP"; - public static final String ORG1 = "Org1"; + public static final String ORG1 = "org1"; + //ADMIN public static final String ADMIN = "admin"; public static final String ADMIN_PASSWORD = "adminpw"; + //CA public static final String CA_ORG1_URL = "http://vps577432.ovh.net:7054"; + //ORDERER public static final String ORDERER_URL = "grpc://vps577432.ovh.net:7050"; public static final String ORDERER_NAME = "orderer.example.com"; - public static final String CHANNEL_NAME = "mychannel_mycc"; + //CHANNEL - CHAINCODE + public static final String CHANNEL_NAME = "mychannel"; public static final String CHAINCODE_NAME = "mycc"; + //PEER 0 public static final String ORG1_PEER_0 = "peer0.org1.example.com"; public static final String ORG1_PEER_0_URL = "grpc://vps577432.ovh.net:8051"; - public static final String USER_TEST_SECRET = "frwcKfCYPxWA"; + //PEER 1 + public static final String ORG_PEER = "peer1.org1.example.com"; - //TEST public static final String ORG_PEER_URL = "grpc://vps592802.ovh.net:9051"; + //EVENTHUB public static final String ORG_PEER_EVENT_URL = "grpc://vps592802.ovh.net:9053"; + //ADMIN FILE TEST public static final String ADMIN_FILE_PATH = "msp/AdminFiles"; public static final String ADMIN_KEY_PATH = ADMIN_FILE_PATH+"/keystore"; public static final String ADMIN_CERT_PATH = ADMIN_FILE_PATH+"/admincerts"; - - } diff --git a/src/test/java/blockchain/client/TestEnrollAdmin.java b/src/test/java/blockchain/client/TestEnrollAdmin.java index 3b27963..6441f7c 100644 --- a/src/test/java/blockchain/client/TestEnrollAdmin.java +++ b/src/test/java/blockchain/client/TestEnrollAdmin.java @@ -26,6 +26,7 @@ public class TestEnrollAdmin { assertEquals(Config.ORG1, verifyUser.getAffiliation()); assertEquals(Config.ORG1_MSP, verifyUser.getMspId()); + //ENROLL AND WRITE ADMIN adminContext = caClientWrapper.enrollAdmin(adminContext.getName(),Config.ADMIN_PASSWORD,adminContext.getAffiliation()); //Check Admin Enrollement diff --git a/src/test/java/blockchain/client/TestRegisterEnrollUser.java b/src/test/java/blockchain/client/TestRegisterEnrollUser.java index 45a6ae3..a512487 100644 --- a/src/test/java/blockchain/client/TestRegisterEnrollUser.java +++ b/src/test/java/blockchain/client/TestRegisterEnrollUser.java @@ -18,7 +18,7 @@ public class TestRegisterEnrollUser { caClientWrapper.setAdminContext(admin); UserContext userContext = new UserContext(); - userContext.setName("UserJavaTest"); + userContext.setName("User-org1"); userContext.setAffiliation(Config.ORG1); userContext.setMspId(Config.ORG1_MSP); String userSecret = caClientWrapper.registerUser(userContext.getName(),userContext.getAffiliation()); diff --git a/src/test/java/blockchain/query/QueryChannelTest.java b/src/test/java/blockchain/query/QueryChannelTest.java index 965b073..2d32497 100644 --- a/src/test/java/blockchain/query/QueryChannelTest.java +++ b/src/test/java/blockchain/query/QueryChannelTest.java @@ -1,4 +1,33 @@ package blockchain.query; +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.Peer; +import org.junit.Test; + +import java.util.Set; + public class QueryChannelTest { + private static Logger logger = Logger.getLogger(QueryTest.class); + + @Test + public void testQ(){ + BasicConfigurator.configure(); + UserContext userContext = Util.readUserContext(Config.ORG1,"User-org1"); + + try{ + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(userContext); + Set channels = fabricClientWrapper.queryForChannels(); + + logger.info("CHANNELS : "+channels); + + }catch(Exception e){ + e.printStackTrace(); + } + + } } diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 6af5304..98db2da 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -22,40 +22,38 @@ public class QueryTest { BasicConfigurator.configure(); //UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); + UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); try{ //TEST FAILED - - UserContext admin = new UserContext(); - File pkFolder = new File(Config.ADMIN_KEY_PATH); - File[] pkFile = pkFolder.listFiles(); - File certFolder = new File(Config.ADMIN_CERT_PATH); - File[] certFile = certFolder.listFiles(); - admin.setName(Config.ADMIN); - admin.setMspId(Config.ORG1_MSP); - admin.setAffiliation(Config.ORG1); - Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); - admin.setEnrollment(enrollAdmin); - + //UserContext admin = new UserContext(); + //File pkFolder = new File(Config.ADMIN_KEY_PATH); + //File[] pkFile = pkFolder.listFiles(); + //File certFolder = new File(Config.ADMIN_CERT_PATH); + //File[] certFile = certFolder.listFiles(); + //admin.setName(Config.ADMIN); + //admin.setMspId(Config.ORG1_MSP); + //admin.setAffiliation(Config.ORG1); + //Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); + //admin.setEnrollment(enrollAdmin); //END TEST String chaincode = Config.CHAINCODE_NAME; - FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); Channel channel = channelClientWrapper.getChannel(); - Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); - //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG_PEER_URL); - EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); - //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); channel.addPeer(peer); channel.addEventHub(eventHub); channel.addOrderer(orderer); channel.initialize(); - String[] args1 = {"a"}; Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"query",args1); @@ -68,11 +66,8 @@ public class QueryTest { logger.info("RESPONSE : "+stringResponse); } - }catch (Exception e){ e.printStackTrace(); } - - } } diff --git a/src/test/java/blockchain/utility/ReadUserTest.java b/src/test/java/blockchain/utility/ReadUserTest.java index c9b692e..15f837d 100644 --- a/src/test/java/blockchain/utility/ReadUserTest.java +++ b/src/test/java/blockchain/utility/ReadUserTest.java @@ -1,4 +1,21 @@ package blockchain.utility; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import org.junit.Test; + public class ReadUserTest { + @Test + public void testReadUserOrg1(){ + try{ + UserContext userContext = Util.readUserContext(Config.ORG1, "User-org1"); + System.out.println(userContext.getAffiliation()); + System.out.println(userContext.getMspId()); + System.out.println(userContext.getEnrollment().getCert()); + System.out.println(userContext.getEnrollment().getKey()); + System.out.println(userContext.getName()); + }catch (Exception e){ + e.printStackTrace(); + } + } } diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index 219bcf4c691176571d215063758979d9a1b7bde9..904b4f6332f8d96265bf963f5812a8f754923092 100644 GIT binary patch delta 23 ecmZ1~zCe7#XJ#(W+{)yP#Js%JoXt!ui`fBb$_P&Y delta 28 icmZ1=zEpg}XJ&rB+{)yP#Js%JoOmEBdGlZ9#q0o~Yztlh diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index 3e21f238a85e14c0b67101364a97d074e3dda741..49d6d950281202d935480e987cb06325ff0b84b6 100644 GIT binary patch delta 453 zcmX|;J5K^Z6ot?1x-cNoh+;yerGgI@@c};9-4Tee;DWDeV+@IffU&bO@gI;)?5(Vg zi6$0yHvSpoA242K#OCDQ@1C5SJM$HJh$cRN-rfP^Pzqxy3LUvHmV1fp?Fz$C%`2K5 zs|<$aRLd^M8pDVz{kqj?9M?RDBhN5wTYlf`A9@vz0s)!`Pk0KfGsFhKwW@++gNR+S zTvt?lMK&p!NZGY(jv$uq+qPs9<<ANQwWu_QfgP)+}-C(JpnXExhI*ECyZnsHcz)lG-%u1_iAhjkIsh zFU~rh)@AUb9fT&YTCHm{_|T?;as7_PpYQcCc9O&l3^0V~u{F$6#XvEnb3_(p4;ZOe cXiw5IPZ}Z&`jZ9Hn5+%5W~gH@Ni}4D0k=0)(Dxn4BAGgbLM)Mz&c^tG=fMQbiJm)1_Qp4p7a#hB&7d=W3;5e78BDp97i?- zMYh?QNy9N+OEN1(vYpt8ecO_~$^yHDY&=K-WxqH4$zSisGwMniKjVNf!&*h;sdRiL zH`qh%aMWl@Uc|Qr4#$ff%kvR4$3jzj{s>y(9X;vuD1>v`EV-er^|P7&ZSU%0Fu1%4 zxax(U+DTZ@A1L?orsv2e5V(P3k$-xbGjUE7U!gs7p`pZaGKM-9xK1kp7O})9;+9BN F{sY5LSY7}C diff --git a/target/test-classes/blockchain/client/TestEnrollAdmin.class b/target/test-classes/blockchain/client/TestEnrollAdmin.class index 5d5312dda3ecffb51eb8015ad106be73a90b42b2..98cb24a4f6674995b7a95e8447fd6cc428d31016 100644 GIT binary patch delta 14 VcmX>sbXaJE5Hn-`W?^OnHUK061K$7u delta 14 VcmX>sbXaJE5Hq9yW?^OnHUJ|*1HS+O diff --git a/target/test-classes/blockchain/client/TestRegisterEnrollUser.class b/target/test-classes/blockchain/client/TestRegisterEnrollUser.class index 623e0789fc3ef40c2702b5f095ec62e4d25defc0..ad314bf42942b9ad8fba7e96ddb4ebe02187d219 100644 GIT binary patch delta 29 lcmX>lbX;h|TPDW*$?up9xHv3Dy7r delta 32 ocmX>ubV_K$TP8;T$?up9czHsLQ;WP3%MwFUi%T|ZFw3(60LsM+H2?qr diff --git a/target/test-classes/blockchain/query/QueryChannelTest.class b/target/test-classes/blockchain/query/QueryChannelTest.class new file mode 100644 index 0000000000000000000000000000000000000000..df2ceb71ea70a998a3f5d3f0075fd10c07fdba02 GIT binary patch literal 2175 zcma)8Yg5}+5IrIW8KVSZAOvU%gf;;J7D=F_m=eH1NNY$4kCeV;`C6;;#;=9CL|t(QMHGsw&4`?g#%NRe9Lus*HkGBFXKAC zIPewRiDHvC`o{S+rEgu#4Ix$Y(|^(FRK(kw?^#YEJx%rNYrbLbE*qslD`0PnoRYU! z700*s#HLlYnDkl4aeYG~WIQcF_&XJnr&kjkpJLuZG81cV#WTgCC8=wFpNy1Dg@%vO zqv9J4-=arBPlQ6#b+)ZS#S47tOaph!JB#R{f<_tph+M1qPQ&;3LBXd{Vt7*els0Wx9LJb-^o{le)fNDvwW0j6Hsoa`%fVNBEOZM#t$gr@=&C zgTS_ik8nppM?h>qVVKmpie=|zi8N)FW>;1gvTMDQy&4KA%E8jGgIyK2hCMhe$8+_w z3ee!noODIPij=iXw}uklun0da5h;8!b?)FrZbz6bsP2f``}L&YZcVq&8D%!i87nSh zYdj^11b0NuvA`|=P~YIps`rGEj})td%s_1s)}9RhN5%IJTqz)5lE#AY!yadI4-8(_ ztxJocAbX)-#(qgtpNc6^9r3elaRtx*XE;}wt-cj40mF-~S0#@Mrc&>`q)*>UjARiV&`YQRj?}p{9pzRb##4s&()YM7%sa2T)$qJHWohlDUwKBF*E)(Y^uF~k^2dbMNI0XsWj$B>inokSIUhZ_x3g`Nv zV<>OAsG|zd5FFmXU9PoI0R8xcJH94Vt_zg^qOp3OJwHKRGM21AK|}T()U5}{h%XNx zp)r|AHXT7*;rjYy>{r})hvuzgv?OmHA=w!_LhBLQj?n%~DBtmx=9@5s48NDL0LTz= z1Fdw_#+wd~x9PeI_ZZC#R~g1KPe4nAD#1<@dK-p$e?I`(ivbK$`yO?M@PJn5`9F*i z-V%5>!&%<pfB7>W_S?3nTtp+-`>BJpkiyb=SmzOg$YLJ#@ffRoJkAr2cvA6{L0?uIl(Rt9Z^JpP0_`j$ZGGR)ZIK(TU!m*yuQ$6fapBTC29j+M{hw zq;8>OD>_YHWrwxWQ<6K3ow7G?QT3dvXf#r9vWwkv zj>#VOn(X5>jr94ENMnihnXY>WN8~alAM%mh$mC-_G5M6wH1aLY zoo|?Y&QV7kv$FL-248U8WEfwXe8ty}^^M6;&b7wtx#@h%cP8I+T=9d+kDM_1Nyu2L zXJ_&=zi6b@RW(Z_tPp~#>cV0VMn;1!iMS8jxdon_7vpazE zIA1)C3nV$oNlt3UMXId*(Ls{m<#%`Bnc!CwJJBoi+wo2+^c!{@U)U9N*_dH>p-r+s z#h+@E7WQ;GJ^g;0Gs3FNIn&?ECOxbN-9e8{V47%Uli_IHCMen_bDC=hS(QEfXH5xv zgRTO9@1WNvJ8T4vZRBW#eL>$g&er4wRXSFmxW;b!hRvX9b51xpm~7LpCkI+c>!g3B zvpS%ifx9}TsN)Q3CpVn3mAp>!E88jX3$mhMiU^yKP4W8E>(--BEU+nQ6E1wx)xyk7S#>5S-korbBwQ;?<8hy6Ii}(| zMU`TfqFOOq5m8*Ps8P&O)GF$fkiwq~QPeBuofbBex^rN(BI=?+sySmiU$o8*|4wut pS#v(GzqEtFi9+(6v6jgY**(^Nf!ruw5(|V|1eqq6-pr`-;NKGLMS=hT delta 2166 zcmZXV33yc16~})!naO?g=1rED1>X>bC?Wd>0mGnZfM7wEQm8cAVuvu0fypE!fkL;@ zwrX3dt$lQ{i`3c{Yiki=Ux3u5yP|EetJW@7?XI?Tvm4;K6RG*^eBV3UJ@?*o{^#5? zx6XRBA$R=rvHO5dRb_K2du`swjhdTm3fZf9zvcrLH`|2ypdr4+K8y8c^+OgPHvA)o zeAF!7V)HRRZq!d$d{T3(O$GZcK4tiAHlOBpBYno=vlgGTIlvuOj?Y`%Y2+_he9_`A zBYw%|Aa@&b$dJQ^jA`z%__9S{4jPYggriZ8F=5D8H22!Ha-Ypg?$?#X4UeAPXyui> zXEc=^9?WFAC$FgU*T$;tp1f%wl^q>hP;ig(D?&RuACao$3(~83RKO5?HQ(3#K=VV* zk2F8lWHdj~JSJ#pP6!PC-JvU^OIWIT+~KDz^#eUK=1h&*uME%1O&b^)YRd;;f*)zy zp4u}qIyjtiSi%zyKjY^L?-f3INK6(Z4!__DMQF|N)((eXnjKFX@++RwJnirdzjpWy zzZI8(J$-$O+D)0kzU_Ve$#k}@FOyFBg9TOd%w4||M8%~)na!p$R~u)C-}47a)8UUi z>+l@UE2@T4sp0n4LAlPaDXRCn+UIp>{^amyPAcrwE`hCo=ce`!zon=;BCB&9{=#4V zX+>S}zwviL%;6ur;P6lW0hI}RILOsJ@#^AC}#V&70mWe z>68B9*g5MWne@nLzI=+Z`iB2&KRuEfU7Z||*0e-gH8Qk(v!E?v_m(Z`Ogd>om#nv* z^{S|E@K34=|9LC!7K?TA=9KA4McUu*)cQ}_u6z~#!AP`j=SXU}ZAteOFL@0yIeu!y zjrFFxrzEkk;fk@1k&8oP$73xjw@3yMNC^#OA{B}(%`3D=v^L>Nc(`#Kbx4E)mI*D& z8_T#%WM|TWSFv0)#R}P6U^W-F%6O^}(~2V$Oi;a*pdW36fqh^(H-8Qm5= z5%NM}Nrao+Xn@n?#sZ4-w8Ygdg>wQ*UE2%ig(H+DikiHl0M{)~=m{!%o5rb3Sf1rp z1x!msyhy+~3EQ&*JU8x652#K=C$)3k^8#ihoJlP=)2#_OKN0h6Pwu^7gK#Hcmf;dX zt?+=^8$$O|*IVe;uS*nr5l_1fUU5KUqQomXN|Pc{>Xja)S#b-!Mru(!Kx?ARD+_2# zxSku(UdDs_DV?CB*I4I_Gxz=p>T-FlbDVjJ^25xZ;6j0^%UuwV@XCb*EDX5lz?s_* zV6AKlxcHDjT&TL$QW>0~d@*j~0s+2CDt8`HW>CpY;?z*f`83Pg9Fe-1ErYm@_0)5v zSU1u_zYOUeIojDRM_tcc_AyVU{Cw_|>3mqW9Akl`aS;#8*2lPn7o=5A)2$*bR#ozd zX3?V-u}pPyxrDP^^{_%MXLY_Sj!WfFi~r@U!4=OquVyXfa>ix6hINz?Rr4jB+-oJD zO4ZC2Y>>8zt2$msujEpzswL75l4G-~zN?M7Qtm7cd=Ex9Z7LNX|@rQ#CGM_PKIL1FUK!lj`J~q{C5(t=J>fGlaLY8Knw^?mnm3)LyES_>Z`Qm;^H$BP6An7alXZ{|mF7;jn7a8PM diff --git a/target/test-classes/blockchain/utility/ReadUserTest.class b/target/test-classes/blockchain/utility/ReadUserTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e29c3d74246216d94e90fd06d3df60a7d0287f4c GIT binary patch literal 1396 zcma)6$yO6V6ulK99YQl0aUKvyf&;bQy-{};gpwpexsrJYhxz>f#!les; z$eqVqokW9jj`pJJy?WEV?^X4;AD_PfxQ69C3OH@yOb%yrn9QSysR5kB`8+P*Vjd1I z8R@cFt_rSA#!O%_)LvZbgd1x8#I%EhEn zmGKL&8t|mxM!pxUda*Kk=P;|+RZC#Ptp<_5>92b#bP}xsrMH}A>D6Ag7%y9zbw)M! z?%7gYzbr7A&|Hc_EnjPaquY|u;+W`;nF$0z>~%N1SDq7iVcnT~?aQWCQApd+iuU}? ziq}kWk)puCVio6BzH|=||z3swZ)p)FDo4>>o3e+JM1+!N?Y7Y}~~?3-@h2z^sLbHcBX4n6ojD z1sji0w(%HGEIhU08l{3oV_UNE3}t~mJCL^V{7*nTHJ)652QO7Oq|Z+8?_tpmddaDA z>~Uvkzot@}>}mOmj#XHn{`;i(kJHKyjiPQh(NIkRl%oOrm2azL`0)}t|!~Erq;0{JnCYJ?r zdqj&%U Date: Tue, 6 Nov 2018 10:41:00 +0100 Subject: [PATCH 12/21] SUCCESS FUCK IT --- msp/org1/User-org1.context | Bin 0 -> 1892 bytes msp/org1/admin.context | Bin 0 -> 1729 bytes .../java/blockchain/configuration/Config.java | 3 +++ .../client/FabricClientWrapper.class | Bin 2976 -> 2976 bytes .../blockchain/configuration/Config.class | Bin 1313 -> 1304 bytes .../blockchain/client/TestEnrollAdmin.class | Bin 2371 -> 2371 bytes .../blockchain/query/QueryChannelTest.class | Bin 2175 -> 1842 bytes 7 files changed, 3 insertions(+) create mode 100644 msp/org1/User-org1.context create mode 100644 msp/org1/admin.context diff --git a/msp/org1/User-org1.context b/msp/org1/User-org1.context new file mode 100644 index 0000000000000000000000000000000000000000..0dbf1f5328f90360d8af2f6bc8a1632e06ae74cd GIT binary patch literal 1892 zcmb_dON`q@81`njyIu1rY}E%WhgL#7x-?F*k8WC4X#9xdY@Eb-JFQgNj^juCitWU9 z4yff&1RRiBRK%%8y+IE}f{GhRT&P5QKovruN=R@*a3~-F5)w?3-4>M|5WNa@ zznO3Je{=aqWQXS>i=tsmT}c%*E8h2HH(rASVOzc&`pD#)iXpRkWKNJIyKnhEvXIw> zfq)r;rC=4`)hy*$9(h3MbTmT~e9g9c$cxBS9zkWxwGG3RM~j}$+pdDCkt4f?+*V{4 z>jZVthB@Q9HzZhW5yCpd27A{R+Bv+*)`$s` zs}kLUD$<52F6a6}g9N(Hv6glrY0Sh5?jLl88^vF@E1S|njm z2N7Ei0+Qp&I>+UyprylY8=}PpM6ewz4qZmRKgsvS4L&8*MV6 za4g_P*OXOAz>WmVmRTHh)+wL^7)VTT3fDk!oa@T%)xbT1WjmF&*-mG8tf@5Ve$*C+ zz#T8HuvCr&nnD1NQ|aa8TFHu%at7zq9@^meDiP$PNab@Gnxy(mE2LYfgvlYUj5GiN zmw~!4fGgMJD5tiwBCUoZeyn^L za@=w4f!2n`DtM7;%Fr*RxGcqSf+Fs6J#_uVt!L+N+?+;YEo4`q`6^+Xjw^c}v{Seb z!BA{yL8>|Sr_e!sBt{W^7l|FmFaNynx7nT5Z(;}n69{rXar#_r3Q6pqojY_Udt)Ou zHM?^>nVy=Pi4s9g}2lXzT92=TFCuO0eDK2X)l1)JpZwPvjkJ2C lKN=r}vK&wF_m$*-Ih&8n72*5CR!TlHKYBqA!;>bRzW|@rc|QOE literal 0 HcmV?d00001 diff --git a/msp/org1/admin.context b/msp/org1/admin.context new file mode 100644 index 0000000000000000000000000000000000000000..60803d1c3d1bd0332d3da22713793a190986cb54 GIT binary patch literal 1729 zcmb_cON`q@7@lOayRAzpv{Y50LZ#v%x{zeEX?N4ILSx5?o%J~DJU1y)u^q3Uv9o@x zog7emK?rfH)N-M;R3MN_If2B10}|Jk^0@-J;S1Ld;=2{$JnB zH}n0Me*lx73+|IFM>b_m)a_*8DQ>ckC(5yXCGx>|#NuFz1Jj}`JAv){U^i!o>tf0h zZ8cT(UENlXb6|(Kx~f~c=GIz(xaVNLUE- zLMz`81da~d2Hv(M*+P^zAlgJDn*~#9S^+AUAsx1uAr}NDgMz{qF?lG+c|nErd=^H9 z<*HZK*A%_LHk#?VOpD^kyl4nYrNkRlGnfk+b3|rMsxTxfA1xip29<%~8>VYl**3Br zWsq5*c}j{h%DPZ)i*Q}!JydkUyoz^PNiRczNf9Iz@=#SEg5mHcI&?^rsZgL0gdsCL zQYBp`$rfEGggw@X^aYr4o%9-+5rR&t6}5=|LK-2;8zr-$U?OS>vQ$LT(&~ycv&uEH z^@5R!+W3k&xXvvVRI}bf)%kg~?9Fn_3W1}^DQN5$f6-D$)4-1 z>mA&=M6ciND!3uZNkvYQ6iwa4+IjV4It_PAH-=Ya6$Y8dHLskzfWzeeH8})I{-MFK7A%01L-|e(}$mBt}Vu6Q`<(1 ziP&_apAO@(SmNLgx>r5<%_lcL=$^CQyz=KO^j_9zzfoCu_3alO_pKZ91>$DX#ry;b z51;h`&Eej9%N+D8ZW-1*)4=-mTfzmuDJ z>Cpbn;QkMtME2pIKD%)}clOkK5hm%0|3cCx&kwvjc>dD&%!B`$qajy!1;hDnOv{OM a>$a5qFK6??bQw2zR9*JLq}b`|cJD8a1w`eoG?@10%isvJAbv)DkPp&3P;R=7310vJ delta 34 pcmZ1=zCe6~Jqx43WCs>`esgmZV;R=9310vJ diff --git a/target/classes/blockchain/configuration/Config.class b/target/classes/blockchain/configuration/Config.class index 49d6d950281202d935480e987cb06325ff0b84b6..f560ca1784ac8e2cb00c1c320575ceb676508190 100644 GIT binary patch delta 172 zcmZ3;HG^wHaXouzacWUOxC;k^6(a+;vtzt}kh@`gXpj#FgEdgVKgh*3$TbKeV8h73 z0~7Fb^mXN6umy@ZdpP>}x%$LIMC=$D_<$mwe$M_bu23<1ut7j$16+Yd8E`N-Ff#Ci o?Frxni-3&Z%)%JW$jcMunVI6_mTAdm0cJra0JSD4t^fc4 delta 180 zcmbQiwUBE=T%lriV1t0h2Dk!^GT>maXJp_9+XE4RnC`$R#2^qF t3{(-~8XOWI?CKok8nW?sG~?t{rbWCwX+`D9-f7N}0Ttnnn^~EKnE)=|ES3NO diff --git a/target/test-classes/blockchain/client/TestEnrollAdmin.class b/target/test-classes/blockchain/client/TestEnrollAdmin.class index 98cb24a4f6674995b7a95e8447fd6cc428d31016..1e2c68b405303e810f618ce7dfed525c0da03cb0 100644 GIT binary patch delta 41 xcmX>sbXaJ^N)A~$hIj@=hExV6h86~8hQ$nO49gf)7?v}rGOT9Mn0$<*768@K3IzZF delta 41 xcmX>sbXaJ^N)B0BhIj@AhExVch86}ThQ$o349ggl8J07sFsx=!pL~p?768>c3H<;7 diff --git a/target/test-classes/blockchain/query/QueryChannelTest.class b/target/test-classes/blockchain/query/QueryChannelTest.class index df2ceb71ea70a998a3f5d3f0075fd10c07fdba02..d870eec0483b7c76952b9ffb8d961678d3623f38 100644 GIT binary patch delta 647 zcmYk3+fEZv6o$V&J?zeO+u{I)wzP^`)B@H+3sO9v4+T#s)+5!BdSQY=Z%rS;n0Wy2 zG+siJX(Nd@-uVnB`Xu6-RugBEe;xMv*ZTL`+XI`4*7x6Ez5->QIgC(om|<3PJjPs% zs>3`dG$$Q2rvf-_lj4l#tV5hijB|lKAHanGE;?M|vgV3|%T>*_Ail1tX%-aGmut=D z>bfFbTU&3I8m}79U%Y?!&3mhSEftHx^Qu-Oo*}EbVYo@w`)JMDw+y$rqbPVqRY)2# zEE(={&oD~bTL~41m$`3Prfzt^L(L<@W1e^)LZi{AWEC0jXDDSat-gL^SfSDW5z49d z=g6FDrR2__aDrCig~XTff@2bu#453oVh6P$jzvx|+Dj(Li*Nb`>|(b>ig6)ZJ@PMU z7M9$67t0O1kuK5N7P>y!A+|8(V=r#fa<+)qI~aF|Ph#39=`-N7^HaZMa6>xAIZ8#= z8Sc%Vz?Pna(tAiwMg#-l8L7!j)tJ0qj;d%0w3Ug-d7eG&6-{aR_fZh$jP#mdzvNmX z@2~VYhdIDO8CVo*aIHRJQV3JMk=C|Mur$+}LnuutER_B>j);wkhJTA27kcp7?ogNE THcqfS_22T65*o)+yaCBTkQpYWfag1xYtzkmP z9o*$e>EM`@;+}>n4bwViFf0B00fg~@V@^jkk{afvUXbFU6pK0@;W5XOjs`4qJdyrW zj%OUt8T{G2{VD&WQ!NPLFtpF*9oyRaSP)KDY}mrFHq-0QcE;M<*s&IcJH}2qHLlP& z_l%{3t!U$TVPF+)?v4`ozcla)Ywi~%y3~r-2Hqge&>&~`$7u3EOngZ17P2Ci$?r0> z*iIpnu&n*U-bg$?JTw@~?{CF&qL>)%9~t0SH;}=G0f9{em(k+>RHF4ZwhY+VHt-fZ z99aXq$hob)CVw7n3}JW8*AQ41dqo2UygOR;wJ27)s#$dc|J*6~O7AhW`Mxp&rf!yk zWf%+OTu7*g2%VyOQ#WKuhwT#*_>dL79Txn=Lp!q>eAVoJw^^imfI8aL`)lsIA zWD}hoMklQ^K~{>EnIuFrgjJ#)C+v0TqkNZ#vJ^o#dZ@jVnxg2Xv6J-n;X0)W`royJ z)EM*F=%=V$xl%tswSyi2<&4f!IEFa=K8#~T#SKbGrsAYEjQ%IJonrC{m`x`UG#?=( SnWZ~VvchaNc{j;ZkoW^+`J%Z1 From 153e0469289434ce55350f4094ee9f0ec8b6fc29 Mon Sep 17 00:00:00 2001 From: GME Date: Wed, 7 Nov 2018 09:01:07 +0100 Subject: [PATCH 13/21] TransactionTest --- .../query/ChaincodeTransactionTest.java | 119 ++++++++++++++++++ src/test/java/blockchain/query/QueryTest.java | 4 +- .../query/ChaincodeTransactionTest.class | Bin 0 -> 6364 bytes .../blockchain/query/QueryTest.class | Bin 4638 -> 4634 bytes 4 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 src/test/java/blockchain/query/ChaincodeTransactionTest.java create mode 100644 target/test-classes/blockchain/query/ChaincodeTransactionTest.class diff --git a/src/test/java/blockchain/query/ChaincodeTransactionTest.java b/src/test/java/blockchain/query/ChaincodeTransactionTest.java new file mode 100644 index 0000000..f6776b7 --- /dev/null +++ b/src/test/java/blockchain/query/ChaincodeTransactionTest.java @@ -0,0 +1,119 @@ +package blockchain.query; + +import blockchain.client.ChannelClientWrapper; +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.*; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +public class ChaincodeTransactionTest { + private static Logger logger = Logger.getLogger(ChaincodeTransactionTest.class); + @Test + public void TestATransaction(){ + BasicConfigurator.configure(); + + //UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); + UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + + try{ + + String chaincode = Config.CHAINCODE_NAME; + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); + ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); + + Channel channel = channelClientWrapper.getChannel(); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + channel.addPeer(peer); + channel.addEventHub(eventHub); + channel.addOrderer(orderer); + channel.initialize(); + + /* + List args = new ArrayList<>(); + args.add("b"); + args.add("a"); + args.add("5"); + + String accountFromKey = args.get(0); + String accountToKey = args.get(1); + int amount = Integer.parseInt(args.get(2)); + + System.out.println("args0 = "+accountFromKey+" -- args1 = "+accountToKey+" -- args2 = "+amount); + */ + + + /* + String[] args = {"b","a","5"}; + + Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"invoke",args); + for(ProposalResponse presp : responseQuery){ + ChaincodeResponse.Status status = presp.getStatus(); + if(status.getStatus()!=200){ + throw new Exception(presp.getMessage()); + } + String stringResponse = new String(presp.getChaincodeActionResponsePayload()); + logger.info("RESPONSE : "+stringResponse); + } + */ + + + + TransactionProposalRequest tpr = fabricClientWrapper.getClient().newTransactionProposalRequest(); + ChaincodeID cid = ChaincodeID.newBuilder().setName(Config.CHAINCODE_NAME).build(); + tpr.setChaincodeID(cid); + tpr.setFcn("invoke"); + tpr.setArgs(new String[]{"b","a","20"}); + + Collection responses = channel.sendTransactionProposal(tpr); + List invalid = responses.stream().filter(r -> r.isInvalid()).collect(Collectors.toList()); + if (!invalid.isEmpty()) { + invalid.forEach(response -> { + logger.error(response.getMessage()); + }); + } + + + BlockEvent.TransactionEvent event = channel.sendTransaction(responses).get(); + + event.getTransactionID(); + /* + BlockEvent.TransactionEvent event = sendTransaction(fabricClientWrapper.getClient(), channel).get(60, TimeUnit.SECONDS); + if (event.isValid()) { + logger.info("Transacion tx: " + event.getTransactionID() + " is completed."); + } else { + logger.error("Transaction tx: " + event.getTransactionID() + " is invalid."); + } + */ + + + + + //String[] args = {"a","b","5"}; + //logger.info("LENGHT : "+args.length); + //Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"invoke",args); + //for(ProposalResponse presp : responseQuery){ + //ChaincodeResponse.Status status = presp.getStatus(); + //if(status.getStatus()!=200){ + // throw new Exception(presp.getMessage()); + //} + //String stringResponse = new String(presp.getChaincodeActionResponsePayload()); + //logger.info("RESPONSE : "+stringResponse); + //} + }catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 98db2da..da92875 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -21,8 +21,8 @@ public class QueryTest { public void TestAQueryChannels() { BasicConfigurator.configure(); - //UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); - UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); + UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + //UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); try{ diff --git a/target/test-classes/blockchain/query/ChaincodeTransactionTest.class b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3d75b9c6f30d193ef45a664f64285adeb3e3a840 GIT binary patch literal 6364 zcmbtZcYqva75{zLX3HdZY|60->6hd#<@VA{vKIr%B_V-JF_+{_5Or>L?rw6sGt2Dk zkzmD&4Y4a0#D*vqK$j#4Vn;;5iekgw3$b7&{=V7S+qpI*^3Tp!UVraeCmOnSf@E*K3 zg7?Yq`xSg3f}0}vU<5bIg%3%z565u}K9ZoYx5x1bd@_a-?vSGs3Qoqc5~mUnxLb}s zE#dD`@R=A^v!M<>WpEUlC}?+5-cIBarO2oq?2=*YrUn z#l^KpQ{CQHCxJGZmg#O5sBLXKBv997XAFVHZqqXM6mxxsb3p6MawXAi>st1Z=9qHs zFV?w(WaUIhdAkMUYtTTZm*-|^HQ&+LB6`Tm)bENkoeQdz_N_& z7y_*m5TNAaAW1>-DG0Q9)*L)e5wb>x22PcQOBFIhQg4Y(gu1*TWn2&jy^kOSjTpmJ zYiF@fU~w4ub{|ZNV>=nckqkn`*;|GpLam!8@cJ4Qp9RxhVkBZF(#PqhUrM z8nz$Pjl2vbBGwfPQu#SS2g;??LH=~vmTMf7u{Lvb)Y4~u6ns^|*AzUU;6VjnSMUu5-&F7|<^|>e z9_#%@%QbVxA+uoeOm49(+ts9fXz?ablcPnR?UaA+l36X+m(g0r9>11V0v(}_9jCd> z6p@O51y-Ju*(msAl60KABu4}U10k}B=f9lDVm)@z(TyFZOj~nCf-(@@(gN)=%cyuN zHY@nHitm6aa9$vd>9*Bx4ip{FpbT0$W7si~(p>dgCTCg-9#ZjLe2>eyn3q!qi+vrGHxy}&il5^b%&~q-nVjGH z^=sEu`K|9**P-H<_!Wax#jo)j6~D#rRQw))Q1M5p$)E6NMy!fQ@mB?ZQ}K5^rs5y? zCnH(KzwmEXAD(}E$WZYg{FgyHHuKZB%!xu1s98;3kK>HWso)t##Y;Q3oZ-7 zZo?h4Glj+mQP(8u`DtjvF;yrcqKK#}Vj`{xRTWdjR8=&JCV{CQGcP5{gR6@3M50Md zBj)rba5_WGR7JBmUlmC)i`J>iHj;-_F&mpzbYhbtE>OiBF;@}uR54#nQ^f+25NHbo zM0j0P#X_-Ylm+(o9c7vnm>r-oHp2-l3GDh6&@Vw_O5H-)0)!VW9)J)aS*rvVg+Nrw zlRy|Vza$B)3n3LatkvY>l_IJff;V#7cWqzy+FPSeTTHAXpG zVABNbM==YD5mvLbwd z#TMV`%4!9#xm_L3A&`<h2716s4Oiq)D$lLT@3Vfpw*(_|&<=x}n zg9a}L6PoUjG~H6lr0McX$;M}tOe1=;Cnywi-W^@(x1H^LK#_(HxNAJ9EY6K%;z;14 zAX2p(sp#ODn=OZ4bR0ef@V+5Cepf!V>?pcLM|!U@&&LqgyDc)_bY_C(AxWeXy8HcG zc)7UmHVOr8fT+_e3XgtgX_gd6^+x4~BBl$&alFRJEbOY>*=6Cc?5_xhsFxf4LNNig zPDQk;qD`z&aV48{6hId&tU9xNDM)pD_fCZCrAE29t(@VVgs+bpvT#|=iW&$dg;W_wH?RYjzD zn;d75iS*%l3Wvi2z7wYTyvPWUR~3%xIp)QezZY_r;#bJkWp_Z_%0Ue-;%|euI1O7k zR?7g`iZ0HWZi!qYk!yxYYzo&NJAs-+U84R3J(5s%--*cK<#!;uXJsN*LOflUtSdoH z*RL#LN@8lFv4o~{gEu)ZktktWTJa{+6EjMfnT{mulMN*__wuWhaK8LTN=Wis!mM5i zTEgsf^aL(QaDPq-bJMY8G)Y$TlF`Kc5*G9(qYZaq;o;iEqMpNbiI$$j^@+tjB`lG& zq9rU%$CL4sXcahxHsBAHL0Ei545kWd?K;(D{t9oxj zWcP{^*4#>C#Ch3$ln=6Xp4lwSra78Xi&@;6i>a8$*?j&k#1bsR8nh5@F?Mry5KD16 zT47LxA?$*SOK>$V#Wm>0b%eMXdvP1~;XynN4`V;?+P&oEkXs(7aRu+w10A+T#TKRU>+VI)k`SZ65LC=-E`I(+)2uN=-!L)QPSTBh4UN9VLu{PunO;1d+B`^o4&w;J;WTMphG&o)UGIlQoHzf=@l0CeSzMjTy)x#r zM=&*F_Hl0uYR^!aDGGE283l%degy*x1{IhJjw%>ZkX4XVz(*DvI72aN%Fy8LKVL`X z%Mt1TO);53$W{jPMzWQ`9KQ`~mzA)tgr`(PnnbwOLt+O4VI4;i!yXwXBcDw5Oq8(x z79s`D#J&J>J&sFcn(nHR1GT`D0Ei|woWRE0u~tgJ62RZ`p_)$LJcqLyJQsiAH^I>j i{NLa-l46-yDV8Hi-;{0mF~WWvx6+n!bSFNAyZ#6J$$HQL literal 0 HcmV?d00001 diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index bb3dde58eafcf4095b8b7237f0ba0103b481ad96..f0e4fddcda5355b4d746a8b21144d31ca459e955 100644 GIT binary patch delta 26 hcmbQIGD~HH11lSAVoGji-exaW1#U)(&DjE*83AqM2eJSF delta 30 lcmbQGGEZfL11lG2XmM(hZhld^;bu2h1#U*k&FKQ083B?f2=4#@ From 0c218822c904e9c3e26955849400090f07433be0 Mon Sep 17 00:00:00 2001 From: GME Date: Fri, 16 Nov 2018 18:09:37 +0100 Subject: [PATCH 14/21] Auto stash before merge of "develop" and "origin/develop" --- src/main/java/Application/App.java | 7 +++ src/main/java/blockchain/utility/Util.java | 2 + .../query/QueryForChannelsTest.java | 45 ++++++++++++++++++ src/test/java/blockchain/query/QueryTest.java | 4 +- .../blockchain/utility/UtilEnrollTest.java | 6 +-- target/classes/Application/App.class | Bin 0 -> 532 bytes target/classes/blockchain/utility/Util.class | Bin 6156 -> 3819 bytes .../query/ChaincodeTransactionTest.class | Bin 6364 -> 6700 bytes .../query/QueryForChannelsTest.class | Bin 0 -> 1476 bytes .../blockchain/query/QueryTest.class | Bin 4634 -> 4638 bytes .../blockchain/utility/UtilEnrollTest.class | Bin 2077 -> 1388 bytes 11 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 src/main/java/Application/App.java create mode 100644 src/test/java/blockchain/query/QueryForChannelsTest.java create mode 100644 target/classes/Application/App.class create mode 100644 target/test-classes/blockchain/query/QueryForChannelsTest.class diff --git a/src/main/java/Application/App.java b/src/main/java/Application/App.java new file mode 100644 index 0000000..9ebf319 --- /dev/null +++ b/src/main/java/Application/App.java @@ -0,0 +1,7 @@ +package Application; + +public class App { + public static void main(String [ ] args){ + System.out.println("Welcome"); + } +} diff --git a/src/main/java/blockchain/utility/Util.java b/src/main/java/blockchain/utility/Util.java index 621e99f..82db643 100644 --- a/src/main/java/blockchain/utility/Util.java +++ b/src/main/java/blockchain/utility/Util.java @@ -97,6 +97,7 @@ public class Util { } } + /* public static CAEnrollement getEnrollement(String keyFolderPath, String keyFileName, String certFolderPath, String certFileName) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, CryptoException { PrivateKey key = null; String certificate = null; @@ -131,4 +132,5 @@ public class Util { CAEnrollement enrollment = new CAEnrollement(key,certificate); return enrollment; } + */ } diff --git a/src/test/java/blockchain/query/QueryForChannelsTest.java b/src/test/java/blockchain/query/QueryForChannelsTest.java new file mode 100644 index 0000000..e98709a --- /dev/null +++ b/src/test/java/blockchain/query/QueryForChannelsTest.java @@ -0,0 +1,45 @@ +package blockchain.query; + +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.Enrollment; +import org.hyperledger.fabric.sdk.Peer; +import org.junit.Test; + +import java.io.File; +import java.util.Set; + +public class QueryForChannelsTest { + private static Logger logger = Logger.getLogger(QueryForChannelsTest.class); + @Test + public void TestAQueryPeerChannels(){ + BasicConfigurator.configure(); + + try{ + //TEST + UserContext admin = new UserContext(); + File pkFolder = new File(Config.ADMIN_KEY_PATH); + File[] pkFile = pkFolder.listFiles(); + File certFolder = new File(Config.ADMIN_CERT_PATH); + File[] certFile = certFolder.listFiles(); + admin.setName(Config.ADMIN); + admin.setMspId(Config.ORG1_MSP); + admin.setAffiliation(Config.ORG1); + //Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); + //admin.setEnrollment(enrollAdmin); + //END TEST + + //FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); + //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + //Set channels = fabricClientWrapper.getClient().queryChannels(peer); + //logger.info(channels); + + }catch(Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index da92875..ad83de3 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -21,8 +21,8 @@ public class QueryTest { public void TestAQueryChannels() { BasicConfigurator.configure(); - UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); - //UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); + //UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); try{ diff --git a/src/test/java/blockchain/utility/UtilEnrollTest.java b/src/test/java/blockchain/utility/UtilEnrollTest.java index 63d812b..5954fc0 100644 --- a/src/test/java/blockchain/utility/UtilEnrollTest.java +++ b/src/test/java/blockchain/utility/UtilEnrollTest.java @@ -22,10 +22,10 @@ public class UtilEnrollTest { File certFolder = new File(Config.ADMIN_CERT_PATH); File[] certFile = certFolder.listFiles(); logger.info("----- GET ENROLLEMENT ----"); - Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); + //Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); - logger.info("KEY : "+enrollAdmin.getKey()); - logger.info("CERT : "+enrollAdmin.getCert()); + //logger.info("KEY : "+enrollAdmin.getKey()); + //logger.info("CERT : "+enrollAdmin.getCert()); }catch (Exception e){ diff --git a/target/classes/Application/App.class b/target/classes/Application/App.class new file mode 100644 index 0000000000000000000000000000000000000000..1c1ad9e12a397c2e4f34aa9336186619b8e08d0a GIT binary patch literal 532 zcmZuu%SyvQ6g|^d+8FK2*7u{XstdCbTvP-RTm=;>b>V6nhdL#XlBR;6r3(cYet;h( zo}@ypn8m$w&%JZbxs%VY_YVL^*fUYUatRGIi&!zSiZui41~vo=CpysasX(^9-xJ84 zhxbaL?C3yUPW--#Ze-shQgcFAdOaEGr2YYO@q-=q$bu!U^_<5qcY z=qm#|7Ix91>pwOGDl_e?{!qE`9MpXp$I9pG;e?IG)Tj>aYr2f-RY{+l)KiXmnChcs z$m5EQ_J13qg*+cU`7+=*ii{;zHnU*PAG|?4r)`t5kb+q(@N7*7m={@3Bd z*GMX=+(V(N8b#Tje72B@_jG6SafeHM?r@m_MJS$Y5n_-5hbs(dt~v~H%}qxZS=G1> zUvS+Wip+_8$#umH_hDd$M86hQ^{;DxwUaqu{qOK$mTj7Zc*dz&`X22 zWv4TGrR?;z!#8~E{;K0{Ao@y(@A%%G8;vb0_v+hIovlgfo9%3!Z0S)=hx57KRJuJg z@=x@xa{rxDyEh@X0Ti}TN>E6!2q<=$L`m^Ve0cFa)Lj7qmWz#eWK3=oIO7St&KnX% zd6SjGEE^e``lnLM-QM!QN+xZPscaTe-(nR(`JP>@78K$LE!47xFn6TgT0s$>3BQi@ z1Xa*SWin`-OZZ&9k5W=^-dgJTB$7k*Q^y7<5mqJY*(iHyb&^f8NPsP}R0q??7$%~5 zTeDTOP4kZTdl&wuVS{FSXqvHG3-4hNb~bQpBr?jLDRsWK@jzmW(Kk zyyvNNtfJPabFcEgug+r8-DnaPDHlvAk)1eAn8|a6>G!!|AN}Z~-zJd7BOk#Nc1UOQ zJYlCGC96I5)CrVC#6Q?YlYAB}Menm)7^6-du~GJWN8F>?8}*K+JzFQIEPpX>7^Te9 m;5izLeg0jVCsWN6tw{XDk`aRDJ}F}VU#OQQ+%IH+1OEY1ZOaM( literal 6156 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 diff --git a/target/test-classes/blockchain/query/ChaincodeTransactionTest.class b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class index 3d75b9c6f30d193ef45a664f64285adeb3e3a840..deb57c0aaa353ea3b6dbba888891604cdeb0574a 100644 GIT binary patch delta 1749 zcmZ`)X>^lC6umELGGD(;+mIGY3zSw$Xj-tA6etZ_*|fE_6j9tYw6R-Apb1q#jktk3 z__^SY8&yP>MgoE&;EuQ=E{Gc{ii$fbsFXJ;hxT}mKQi-X=DqvwdvoW@o}!h-k?lt| zZU#_H<8+M1H9D@vbpi`DEYfhjjvH{JhMNR#)}i4R4Y#U!v5qCUO<9J9+cn&w<4)YA zVX20@m3fbbdo|pr%=>jbfCtsEObrjI;bC>~h>l0`m>$7$wCOxNuHy-;(D0<1R|-6( zVU>o}8rGAWX1NYw-p`-r8_u zFfgfeOO^)$zLp7oZz$vo5lW0AOW(}#{$Oo$+#&Zr5ylqt;k;b}A979HM}dz7b_;wg zut(q%flmcK6Zo7qK*AV?xINitIclapj2E5X_rXbm>|Bni@tsK|*>BI%NBB$>LTBueI1 zjSmLHp>T_LR+TT@5UdNOSSiI$cAk3J5s~DeR6%KydQvYz>5_U=hNMjDLr8A&wt5Ta zgd6>Zm5rgWq`uV8PFWn;-;Vi`vMEQ>2{b@bE)5jqlsXNfJV7qPaD$TiWdDEr87!X) zjB2fS_F$ArjKNqzLnNI@1%e7CokUrZil`sKWdzA(ku;Rt(REsz#XL06rS8^{DZQf0 zl3gZqF%2_z*fY%@8XnzmFCjKY7`cwsIPGyv|krf?ijmwQ%m_oBP%t-*y*UEbR&g-)u}c15=kRzl*AR>LCnK^V@>KX8e{BB z-A!YSt!b5Y9)7l9-Rr6}wk&M3fOs6wt3sYh?dGost!2Z62|QZkn`xNHw(NAkBuwTN z;baarsbJF*2219x1Y>s31CbbpZh^ZrDI+O{;^}SBss_g}d@V=VSV2elZ6(C9ThNzr zdc%x9eA1s0vXPD)wg$k7Tz-oKnV=I@7=$yBhx6fr5BX?D1;RKL3s8wge7YE?@ynlr zcGU0_of^SzoQ{1s8wYVNC!E76L+C)5%xH}lvJ@$t>;O(dITw)5Z>ECb%$#@+Lsl_8 zCw4JtHJ9b)Ps0=jwlbAXn99h4Jyu~FQ_`5mLY#@|NMthea2Ds(5ou@Gb2zn)*%aVB z<}I0u6&JvZBqox88K~vN+^=K3wBZoyxHiJY+>u^<)`?Mn9HW6T8u_dY<_@kcNuWuf zS->waQy?G^6qqG2Tc9N(5E2Lr%n@8K=SzpF(;XymNdhiq9CfdA0lTiG!ZzO`Msi*y z0b4spmMROk) z9M@q^oC1*O@NB@SC`Kp>)J=;$`J%3hgIBP$`Wj4>GWh U9aKAG?6e*m@J!s=h8OVSQNY<`?f?J) delta 1543 zcmYk6dti@c6vsd3x9#`5dw-AZXBP{Fxo*O+(IodM+9H%vs@WEs*=GA$=(2RxP4cFD zBuPq%)reB*hA!4s3F)RQMMYQZyqoaPdCqyBbH3+$F7LY{Ye$djEr-`_0J5aJ%c)%D zay8Y4YaC`fTfJ8)aIY`!^TqwXc))*n(B&Z(y45V=VOPasmq%FQ@Th+-H9Y39%;9l|<^IJJe%zBG zR`67UvaJd6EYG>rvc}ie8lDf)m30XS8+`30-~VO9D=t0R7)v&s< zSw5z}w=|d;+-CWNPrY5i9;yA~i29muyd@@k#2&uYyq53y-tq%KT7F`$WuG7RGruSa%YJ?{{BAkOAyf4vS)YBh(cw}OaLw-S&jAw0OOEK(V%$Scn+j7%;osEiLvbXa2a z2!@$q#fW1h)`}}3Bi2e2iL(+fVIi(KuPQHNdZef%Bd4e`Vx_4hge6fUlftN(EX}N> z$O%@OOA8^fxQFjwl2X>FyABw9(81aClW zx2U$#uBJS8Sxndt*X~seDaos>EUXlIdi9}HZ+(1XO-_7zpiO(}AS9>dG_Y#OGIC;Z zVSc1<`goUY=~%O%X|_aVODC@`VWpRnlsi8u#VbfE3a42~moApewOlHRcsrANNjEPs zdAnqI`;v1Cvh`a)m&x^csurWVPFv*wwKDV+|F-iQWR)rb2C57;TqZI|b=&B`V1}qA zoUXwEKR8gOU`_Pykhiee-s*A7aB{oUlDSHqLOSOCy0Fm=aHX_Vw-lmip)ak7qqSOX zRJNrf?Z~9P`gI^zt#j$b1kxxZohb|_!U$$_7IVm9o_Z{2B&!)k9p|u}(d=QI=Bl82 zKjj=?nyyl11Mj(-CXU?6r=Um5MdT$7)z`YnW_ZO(`K&LW{%^0EvHTkx`6T3+Nc8xdLb8SI&I34hJ|$N zCvdU$-1oe&g^eAnf}4pn3f{_tCumoI|V0>Rd~&T6!Owwxa0M7)2X<+{8mn zr>X%)ck2kuv305Cloc9uY+b6+t{uNGGyQ1o-mIg`mfAo8ViU60(x-+jpMq%1|6jNy v9nTeN1-O!5^-NH0k^Wo{&|Er8S2>yHI-bTZu2kP=Sf${3z>EI@^=L26 diff --git a/target/test-classes/blockchain/query/QueryForChannelsTest.class b/target/test-classes/blockchain/query/QueryForChannelsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..d9e78fe5132288bb2721eb42788500cb3116b1b2 GIT binary patch literal 1476 zcmZ`(Z&MRT9DX)`xXXDc1OY*<#g+<$dIhPqK(Qe;s7(M3Wya~N<5-5oe)#L{djLz=u`q^33-_>O;A;z6EE>3P z;2RSUEadU6T9!?$n3z)DRTJN-ea*x}wSRA*Y+)Gd1}YYQz@q|2P&Ke2Fc3t|ri=w9 zYEj&D+_vi-N{7a!Bd4ZaD-2roLqA;;$j;2}3gjx$z7)7p^Fz7WY3<2)$K4BPDb^y- z4R+nwSNf?jmmd0wz@6G&5P8Smq3egvFC7`ba-ONR8pV}EHwLfCDe&SMz!c@Lg1hqepwefg3iRM=w3uPW>okxxq&2ddGFQt(zsyB=UJDO#PPJ^%I{g zl*2GeT@_9ehBV1X9kS`1c5AMB!6~~|BkIJS?BSdEKX&e_Zfs0o(!gUIPcSKPy^q)P zWC+;({R`ac3-+S$z;AY94bCBb)C9&`N!uwaq7{zBIhL=IG>WA<^{I^?QDckeV)VTz z!V(*GJQXmu;^soVv29~hsX30;f{iUDk7z*uCDO*W>SVeP+{Y)xz%v`q(XcU&Yozqw zdRu!((n|$yUzp@|H}Sn*hpOL*lTkQpU)}CZ-}N@q*bkd4YS0UTpQM@wf#I3i3ln1` zGTn4rtYA{AC+#Qu965^Rg9AVCHL;wuHVdYDP26Pq$Uljr+URRT9j zR%So?NHN7HJ;vWcz*59e%2MW}aJ^2=;V!u6=T0DAQ^?>3*8y!D!cEF{F94t57BzuS znViwdf3Vm9Z5wZpd57$a6Xa^|kbhA$PGHvOyC`gG)uOtbo5<0yoG%qGbzzr^gI!!M z6|ZzL^c&1tsf*%k7U%DTGXJEkhH)Q*EPs{SHC!UzG4Tdw|C4ialNeeYd4sFJV^q;8`sf^{_7!azEc^{jz*_YH literal 0 HcmV?d00001 diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index f0e4fddcda5355b4d746a8b21144d31ca459e955..bb3dde58eafcf4095b8b7237f0ba0103b481ad96 100644 GIT binary patch delta 30 lcmbQGGEZfL11lG2XmM(hZhld^;bu2h1#U*k&FKQ083B?f2=4#@ delta 26 hcmbQIGD~HH11lSAVoGji-exaW1#U)(&DjE*83AqM2eJSF diff --git a/target/test-classes/blockchain/utility/UtilEnrollTest.class b/target/test-classes/blockchain/utility/UtilEnrollTest.class index d94a6a3c09858c4acbe00bad26df029101af45b1..12bd5ce2cccc6e663ab30b2dab343a0340dbe29a 100644 GIT binary patch delta 506 zcmYk2yH8Y65XOJ!-raldUaq)2c7X+1koWRl0c8c_bEX2IxwcGR7!yIp7-m>UUy=k}UHwR1P4Xy6bZ_2#e{qQknnH6{7U%0FE#!j6! z1VfZa3HidBAlsy9RNly^OFuEk0v^q>K{Z)Ji*Wp(K!H|8hBh^O)#h`FrInj;--7bz z?}TfEKd3zx$EVDs?)0l_Bh-kMRn#EVsPQ?e<>{76NsKa`Vi%dBgNm}r)H&^t1fbe)0w8-WMdtmz47uyaCgsG=l&D literal 2077 zcma)7>r&fB6#f?5NVXLq210?PF}bvuK-ALo5}-83HKfIu6g#vu=|z?ovsjiKNzRlP z$PE3_JVt+~oiVhT=>znI`mfWok_jd*(@HbDdoFt}-`TVK=ik5o0pJdvBya_H6Ij4v z9G9`A;^PFC@ri!lPWl-VQm|(kaUL`_4kCwaJ^8m9J6lj8N$|E zzOaOUpg*KJZ@Z3VmAU7Wr(ro~*SH^Yd4tz`~?10v8&^1x-b+7LFw+d<-c2Tkr;yh>Q;yGF$ortVeidKiX`f?P53 zG8#Iu47;Z1e=vE|7miJ`3nkw$>l;Qh$ePe5M7LVDFB*JXc!J=_+P32xQk~Ek3Y_k@ z2v)t5y1Haq9heg(r{$VF%xm~8NVjGF8q%0ju%qE?Olf!%S1GbN`K3$c>{dBl&X>w* zNh^4y;W55p(7J(RxY|_?)3J9&t>p&M>A8Sn7;AV4mh0UDOopX%N_#L|uc03WJi%Q?^o}A<5xWL$8XX!NwHBWLLi3$4{cK!9kN@ z>Kv8R6H0|U^{`pl=O&%bYdwv#VtB#~VU(acbZ+A(7|V2fHiVr~@I#~me%unC9~6n<;&i5`5tJJDi$;T7k4$H}Om|FBMCW8q{YG2Q^rGmFtz)3q z`>N_DcbVA8Rjv9h4s3sk4Ke#8#u3=I&;v_pM{cLxN zIm__8#mu=^GN$O2xI#|{Lqc{xts=ChOM%8~MCmj$nqxCZU@vIVhwC)<2h1dH&{_)> za1(D4MfV_W?vtC@J;X>8cz%q&Ul2(}+lakH|4vFhLcDORjl@PkCW$Q05xEeRY8t7f z)Y-^<8y8Z^@o2C(#=t_1q%SeJbA+MP#WqsovEMMv(8fp`qqM0@e5oTIlj2k;{u!!t zI{t!!jNlm#=^cv%=`3J?!W<%M7)gv^l>P}^qV&cvLt66~rzdg}HA3qdrFTe3{YWVN zL>dx;`%q}d6HFsRwkPOHnZYdr;RY(0C0>N+$Cx8tlysMIn{bVhg(%*^y8(R9JMhhu zwK)3z!l8oqqV%GNSieuRiVt3uMV3c?@zlgICVxdlmWJL&8pG1aqI^hHA3pjA=Xwu) From 91ef184868d06ef8b24d899d572b5a8b709d539d Mon Sep 17 00:00:00 2001 From: GME Date: Sat, 17 Nov 2018 10:51:09 +0100 Subject: [PATCH 15/21] setup update --- msp/org1/admin.context | Bin 1729 -> 1729 bytes .../client/FabricClientWrapper.java | 3 +- .../query/CreateChaincodeUserTest.java | 48 ++++++++++++++++++ src/test/java/blockchain/query/QueryTest.java | 14 ++--- .../client/FabricClientWrapper.class | Bin 2976 -> 2976 bytes .../query/ChaincodeTransactionTest.class | Bin 6364 -> 6700 bytes .../query/CreateChaincodeUserTest.class | Bin 0 -> 3107 bytes .../blockchain/query/QueryTest.class | Bin 4634 -> 4638 bytes 8 files changed, 57 insertions(+), 8 deletions(-) create mode 100644 src/test/java/blockchain/query/CreateChaincodeUserTest.java create mode 100644 target/test-classes/blockchain/query/CreateChaincodeUserTest.class diff --git a/msp/org1/admin.context b/msp/org1/admin.context index 60803d1c3d1bd0332d3da22713793a190986cb54..7511448c0adcfd5a29a77426e70200a0313bf384 100644 GIT binary patch delta 510 zcmX@edyscS0i(1_NLa3cmq&U|h=Hl0es*w{MUX|lv3s~rarxwK#$B?mM!q5GRsJE4 z<>490e!d~u6}};0F#|3?m&r*?;o*T^2H6H#rKTQL0cjN$A)fA`-e#%E!DgNT!EV_u zMJ0y*mLXmRuDM)p&WXiEZpkTTk>O6J1qP;tA%6KDW&T+e<%I^u`liNaA?3xM+6Bg$ zMi!NR-jfBGZDjo13yd@JOpS6Y%ga4-EOWh_LXt~^UAc-XG6N=OFo#9DI8{0sS4DV- zRau4w`}me-nHPkZM);OE2bTsGB!-t&rA8X3M@DiPm4{_JW;#VAI%S3xn-^xgSOk0f zM4&68Y!+wnV5}D@FQ~lKRj2kXH#$X`(X@5t z?&bf_N>|=K`uY{~bDe|w3%J-gwAwt**)lV-FLYscVqkHYt8&SDr@Zm~<3~jbN}SKbG!O;i(6TeBuy_GN41v$>WljWgsvFFww-<^I3&mo_@eugbggjZ7+v qix_P3i_-Oy@=Nn3-(&3$q1eO{26q3VbVJ|ZfD#7Q#FX63yaE9C;=(lm delta 510 zcmX@edyscS0i$$~nXg}QzL!C+V`{ordU#H%vw?rMwvSVJQvT#_#$B?GM!qiDmA+Yy z<>490e!d~u6}}-5F)qKV$w^G%;pQfe6>b5+#r~OvshMt`Vc`bGMv=}wPA-XAfvG`W zep$}prN*UU##}~)NkJY?zW!!jrY5C9Raqrj*+qH5o>9Je`KeV#7OsBINfkz^Wr6-t ziH>E7lLeStj^dl=GxhgFTd?#lxhediMmu46Tn)`>l zre|jaWCRtu_(ys~`Iv|Ll~`JO_~j*LdS#mg`g2)^I-5FXItIFzRwf(frg(r)=2j+p6q$GxB^M_edqjnJB!?7l7H9Ebtmk$u2#$Yp`Sp?9={alH{a@rN z>X{X_GRR`-)*1Ol>t81?;9}#@YV$Z}%go5W(1qEFf#rRJp~#mtR$B8qf<&Wzza=Og z3T`|rFoO@vG#{hY+?xmyMIx-p>J?N2?J|lN^WLe0RSu6zYhQa diff --git a/src/main/java/blockchain/client/FabricClientWrapper.java b/src/main/java/blockchain/client/FabricClientWrapper.java index 1c37e61..b06237c 100644 --- a/src/main/java/blockchain/client/FabricClientWrapper.java +++ b/src/main/java/blockchain/client/FabricClientWrapper.java @@ -36,7 +36,8 @@ public class FabricClientWrapper { public Set queryForChannels() throws InvalidArgumentException, IllegalArgumentException, ProposalException { client.newChannel(Config.CHANNEL_NAME); client.newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); - Peer peer = client.newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + //Peer peer = client.newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + Peer peer = client.newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); return client.queryChannels(peer); } } diff --git a/src/test/java/blockchain/query/CreateChaincodeUserTest.java b/src/test/java/blockchain/query/CreateChaincodeUserTest.java new file mode 100644 index 0000000..7f12805 --- /dev/null +++ b/src/test/java/blockchain/query/CreateChaincodeUserTest.java @@ -0,0 +1,48 @@ +package blockchain.query; + +import blockchain.client.ChannelClientWrapper; +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.hyperledger.fabric.sdk.Channel; +import org.hyperledger.fabric.sdk.EventHub; +import org.hyperledger.fabric.sdk.Orderer; +import org.hyperledger.fabric.sdk.Peer; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +public class CreateChaincodeUserTest { + @Test + public void TestCreateUser(){ + BasicConfigurator.configure(); + UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + + try{ + String chaincode = Config.CHAINCODE_NAME; + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); + ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); + + Channel channel = channelClientWrapper.getChannel(); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + channel.addPeer(peer); + channel.addEventHub(eventHub); + channel.addOrderer(orderer); + channel.initialize(); + + List args = new ArrayList<>(); + args.add("user1"); + args.add("200"); + args.add("user2"); + args.add("150"); + + }catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index da92875..b5af101 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -16,13 +16,13 @@ import java.util.Set; public class QueryTest { private static Logger logger = Logger.getLogger(QueryTest.class); - //DON'T WORK + @Test public void TestAQueryChannels() { BasicConfigurator.configure(); - UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); - //UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); + //UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); try{ @@ -44,10 +44,10 @@ public class QueryTest { ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); Channel channel = channelClientWrapper.getChannel(); - //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); - Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); - //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); - EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); + //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); channel.addPeer(peer); channel.addEventHub(eventHub); diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index 03702050910918dceddd22299ead49d5e575d493..017d1ab455721ced9f277f59564ce0cde8367bdd 100644 GIT binary patch delta 44 zcmZ1=zCe6~Jqx43WCs>`esgmZV`eoG?@10%isvJAbv)DkPp&3P;j*;v&Xlo&K7hj9A<01^HR A!2kdN diff --git a/target/test-classes/blockchain/query/ChaincodeTransactionTest.class b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class index 3d75b9c6f30d193ef45a664f64285adeb3e3a840..deb57c0aaa353ea3b6dbba888891604cdeb0574a 100644 GIT binary patch delta 1749 zcmZ`)X>^lC6umELGGD(;+mIGY3zSw$Xj-tA6etZ_*|fE_6j9tYw6R-Apb1q#jktk3 z__^SY8&yP>MgoE&;EuQ=E{Gc{ii$fbsFXJ;hxT}mKQi-X=DqvwdvoW@o}!h-k?lt| zZU#_H<8+M1H9D@vbpi`DEYfhjjvH{JhMNR#)}i4R4Y#U!v5qCUO<9J9+cn&w<4)YA zVX20@m3fbbdo|pr%=>jbfCtsEObrjI;bC>~h>l0`m>$7$wCOxNuHy-;(D0<1R|-6( zVU>o}8rGAWX1NYw-p`-r8_u zFfgfeOO^)$zLp7oZz$vo5lW0AOW(}#{$Oo$+#&Zr5ylqt;k;b}A979HM}dz7b_;wg zut(q%flmcK6Zo7qK*AV?xINitIclapj2E5X_rXbm>|Bni@tsK|*>BI%NBB$>LTBueI1 zjSmLHp>T_LR+TT@5UdNOSSiI$cAk3J5s~DeR6%KydQvYz>5_U=hNMjDLr8A&wt5Ta zgd6>Zm5rgWq`uV8PFWn;-;Vi`vMEQ>2{b@bE)5jqlsXNfJV7qPaD$TiWdDEr87!X) zjB2fS_F$ArjKNqzLnNI@1%e7CokUrZil`sKWdzA(ku;Rt(REsz#XL06rS8^{DZQf0 zl3gZqF%2_z*fY%@8XnzmFCjKY7`cwsIPGyv|krf?ijmwQ%m_oBP%t-*y*UEbR&g-)u}c15=kRzl*AR>LCnK^V@>KX8e{BB z-A!YSt!b5Y9)7l9-Rr6}wk&M3fOs6wt3sYh?dGost!2Z62|QZkn`xNHw(NAkBuwTN z;baarsbJF*2219x1Y>s31CbbpZh^ZrDI+O{;^}SBss_g}d@V=VSV2elZ6(C9ThNzr zdc%x9eA1s0vXPD)wg$k7Tz-oKnV=I@7=$yBhx6fr5BX?D1;RKL3s8wge7YE?@ynlr zcGU0_of^SzoQ{1s8wYVNC!E76L+C)5%xH}lvJ@$t>;O(dITw)5Z>ECb%$#@+Lsl_8 zCw4JtHJ9b)Ps0=jwlbAXn99h4Jyu~FQ_`5mLY#@|NMthea2Ds(5ou@Gb2zn)*%aVB z<}I0u6&JvZBqox88K~vN+^=K3wBZoyxHiJY+>u^<)`?Mn9HW6T8u_dY<_@kcNuWuf zS->waQy?G^6qqG2Tc9N(5E2Lr%n@8K=SzpF(;XymNdhiq9CfdA0lTiG!ZzO`Msi*y z0b4spmMROk) z9M@q^oC1*O@NB@SC`Kp>)J=;$`J%3hgIBP$`Wj4>GWh U9aKAG?6e*m@J!s=h8OVSQNY<`?f?J) delta 1543 zcmYk6dti@c6vsd3x9#`5dw-AZXBP{Fxo*O+(IodM+9H%vs@WEs*=GA$=(2RxP4cFD zBuPq%)reB*hA!4s3F)RQMMYQZyqoaPdCqyBbH3+$F7LY{Ye$djEr-`_0J5aJ%c)%D zay8Y4YaC`fTfJ8)aIY`!^TqwXc))*n(B&Z(y45V=VOPasmq%FQ@Th+-H9Y39%;9l|<^IJJe%zBG zR`67UvaJd6EYG>rvc}ie8lDf)m30XS8+`30-~VO9D=t0R7)v&s< zSw5z}w=|d;+-CWNPrY5i9;yA~i29muyd@@k#2&uYyq53y-tq%KT7F`$WuG7RGruSa%YJ?{{BAkOAyf4vS)YBh(cw}OaLw-S&jAw0OOEK(V%$Scn+j7%;osEiLvbXa2a z2!@$q#fW1h)`}}3Bi2e2iL(+fVIi(KuPQHNdZef%Bd4e`Vx_4hge6fUlftN(EX}N> z$O%@OOA8^fxQFjwl2X>FyABw9(81aClW zx2U$#uBJS8Sxndt*X~seDaos>EUXlIdi9}HZ+(1XO-_7zpiO(}AS9>dG_Y#OGIC;Z zVSc1<`goUY=~%O%X|_aVODC@`VWpRnlsi8u#VbfE3a42~moApewOlHRcsrANNjEPs zdAnqI`;v1Cvh`a)m&x^csurWVPFv*wwKDV+|F-iQWR)rb2C57;TqZI|b=&B`V1}qA zoUXwEKR8gOU`_Pykhiee-s*A7aB{oUlDSHqLOSOCy0Fm=aHX_Vw-lmip)ak7qqSOX zRJNrf?Z~9P`gI^zt#j$b1kxxZohb|_!U$$_7IVm9o_Z{2B&!)k9p|u}(d=QI=Bl82 zKjj=?nyyl11Mj(-CXU?6r=Um5MdT$7)z`YnW_ZO(`K&LW{%^0EvHTkx`6T3+Nc8xdLb8SI&I34hJ|$N zCvdU$-1oe&g^eAnf}4pn3f{_tCumoI|V0>Rd~&T6!Owwxa0M7)2X<+{8mn zr>X%)ck2kuv305Cloc9uY+b6+t{uNGGyQ1o-mIg`mfAo8ViU60(x-+jpMq%1|6jNy v9nTeN1-O!5^-NH0k^Wo{&|Er8S2>yHI-bTZu2kP=Sf${3z>EI@^=L26 diff --git a/target/test-classes/blockchain/query/CreateChaincodeUserTest.class b/target/test-classes/blockchain/query/CreateChaincodeUserTest.class new file mode 100644 index 0000000000000000000000000000000000000000..bcfa8fe9e39afbb6091120068c0d5ef63779663f GIT binary patch literal 3107 zcmbtWYj+b>6x|cj&U88yOrcnyl=5oJBa;?tA+1QM6qJ-ArL7>SlgW@yo6dyEq_n6g zDvEE#*IF*t(hs`)%$I<$mOsEBrS3aP+R#T}E%M>M=A3=*J!jvY`_I1*{|0afKdab{ zgoU2TA^O)Ov#v5u>}bQnR?8?QQ#`bD!3}cQ?Ua%8NQ6XgxY@FvHhbG)^v1^ zO9&6TDNDk-gzZ>o@-s=xJ8vX2T!|!H)5we)o-O93#jrnV=OpY+Br~o#ZB81tqhHNi z-n>5OS%z;7iWQTHV>tp@IloUrgXoK&#j1q5z)x6-C{xC)p=S&yt&jSi?WF0^c*RJ1 zwmF!wEythmjBHl8wO0l;gKzrKazpxWU;xLlGD`qDRsi6Jmst`)E+I(Rm2kbZJ~_`V zWUN%$^7P{7^jvCMFL~1;oVCOr+p1Zgr3p9agWk}?Wk{<)5AtKa0_@jOO{G#K9_fVd&U~Kb2d3Q;5e>t zh`j|z5p|f#le>C}Sn8;o_e^WZ7IfXZ3IU^nUmEtHUB)#Hb7+^)TESk^b*|XyycfjL zc}UKf2?pzuP-CQKY)8hthU<8T%QN$)$+A`YuS!G_^j)%@K1Gsgcn>#ZyszN{+|=+P zK4LBfZ@Qu)T-2H~X0jP8YPvHLTGC$DjO+SrHrI2c`*5r~>dsC^9m|g&iS=~J_*la& zd?G;&*fg0>#<<_AP6su7irc(hB{HoZuebNm!NqvJv7VTQ&+xg7FEo6KuQYs(Z!~<1 z?=;-OO(F(&IAGa;=Na>YYD}J>4tM&!h9B@F^`<)(E3I~O*44vV(KERH3q;iLlPFS0 zMUtyZ3~9coAtT8t%Vh8^72ZoJEMbS>l94scNlVYT=|fZcaU(~;S>S?8HrAD?L3VAb zgyU_p{ds+iJ%y9Hm#VlQ5(Yb#(|-9%=Myg3_Q%v}=@I&bbT^u1&0Ul*3H>XCe=Jx@ zI#*G?JryUdVoBnqEx&{zVNXYAH7Q%v$vWW`Tp0>_b*EE9MMEmaPEoH_G`MU=m2|9Y zLSrSITp&N;%Sk^i^w)I_H|zMhD9+e>ew2_<$q>n zeTpj6*LjimKg&mpAN-@8_YBiQ8+P&0Cw?LDVxXOE2WL8aiG9u9`;hJhpF7#s28$8w z8Q1JouW^6(=l7xvvp-I)UswSf9~xH(*a z7Oy!_z}iSdWL*L4im!fhhmVVdqDO62|c zjp_NFSrv)P619QR>3M81U>x)`mM|G3>m4-;pW@9`egaAxBL^fK|sa0!QT1Ty1} zAdWshzI{gO$BU>Vei%pb67iV!Qc3FZ3%v$-zT;dK-(pom7u(Fw m7R@Co!NAR+#lXj)%^=R8!ywO~$Dqbwz+lW^w7FSeHX{J}{1)K= From 3bd3f8ebe5d8987322b4e52b7ecfa2cc809f85ef Mon Sep 17 00:00:00 2001 From: GME Date: Sat, 17 Nov 2018 10:55:22 +0100 Subject: [PATCH 16/21] test --- .../blockchain/query/QueryTest.class | Bin 4638 -> 4638 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index bb3dde58eafcf4095b8b7237f0ba0103b481ad96..1c08942325d2dd1bb1983612a9da451ba9f4f8af 100644 GIT binary patch delta 46 zcmbQIGEZg0YF0J_z5Jqd!^w(l8jKc`Z?URPwr1mFwAjqgme0ki&tS}8xVc$iHX{H% C& Date: Sat, 17 Nov 2018 11:21:34 +0100 Subject: [PATCH 17/21] Clean code Delete old unused code and remove unused class --- msp/AdminFiles/admin/admin.context | Bin 1697 -> 0 bytes .../Admin@org1.example.com-cert.pem | 14 ------ ...65b858048111bc01cb46ac33c77fc94011f7b89_sk | 5 -- .../query/QueryForChannelsTest.java | 45 ------------------ .../blockchain/utility/UtilEnrollTest.java | 37 -------------- 5 files changed, 101 deletions(-) delete mode 100644 msp/AdminFiles/admin/admin.context delete mode 100644 msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem delete mode 100644 msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk delete mode 100644 src/test/java/blockchain/query/QueryForChannelsTest.java delete mode 100644 src/test/java/blockchain/utility/UtilEnrollTest.java diff --git a/msp/AdminFiles/admin/admin.context b/msp/AdminFiles/admin/admin.context deleted file mode 100644 index 4e2b42eec80f7c1d93c6abada60613ec82570c41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1697 zcmb_cOQ_sb7(RFItBp#vr4+S`DpIv$Gc)PTee_|QlVmcvlgyn*X6DXRkW40%_au|Y zO>&V+U0AFOkz$1lVx=w=DuRfMF1pc$AT6lXO;KFvMy#8vsae*V{Y z&d2}#mu`Y-*8z|A3`^8SMNo&R?@A8Zj4#3(dQ#|tjWdw~Gc1@DMA7nxo(Fcany@Nl z3}Gl|8lIyLXc~L-PB(zi{@GZ32i{bCbPpcPFAjN_yQF6RZs7YOlJg{d2$dyFjQN1Wr zmZGYlIx(P^`sQGAAVo8keFRnKnIc2rJT>+r9K*mljUezYE#mF_MG?(KS7;X$u3if$xkI*UwK75l9wV(lLo`F9OZN>?qpBR99XBLGj;@@>R_SWZ5Og!Egz8hCQ{H+x^&L&X|T&dj)u{QZgBZUT&8G(*su{i zph|d_!675*X&4CwZoX|86|x|%*5w8x^Ey#l9$`_in761v^Q(Rs8cjdFNEBF4Cj=~2SC*@ij!aCjY@~w1k{t&_Dbd0d`bEXyw7uGVTKE>}u82`OBKOfJVakvZ3GE%mC( zpvz7+KIyavk$c&8hm^0618v1-iSt(#zcF=Y6dW0c;SmKMk zwV-PnQ>^!!!v*meG9FT@LjHYlV*%|>#EssWd31B;-<-Vv@K;xNo*OF#u^n|)@T55A zfk*BUN%d|l*7A1S?-{B%PJH;@#5T5*)}#NCuXOj zY>=9mnA-Q@%@1_kX^Bdv5*g?t@DoAD=w+3S?j0djZ)hdWW2ZVCu}f zxA(69cM1M+sLC`pNxJOv}k^=N~Eg WU;gHS*<^upjj9Kxg}$i{?LPrOtvA8| diff --git a/msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem b/msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem deleted file mode 100644 index 574766b..0000000 --- a/msp/AdminFiles/admincerts/Admin@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRAI78GIwc1BJbESAVBAu12zgwCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTgwMjExMTQxODI4WhcNMjgwMjA5MTQxODI4 -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABHc7mBPjvRt41DHUQOwBmPdosuyBiR5q -9ODr4IRm0nSPy8qNMOwNzjq+FBlD/h5q36rHwGVmyK31BlIX3SN6u8KjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMsE632KJqem -rpj0tWcvTaIXe5aa0DPs8dxIkaPosSv8MAoGCCqGSM49BAMCA0gAMEUCIQDxrPnJ -H6UDSPyTAkIZ156RRuAXm3S3quTrXYAVEP1bNgIgNmaykOaIbTBTw7LSv8zPZopP -5XHsa6MEFFL0KM6whQk= ------END CERTIFICATE----- diff --git a/msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk b/msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk deleted file mode 100644 index 8151aca..0000000 --- a/msp/AdminFiles/keystore/26ce2201d545355779a279f1565b858048111bc01cb46ac33c77fc94011f7b89_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2KnGkVeiwErPZq2n -WX0AjHkS+XOx2sqON1n4kiTw5QuhRANCAAR3O5gT470beNQx1EDsAZj3aLLsgYke -avTg6+CEZtJ0j8vKjTDsDc46vhQZQ/4eat+qx8BlZsit9QZSF90jervC ------END PRIVATE KEY----- diff --git a/src/test/java/blockchain/query/QueryForChannelsTest.java b/src/test/java/blockchain/query/QueryForChannelsTest.java deleted file mode 100644 index e98709a..0000000 --- a/src/test/java/blockchain/query/QueryForChannelsTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package blockchain.query; - -import blockchain.client.FabricClientWrapper; -import blockchain.configuration.Config; -import blockchain.user.UserContext; -import blockchain.utility.Util; -import org.apache.log4j.BasicConfigurator; -import org.apache.log4j.Logger; -import org.hyperledger.fabric.sdk.Enrollment; -import org.hyperledger.fabric.sdk.Peer; -import org.junit.Test; - -import java.io.File; -import java.util.Set; - -public class QueryForChannelsTest { - private static Logger logger = Logger.getLogger(QueryForChannelsTest.class); - @Test - public void TestAQueryPeerChannels(){ - BasicConfigurator.configure(); - - try{ - //TEST - UserContext admin = new UserContext(); - File pkFolder = new File(Config.ADMIN_KEY_PATH); - File[] pkFile = pkFolder.listFiles(); - File certFolder = new File(Config.ADMIN_CERT_PATH); - File[] certFile = certFolder.listFiles(); - admin.setName(Config.ADMIN); - admin.setMspId(Config.ORG1_MSP); - admin.setAffiliation(Config.ORG1); - //Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); - //admin.setEnrollment(enrollAdmin); - //END TEST - - //FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(admin); - //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); - //Set channels = fabricClientWrapper.getClient().queryChannels(peer); - //logger.info(channels); - - }catch(Exception e){ - e.printStackTrace(); - } - } -} diff --git a/src/test/java/blockchain/utility/UtilEnrollTest.java b/src/test/java/blockchain/utility/UtilEnrollTest.java deleted file mode 100644 index 5954fc0..0000000 --- a/src/test/java/blockchain/utility/UtilEnrollTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package blockchain.utility; - -import blockchain.configuration.Config; -import org.apache.log4j.BasicConfigurator; -import org.apache.log4j.Logger; -import org.hyperledger.fabric.sdk.Enrollment; -import org.junit.Test; - -import java.io.File; - -public class UtilEnrollTest { - private static Logger logger = Logger.getLogger(UtilTest.class); - - @Test - public void TestAGetEnrollement(){ - BasicConfigurator.configure(); - - try{ - logger.info("----- START TEST ----"); - File pkFolder = new File(Config.ADMIN_KEY_PATH); - File[] pkFile = pkFolder.listFiles(); - File certFolder = new File(Config.ADMIN_CERT_PATH); - File[] certFile = certFolder.listFiles(); - logger.info("----- GET ENROLLEMENT ----"); - //Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); - - //logger.info("KEY : "+enrollAdmin.getKey()); - //logger.info("CERT : "+enrollAdmin.getCert()); - - - }catch (Exception e){ - e.printStackTrace(); - } - - - } -} From 74821e5056cd11f1f967a67e9b281702fb1ecb62 Mon Sep 17 00:00:00 2001 From: GME Date: Sat, 17 Nov 2018 11:21:49 +0100 Subject: [PATCH 18/21] clean code delete unused class and code --- src/main/java/blockchain/utility/Util.java | 50 +------------- .../blockchain/client/TestEnrollAdmin.java | 1 + .../client/TestRegisterEnrollUser.java | 1 + .../query/ChaincodeTransactionTest.java | 65 +++--------------- .../query/CreateChaincodeUserTest.java | 36 +++++++--- .../blockchain/query/QueryChannelTest.java | 1 + src/test/java/blockchain/query/QueryTest.java | 21 +----- .../java/blockchain/user/UserContextTest.java | 1 + .../java/blockchain/utility/ReadUserTest.java | 1 + .../java/blockchain/utility/UtilTest.java | 1 + target/classes/blockchain/utility/Util.class | Bin 3819 -> 3819 bytes .../blockchain/client/TestEnrollAdmin.class | Bin 2371 -> 2371 bytes .../client/TestRegisterEnrollUser.class | Bin 2375 -> 2375 bytes .../query/ChaincodeTransactionTest.class | Bin 6700 -> 6891 bytes .../query/CreateChaincodeUserTest.class | Bin 3107 -> 4750 bytes .../blockchain/query/QueryChannelTest.class | Bin 1842 -> 1842 bytes .../query/QueryForChannelsTest.class | Bin 1476 -> 0 bytes .../blockchain/query/QueryTest.class | Bin 4638 -> 4638 bytes .../blockchain/user/UserContextTest.class | Bin 1047 -> 1047 bytes .../blockchain/utility/ReadUserTest.class | Bin 1396 -> 1396 bytes .../blockchain/utility/UtilEnrollTest.class | Bin 1388 -> 0 bytes .../blockchain/utility/UtilTest.class | Bin 2164 -> 2164 bytes 22 files changed, 45 insertions(+), 133 deletions(-) delete mode 100644 target/test-classes/blockchain/query/QueryForChannelsTest.class delete mode 100644 target/test-classes/blockchain/utility/UtilEnrollTest.class diff --git a/src/main/java/blockchain/utility/Util.java b/src/main/java/blockchain/utility/Util.java index 82db643..6fe9074 100644 --- a/src/main/java/blockchain/utility/Util.java +++ b/src/main/java/blockchain/utility/Util.java @@ -1,23 +1,13 @@ package blockchain.utility; -import blockchain.user.CAEnrollement; + import blockchain.user.UserContext; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; -import org.bouncycastle.crypto.CryptoException; -import javax.xml.bind.DatatypeConverter; import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.Security; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; -import org.bouncycastle.jce.provider.BouncyCastleProvider; +//Class to Read and Write user / admin to msp directory public class Util { private static Logger logger = Logger.getLogger(Util.class); @@ -97,40 +87,4 @@ public class Util { } } - /* - public static CAEnrollement getEnrollement(String keyFolderPath, String keyFileName, String certFolderPath, String certFileName) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, CryptoException { - PrivateKey key = null; - String certificate = null; - InputStream isKey = null; - BufferedReader brKey = null; - - try{ - Security.addProvider(new BouncyCastleProvider()); - String keyPath = keyFolderPath+"/"+keyFileName; - isKey = new FileInputStream(keyPath); - brKey = new BufferedReader(new InputStreamReader(isKey)); - StringBuilder keyBuilder = new StringBuilder(); - - for(String line = brKey.readLine(); line != null; line = brKey.readLine()){ - if(line.indexOf("PRIVATE") == -1){ - keyBuilder.append(line); - } - } - - certificate = new String(Files.readAllBytes(Paths.get(certFolderPath,certFileName))); - - byte[] encoded = DatatypeConverter.parseBase64Binary(keyBuilder.toString()); - PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded); - KeyFactory kf = KeyFactory.getInstance("ECDSA"); - key = kf.generatePrivate(keySpec); - - }finally { - isKey.close(); - brKey.close(); - } - - CAEnrollement enrollment = new CAEnrollement(key,certificate); - return enrollment; - } - */ } diff --git a/src/test/java/blockchain/client/TestEnrollAdmin.java b/src/test/java/blockchain/client/TestEnrollAdmin.java index 6441f7c..1101fe3 100644 --- a/src/test/java/blockchain/client/TestEnrollAdmin.java +++ b/src/test/java/blockchain/client/TestEnrollAdmin.java @@ -7,6 +7,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; +//Test to enroll Admin public class TestEnrollAdmin { @Test public void TestAEnrollAdmin(){ diff --git a/src/test/java/blockchain/client/TestRegisterEnrollUser.java b/src/test/java/blockchain/client/TestRegisterEnrollUser.java index a512487..db7bc3c 100644 --- a/src/test/java/blockchain/client/TestRegisterEnrollUser.java +++ b/src/test/java/blockchain/client/TestRegisterEnrollUser.java @@ -6,6 +6,7 @@ import blockchain.utility.Util; import org.apache.log4j.Logger; import org.junit.Test; +//Test to register and enroll user public class TestRegisterEnrollUser { private static Logger logger = Logger.getLogger(TestRegisterEnrollUser.class); //Success diff --git a/src/test/java/blockchain/query/ChaincodeTransactionTest.java b/src/test/java/blockchain/query/ChaincodeTransactionTest.java index f6776b7..2de4bac 100644 --- a/src/test/java/blockchain/query/ChaincodeTransactionTest.java +++ b/src/test/java/blockchain/query/ChaincodeTransactionTest.java @@ -17,6 +17,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +//Test for transaction public class ChaincodeTransactionTest { private static Logger logger = Logger.getLogger(ChaincodeTransactionTest.class); @Test @@ -33,49 +34,26 @@ public class ChaincodeTransactionTest { ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); Channel channel = channelClientWrapper.getChannel(); - Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); - EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + //OLD PEER + //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + //Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); channel.addPeer(peer); channel.addEventHub(eventHub); channel.addOrderer(orderer); channel.initialize(); - /* - List args = new ArrayList<>(); - args.add("b"); - args.add("a"); - args.add("5"); - - String accountFromKey = args.get(0); - String accountToKey = args.get(1); - int amount = Integer.parseInt(args.get(2)); - - System.out.println("args0 = "+accountFromKey+" -- args1 = "+accountToKey+" -- args2 = "+amount); - */ - - - /* - String[] args = {"b","a","5"}; - - Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"invoke",args); - for(ProposalResponse presp : responseQuery){ - ChaincodeResponse.Status status = presp.getStatus(); - if(status.getStatus()!=200){ - throw new Exception(presp.getMessage()); - } - String stringResponse = new String(presp.getChaincodeActionResponsePayload()); - logger.info("RESPONSE : "+stringResponse); - } - */ - TransactionProposalRequest tpr = fabricClientWrapper.getClient().newTransactionProposalRequest(); ChaincodeID cid = ChaincodeID.newBuilder().setName(Config.CHAINCODE_NAME).build(); tpr.setChaincodeID(cid); tpr.setFcn("invoke"); - tpr.setArgs(new String[]{"b","a","20"}); + tpr.setArgs(new String[]{"a","b","20"}); //send 20 from a to b Collection responses = channel.sendTransactionProposal(tpr); List invalid = responses.stream().filter(r -> r.isInvalid()).collect(Collectors.toList()); @@ -87,31 +65,8 @@ public class ChaincodeTransactionTest { BlockEvent.TransactionEvent event = channel.sendTransaction(responses).get(); + logger.info("Event transaction id : "+event.getTransactionID()); //print transaction id - event.getTransactionID(); - /* - BlockEvent.TransactionEvent event = sendTransaction(fabricClientWrapper.getClient(), channel).get(60, TimeUnit.SECONDS); - if (event.isValid()) { - logger.info("Transacion tx: " + event.getTransactionID() + " is completed."); - } else { - logger.error("Transaction tx: " + event.getTransactionID() + " is invalid."); - } - */ - - - - - //String[] args = {"a","b","5"}; - //logger.info("LENGHT : "+args.length); - //Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"invoke",args); - //for(ProposalResponse presp : responseQuery){ - //ChaincodeResponse.Status status = presp.getStatus(); - //if(status.getStatus()!=200){ - // throw new Exception(presp.getMessage()); - //} - //String stringResponse = new String(presp.getChaincodeActionResponsePayload()); - //logger.info("RESPONSE : "+stringResponse); - //} }catch (Exception e){ e.printStackTrace(); } diff --git a/src/test/java/blockchain/query/CreateChaincodeUserTest.java b/src/test/java/blockchain/query/CreateChaincodeUserTest.java index 7f12805..cac587a 100644 --- a/src/test/java/blockchain/query/CreateChaincodeUserTest.java +++ b/src/test/java/blockchain/query/CreateChaincodeUserTest.java @@ -6,16 +6,18 @@ import blockchain.configuration.Config; import blockchain.user.UserContext; import blockchain.utility.Util; import org.apache.log4j.BasicConfigurator; -import org.hyperledger.fabric.sdk.Channel; -import org.hyperledger.fabric.sdk.EventHub; -import org.hyperledger.fabric.sdk.Orderer; -import org.hyperledger.fabric.sdk.Peer; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.*; import org.junit.Test; import java.util.ArrayList; +import java.util.Collection; import java.util.List; +//Test to create user on chaincode -> don't work, can't use function "Init" public class CreateChaincodeUserTest { + private static Logger logger = Logger.getLogger(QueryTest.class); + @Test public void TestCreateUser(){ BasicConfigurator.configure(); @@ -27,19 +29,31 @@ public class CreateChaincodeUserTest { ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); Channel channel = channelClientWrapper.getChannel(); - Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); - EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + //OLD + //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + //Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + channel.addPeer(peer); channel.addEventHub(eventHub); channel.addOrderer(orderer); channel.initialize(); - List args = new ArrayList<>(); - args.add("user1"); - args.add("200"); - args.add("user2"); - args.add("150"); + String[] args = {"user1","200","user2","180"}; + + Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"init",args); + for(ProposalResponse pres : responseQuery){ + ChaincodeResponse.Status status = pres.getStatus(); + if(status.getStatus()!=200){ + throw new Exception(pres.getMessage()); + } + String stringResponse = new String(pres.getChaincodeActionResponsePayload()); + logger.info("RESPONSE : "+stringResponse); + } }catch (Exception e){ e.printStackTrace(); diff --git a/src/test/java/blockchain/query/QueryChannelTest.java b/src/test/java/blockchain/query/QueryChannelTest.java index 2d32497..4f3d4b8 100644 --- a/src/test/java/blockchain/query/QueryChannelTest.java +++ b/src/test/java/blockchain/query/QueryChannelTest.java @@ -11,6 +11,7 @@ import org.junit.Test; import java.util.Set; +//Test to show channels on a node public class QueryChannelTest { private static Logger logger = Logger.getLogger(QueryTest.class); diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index b5af101..11aebb3 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -9,11 +9,10 @@ import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.hyperledger.fabric.sdk.*; import org.junit.Test; - -import java.io.File; import java.util.Collection; -import java.util.Set; + +//Test to get balance of a User public class QueryTest { private static Logger logger = Logger.getLogger(QueryTest.class); @@ -25,29 +24,13 @@ public class QueryTest { UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); try{ - - //TEST FAILED - //UserContext admin = new UserContext(); - //File pkFolder = new File(Config.ADMIN_KEY_PATH); - //File[] pkFile = pkFolder.listFiles(); - //File certFolder = new File(Config.ADMIN_CERT_PATH); - //File[] certFile = certFolder.listFiles(); - //admin.setName(Config.ADMIN); - //admin.setMspId(Config.ORG1_MSP); - //admin.setAffiliation(Config.ORG1); - //Enrollment enrollAdmin = Util.getEnrollement(Config.ADMIN_KEY_PATH, pkFile[0].getName(), Config.ADMIN_CERT_PATH, certFile[0].getName()); - //admin.setEnrollment(enrollAdmin); - //END TEST - String chaincode = Config.CHAINCODE_NAME; FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); Channel channel = channelClientWrapper.getChannel(); Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); - //Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); - //EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); channel.addPeer(peer); channel.addEventHub(eventHub); diff --git a/src/test/java/blockchain/user/UserContextTest.java b/src/test/java/blockchain/user/UserContextTest.java index 7aeeafc..7d0133a 100644 --- a/src/test/java/blockchain/user/UserContextTest.java +++ b/src/test/java/blockchain/user/UserContextTest.java @@ -4,6 +4,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; +//Test to create a User public class UserContextTest { @Test public void TestACreateUser(){ diff --git a/src/test/java/blockchain/utility/ReadUserTest.java b/src/test/java/blockchain/utility/ReadUserTest.java index 15f837d..e3ad3f4 100644 --- a/src/test/java/blockchain/utility/ReadUserTest.java +++ b/src/test/java/blockchain/utility/ReadUserTest.java @@ -4,6 +4,7 @@ import blockchain.configuration.Config; import blockchain.user.UserContext; import org.junit.Test; +//Test to Read User public class ReadUserTest { @Test public void testReadUserOrg1(){ diff --git a/src/test/java/blockchain/utility/UtilTest.java b/src/test/java/blockchain/utility/UtilTest.java index af9979e..a6ac75f 100644 --- a/src/test/java/blockchain/utility/UtilTest.java +++ b/src/test/java/blockchain/utility/UtilTest.java @@ -7,6 +7,7 @@ import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; +//Test to Read and Write user from files @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class UtilTest { private static Logger logger = Logger.getLogger(UtilTest.class); diff --git a/target/classes/blockchain/utility/Util.class b/target/classes/blockchain/utility/Util.class index fe93204fa2e4863692cdc4dc9aa01616f0959310..933bc8902f1d500332790b2ce7a731da1777970a 100644 GIT binary patch delta 450 zcmWO2ODHS=6vpxY88k5@kB~<$<2e(PnLKV>*P9scXZI>85evma$%42W8w=`YV<9Oi zp()uY*;rU8DPd`$%)-Lbf^U0Hzpw9{a8@|$H62g@7P8lEg`6R#>mFA$_BB(GY zRTe{@xyZL93M`dk%b3AqZoF2A&pecvms0alW&!+GO~8IDpg{qR3TRb8J4F^0?2#Lh z8(suUavC&gq?IOmY32_d zj1gplZvCN?X}XxzW}ZG47}QVtSz>?{hFF#QM;q%h8!}rm|7Esic4T&C_GJ!a4rPx0 pLZ`G75;zyQ5V#b$61Wz)5x5n&6Sx<6WGM6y7j3RsOwCaHzu&%?QAz*+ delta 450 zcmWO2J17JI9LMqR|Bfy$laM%h%k$(29eEYRzRf{Qe|HJ=A*{^)LNYa8Wqr_fEER`QDz;2J#xcx<8lGH zDY+TBdATLIWx0^tirkvq22J6|*dfPiGY(paqE+{{>7sVE?@-fDO}pr&n^6V`Fvv6` z`oj=&470!(ON_IuO^69rm}HG0>k^yvu_d!Dvn#VFvoCWXb0~8xb0Tvpb6zHNNk3tM kYk?bqTY)=)dw~amM}a4SXMtCO;g`4=b0=bIhT4z)18P21ZU6uP diff --git a/target/test-classes/blockchain/client/TestEnrollAdmin.class b/target/test-classes/blockchain/client/TestEnrollAdmin.class index 1e2c68b405303e810f618ce7dfed525c0da03cb0..e3230188670997696bac2204504acc70cbf285cc 100644 GIT binary patch delta 91 zcmX>sbXaJ^M0Q5*$&=V$d-5?bGYBy7G6*qsbXaJ^M0Q55$&=V$d-5_cGw?I;G6*t=G6*q9GYB&%GKes!Gl((hFi0>MF-S7l tFi0`D0c8RhPEBKEKVZlFnbX<2##p-2Ht|~jr7Gggdu#|B%1VH t^1b9@Q<-34W@D~WI9fVcIa_P~dsDjGdN^q9boQRA{xyE5smK*0^$)No4Ql`Z delta 91 zcmWN`Ee=3n0D$2a!QU94`5!i#rYS~r4%tO)1QR7Ua0}UuXwUXM;t}_%O8T*>Z)c<6 pVBz8;NbsnB)dVzzv_y==O#jTJEEKF{Y~<{e$EjVWfkY3;3?Ho74OsvH diff --git a/target/test-classes/blockchain/query/ChaincodeTransactionTest.class b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class index deb57c0aaa353ea3b6dbba888891604cdeb0574a..61693cfed4c1c9eb4f0694c903a0b4ea08f3b2ae 100644 GIT binary patch delta 1844 zcmZ8i2Y6Fe6#h@!6WwcZU2RK6;+LV%nG$1&LI1v~4 zL~-FjWC$v)1_Z^4C@#c}GF+$>abVqo=e7v_`10kRbMHOpKmQpwS?la93~fKMX$t@+ z)$16Ag*tA=EdsY{xJ|?DIu>EEhC2id9UAV`utdqbbli=lO1nqHy&CS*aX%i=uuQ{) zN_|Mf!x|n@>T(^AVue~BQ_D)VtWp=Nb*#bTdI)Q=PUqzb9Z%vZ4eOO`7wFLNw1#Ii zgw??Y<+ss_XR*o7Y+tnECA_TT6}+mntpcxEk%Mh^5Z+YUTgv`z9q-^>f%hz^z)pep zbrfQuh7XkdP)7ki(z96oSjQ*$RA85m;rL9)=h&@I_9$(yz&^G4Lg34eSW1mb-zV@D z)8mo|d@b;ez(f zHGU>oX3TA9c6q(-R*7G5m?0&8MVG{H_??jGce?|5xxPSCzOhcE%i_Gke1ShC{={F# zOwrfaCSojnSRnB?{xOz|;?Tc1!lWdQ5+o5tNQ$H=NhZc5GYMuWNh4j5Rg$D=Nih`5 z%q7{V55es5&h|}rOR`fO!PerM?Q*obyiJaY!GOoxL?9P`rxGHDoV#r!6Sy3`)0A276}OFkey@WlPGTTuBbf6O=D$2o(r&5{kG$j^??3cc9hi zH1#nKX#GMMjVeOY$r)76^0YR(1AJ38+wBdeF;j1wt0Cy|dDA?NX(efr3aLoaP%4%* zjEV)7NGhcaLfi?csyPjAzjBc@ocl{7B#l(|Wt1VQoYDyyMx`YyvVtl*{1%gzHi||Q z64Gl=K-5odaW@1@Gp6XMpsJ1~eTs?At2=hsQ%N_w{C>B$k&t6lM8~CM^z!TJ!?7$% zjn262OfBg9zdK2)5H7!~q1o+d^))$L9JRitCY5fK$2-kuB*fPn^Wy7mHIl~Ac!}${ zBe)v#jotBuRA@Uw%MN42dIqraNG9<6jOq>*KtF~}MkGrs(im_6k}wecF$jZ^$xk~A<;do+IXDNo zxQIEsk%#GUBFImEK8mmaLlIhpVys39+EI!f48IE_u%DCf!f3K%42P_yMAT3UhgEqk zMJ!?{3KLMz`6ThPI}>Lyjs7@{voVqB4aPxC;-Drbu@~p!Jg!SQcH(?YhG0TlF$EX! zPiGLzaAAmZMKQ7K`2P!cY4P3}Bq@oc`h-M;DXoiOabNP;y)=D<%A=NNgxs{n=j0~gf#7O9hD@Jl=WxdA2ifeFf zHw+ITLMIPZ80Bl(tM^cq_VPC22Ib8qyz%%%4(O%;SnL%WQP}~fqCmZ-GLd_)fgGaIN%KF3DSV+&sB)?UXO*!~|&n{+n- delta 1644 zcmZXUdwkDj6vy9Zm*4aKeSZ&Tb}_Rd3>*8IZEWV+MJ0+$27h1RvXC2n2raI?!T-0HB%;Wi)M z?r?|0Vjte=au;{|%RT;bufN>qU)=BV01vwLEMcju%R?>?^N7Qv{=Urcn8R|1#~q&V zKdkWmR)%Qc$#_+}Cd68vaaqTDA8jx^8=?mr;}Kr;(M!Jl%Pz0*s^K-4TwXV9cFE_B zAVs|C@)mEqyhF=(efXYXi+_6G@Iga2NsH;a#qgnu(8LW}4ciPK8MYffHhg0E)bN?c zRLX|R*dY=c#9+e?%jXRCHUx45Us%56D{o&Qr(_U2h2W&=rRBwym5~a|*Lh6(f!}&`D}rB1o|i)vKqKptx2-VznMtnn`nS zvXfNOB2MC31f*pg^;Y7gm5~H1iIQX_*-C3kvC>9Th2|5A>x#ouYsXiFhmD_7Yo)EE z#Ywt)wu@t?mG;uX$}!T>N+;=TB*RJ<>1w2#(A(P)mFf*haJ}Zi_!!BQEUzlqI;}f{ zEdv;6q=%Jk$ubhQ(o@o{P=aP23hUQ0VM!OiK4wC1s5((y2n*()E=oidC%bqU*7G3hOTZ*UVMO3I$Od zr)!|;V*e-%TIwB@O@BSIz<8A>guFpFW# z)7u4{sslNKm5kKMIh}2cVkcwj*~>W^aH@u!!a-^!n!2V07STe3?dBv-R^iDy8AFvW zS_5xa%Hb+6gDpyWnx>Ph6FWkQ11e>$l8?fu#d6M2Nsh{x%UO&jsA6VtHe#$-BzUpIGgJl%wz<9S~A2WbpGfB*mh diff --git a/target/test-classes/blockchain/query/CreateChaincodeUserTest.class b/target/test-classes/blockchain/query/CreateChaincodeUserTest.class index bcfa8fe9e39afbb6091120068c0d5ef63779663f..d18a495ddb4b7e5e1eaea23277998f621e007ab2 100644 GIT binary patch literal 4750 zcmbtY2UHx_6}^KN{xA$kUNx^uBy1IsfCUw!EJTsO$dU~L3zZ&I%Z}a|p@4t87 z`|t1BbEoeIunGUsumwjojN?Xu7pi!XiWh5m30|t=WdbkPpyCxOUMc%mX*h;g%h63L zZdUOc4X?%PRJ>lr8|3hfD&C~x&2o5)hPU9YvU!_q-Y%PW2)t9pttxI)al49lsd%?! z_?{}f7k5hAZ(Qfe*{caSe6&h#Y-X!%}>#60P{Sz$Y{`;i!tc zWdBLod`iRJI3cO;5x7@QJ}vMWft-ShgcFZju7XInJ-4M7zCDZ6s>9 zlXhmSf;n~d`xS&bogquX+-^H*?aq!3TJBzBFu|2@w__TK{f2AHd44gJ8Mf03)^!gi z9COqhHtb~d`mE)SM>}21$XK0n#U#glX)?0X849eCz5iLRQiF8H$Yj$3Cpqr-#tQUZ z$)x3WCX962qJ+)f35Lg0mYcAKc&O-MW6-tDXnJTgIw@t3l}3f6SkGi9B_>k zHC3>-*f6H|ExN-~d>SEnEg&zRI5BNqL0t(3Jnk$?au9hA3RVT3Bfr}_wIy||4WjNN z2}xD!2#>WhJE&lF5P4UgOseC!LzXKA1gg{PQ%Q9UH%=$aKUB&?)pU^O+G{1c6fE+I zvKc!O?Q{|e%goqLl3Wz}Vqp=7uA`=v%6|)GJ-jV1wy9i-N*s1N$&7VW0(8-Iq!V*_ zw0D&h+8$((S*Y1c0o8=3Ioe~SJicDEo?@n8?h!aGa7N&>0{02rFK|%c0f7gZAs8M^ z4UFYI*<{8Zv-aC*n}N7JnRFO3JUneT&r@Y2%YcsNqfKom?EC=N`kkz6T03kR&dV+k zpiMG7bhM#e;Bz`2Lc4+$MbT|K$-{O$>v|$-dO4%-m|t2Hlp8~1c2eN;I=+A}a(Qgr zGzppF{TB=ZDfCMWD(>+CuH#`mLW}75GS2Gw3cgC;qzK67CMmATI%}Jxj44ZrZ5h8~7#x znFsR4%4==j+^pkU_%=PM<2(4Sj_=|7I(~p3>i7}P(oHi{5G^NhNR8%fXl~BWHgMLm zg|m?KpN=2nCj^6zpWB7Eh7;nX@BnCm7=js`hmC_x0}X?^+pKspC)hvyQ*uae=?; z_#6JN;~x@5ONvn7-w|FcOPuQXC;r7`H;du|Af0By-oX(@zrep0Yz#02^PYbd6%u&< zl2EX;NbJmXpkPhW*L()gr_dRx`m$i*GG#NA0*GX;Rd9I#MIpT^2ojc0sk~D>ht0^5 zyaK0|cV#R_vO}>R!)X;lhmp2TKfqgt2? zeV&fHD&;OO*|7`=-n4UvPsm+C-Y<~xZcSP@_-MJR#L-GwHUL!lE53?6r|@;n)8|`Y zCM`(blc>D<>9d|H8iX-4G--*aI^;!qu8KSh$}6BH0{9l_+Afl}M&8Ai2w+_}>C-J^SlJxG43TjzoPHGD6^L+zUoU>J@l$-PiBur1o-T%LK-n_q<6Ed@}3t5 zd6y-<$$|pCSBLu6~2nklE!&ZI6{s8*$oWy1dD{e_;um z$TU*xN4$SuZ1+mbf|x#IJmDBaJV{;sp$=Zvb%#3SmI_(%C%N8Ois!75%wL_-iW$e( zhbdK}VOkFMUuj+maM)pCTg*FeH7R^`~mOhK-`C=19QU5 z`UgVc<^2QY;b-&@RD@Ub$0{SChVaTrWe&A5Eux*mWeQ?dk*ZU;T)}M^kfT)!9>nUH z9?^4H6RVC?=dkt?JaPx-ok87zT&E?nQ#P4Xs*Sy_oe)@6g61J*>bGl{~G>ou#xRH ztVIv%u@CET9oEA_14j9y!7()B7PRokf(@7;@YEmx2PVA!8yE(ra*U*hMEd9Em7PE)u25Tw2f2k;#J(sB%04B#LtsiBQScrKB3j{C2}^T?TC;4TT2 zD*O-6#|vl|gEI*tpMH?^CRcW%{5)=lE-)lu2^V;PJwS(m8$z1gBw#b_Rccqjb}iTBUuAgnNnCL+8YRA!B7D!M!biAPh8wVh Oy~eLs(uiH#BL4^QC4r;> delta 1088 zcmZXTZEqA+6vuyecDHwSb}Y@3wqRS90xg2I`%nvgzzPB?vK6%jq!!9_JGM)g?XsP& z)(2J;1VsTE)Wi@aQR8dUL=Y1bUho2a?I-YisAqNwCNeM1Jr8rv|D69l_fpsQYpTEh zedjmeX}-4TB5N_q%bEiwub8}Q@fu?$XA{xf zoRcr+7G_*UJbS{aILU%joK22-<$Q5=cxBSqubP_bfh8|rNM`ekp8r>9YGl*@oI4)P z9vN0VHs(3G`BA4d?o1cl8gfPY@b87wzKZn3y4kFG%jRu1`vZ}_hGm;~c-KD_NpI=q zJw^27vb0z%x&@o}IjyPMe83r-5BW&ZQgYpL+W#Yx$PQ)(QkmX`%3N>J^@avh{b|iv zn{#}uu-uAU^yZePQ)xxVY`K&hN+v6%#r{W<`fSc~!Qa*}F#ZXjYA)J*#^*MdxNLKU zFKn)IMzOlaRE>~b<+8IJu%d`8ElM{U-{u-$Dngl5>VY>SR=PjsH|aH@uVmC4dL*Q1 z^JC$*mG)?dQr&)&)xEOa`d0bJ&90R{W38&W@jsM0K**Vy@$WXaRwopzN^(P9jotCG zlXK~0lk8aV87PETkxz(~lvBwW*?J3gvliYWvZ3aTvsHAv{sT|aBbMSRNj8FHb%zj^ z_

N5f8^Bw`s`6wSRxrvFfk19l1sOP;_lH-ti0T3=WHyc&M#^sCCx0pD;&zerDrM zL5Ojk?_?Ll1iehqBC=VqS|qZTMjoeCb~r(Y46=?s(RQ+4UQZ_nCF>{~sk$=nyo5bz z_Ovv6K}ubfajw%VrF*y`WBee~2LqO*Y@=Lauh@o^K1YhQz$Ij-GEzP)bt>{q`-zB^ zXB*pvpq)%Iz#v+H4=}{Ayh%@xcJK_*DFFyG!n0CP_<6uxjBg}umrVGacmrPR3A>51 hM?9-B{*mqs&0fv(D9sCDUX(y^9sA@|yd=_K|G#L~%~}8e diff --git a/target/test-classes/blockchain/query/QueryChannelTest.class b/target/test-classes/blockchain/query/QueryChannelTest.class index d870eec0483b7c76952b9ffb8d961678d3623f38..c92b0e80d41a6bf83d4378c1281b4c7f0d1ee1c5 100644 GIT binary patch delta 63 zcmdnQw~24V8&*dC$!}S!6h#=A8AKVl86+4)7$kvEn!$)cp23tsmcficj=_pSadHRS Rd~N{-Mh0UB1_mYu699)O37G%@ delta 63 zcmdnQw~24V8&*cX$!}S!6ona>8AKSk8N`941cM}l6oV0i9D^x?41*biEQ1w;!sHIN R`P}>rj10yM3=B*RCIE%K361~& diff --git a/target/test-classes/blockchain/query/QueryForChannelsTest.class b/target/test-classes/blockchain/query/QueryForChannelsTest.class deleted file mode 100644 index d9e78fe5132288bb2721eb42788500cb3116b1b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1476 zcmZ`(Z&MRT9DX)`xXXDc1OY*<#g+<$dIhPqK(Qe;s7(M3Wya~N<5-5oe)#L{djLz=u`q^33-_>O;A;z6EE>3P z;2RSUEadU6T9!?$n3z)DRTJN-ea*x}wSRA*Y+)Gd1}YYQz@q|2P&Ke2Fc3t|ri=w9 zYEj&D+_vi-N{7a!Bd4ZaD-2roLqA;;$j;2}3gjx$z7)7p^Fz7WY3<2)$K4BPDb^y- z4R+nwSNf?jmmd0wz@6G&5P8Smq3egvFC7`ba-ONR8pV}EHwLfCDe&SMz!c@Lg1hqepwefg3iRM=w3uPW>okxxq&2ddGFQt(zsyB=UJDO#PPJ^%I{g zl*2GeT@_9ehBV1X9kS`1c5AMB!6~~|BkIJS?BSdEKX&e_Zfs0o(!gUIPcSKPy^q)P zWC+;({R`ac3-+S$z;AY94bCBb)C9&`N!uwaq7{zBIhL=IG>WA<^{I^?QDckeV)VTz z!V(*GJQXmu;^soVv29~hsX30;f{iUDk7z*uCDO*W>SVeP+{Y)xz%v`q(XcU&Yozqw zdRu!((n|$yUzp@|H}Sn*hpOL*lTkQpU)}CZ-}N@q*bkd4YS0UTpQM@wf#I3i3ln1` zGTn4rtYA{AC+#Qu965^Rg9AVCHL;wuHVdYDP26Pq$Uljr+URRT9j zR%So?NHN7HJ;vWcz*59e%2MW}aJ^2=;V!u6=T0DAQ^?>3*8y!D!cEF{F94t57BzuS znViwdf3Vm9Z5wZpd57$a6Xa^|kbhA$PGHvOyC`gG)uOtbo5<0yoG%qGbzzr^gI!!M z6|ZzL^c&1tsf*%k7U%DTGXJEkhH)Q*EPs{SHC!UzG4Tdw|C4ialNeeYd4sFJV^q;8`sf^{_7!azEc^{jz*_YH diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index 1c08942325d2dd1bb1983612a9da451ba9f4f8af..e62b557cdd04ea29b51bd689a54fda00e9fa5198 100644 GIT binary patch delta 149 zcmWNKI|{-;7zSsxQ!ud*l_);4iufXCeU;JP(lTW#I|UEmK>~Jm3VQ*2!E*?L7GA)g z4`zxfzEr3B7COqc#xW`>k)=W&j{-Hy)M?1NG%>V@XtTj*izcQ+B4tO9BYjQ`I5XtJ p2+No|0Z%5p2zfK-!;~*Gek|<6T`I3ghCK)mti?H$99&sN)j!*R7^naM delta 149 zcmWN~ze)lD0KnnzY)kOcK{*;+j)sb)&MdL~OWD%c*mzT0f)C(>9JsX=+zYr1K8GOW z;0t)mH~rw3#aaA!7Y5Zl36mhLI}s_nRB@%@TGNdSEs0yh!gp;S?tSV=J^0c!*R$|s s>DiCI+`!7n#@N=x&eXpbd#?`O^7Ywca9&gLP2sG_I29CwU!!4k1Xs8kIRF3v diff --git a/target/test-classes/blockchain/user/UserContextTest.class b/target/test-classes/blockchain/user/UserContextTest.class index f6e3c6a4a9600493ae003db52d433fdb1d864c7d..cfa4362943b4653153ff640e1d586b7dd1f1e60f 100644 GIT binary patch delta 51 zcmbQvF`Z*W5Hlmk#9+uE%wWkNGWjX9 F5dg|z2K4{{ delta 51 zcmbQvF`Z*W5HlnDfI)*nkin2ah{2LUc=A(b FBLK;H2I~L- diff --git a/target/test-classes/blockchain/utility/ReadUserTest.class b/target/test-classes/blockchain/utility/ReadUserTest.class index e29c3d74246216d94e90fd06d3df60a7d0287f4c..4e2f922ff5a81adbcb30ddf5703149a51cda10ae 100644 GIT binary patch delta 55 zcmeyu^@VFgISV7l23`gk20jLD27U%B1_1^a24Mzw20;c7po|ZL J$Yf1cZvZ5!2vGn4 diff --git a/target/test-classes/blockchain/utility/UtilEnrollTest.class b/target/test-classes/blockchain/utility/UtilEnrollTest.class deleted file mode 100644 index 12bd5ce2cccc6e663ab30b2dab343a0340dbe29a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1388 zcmZ`(VNcsu6g@8q*fB29P++B732nCmEqG(lZG_RKEU>nQN+d;^_Q{yn@W8Pn`(;{x z(LQ&R+G>;b1NM2pXWDrVtf8nN`Q3ZpdGDTce4W4l{o^kHt9a_5g8L4Zuw2Gfcs4$F z@C8;Zd}(3T#+rj+JTQ;1Y0su8rIVx>0)it`Hx0;R3wND7SkDwcb_&Y?_O!C}No#ZST@ItWr_^0Q(| zAFE8@wtpBU;c0jrsMzai6)FAFd(O2Hr%4pGWTx3^!mRZjsryygk+BxAyQkYpbYy6b z`X|B9fu|C0TSd}v;~pc@`RV;FCzPo^KWOJkjub>s_Q6pQx4p(Mq3mjv#JuiGQwQPc zZqUuy(=|G?-;1^C$ODxr%Bsh4q5}h`s`1>llOFBy&Lr3yVRUAf(@c74DEs^-E{a_? zI$TU*%EEUp>X>pdfoo*8Wd5qnR(-!!Z8e&$s>v-pa8Xc1ZD?p4U_nVYWLEd zowt=|0@IzW>(!4sDmFwi?^M3bbdpNbyy0RSJJk3dCNOa07&XqA{!7)JMyuM`+kfW! zjorpxpA}zN&gPNWBgD>3pGK2g&~H;Sqkf^@)TxTwdA%H|Oy_nAT%BLI zG2hmTNHjnu~K@Cp+7PFW5s@h zvVZS2oZUPfVY;`(biHI?E@8jIHh|Grys(HBtnv4yn73ZW2(KJxHo@o`xlXe66z;I) zA`vUpw1!zcKo#q(8j71FJc&>Ef0Osk5H-u)0(VD=zR9~5VdEBSC7vtcHg}Bb+L@?N u8CxjyEPPhNT_#5VJXaeF|64Ve9|6jhv9}oi9Ytf87_iG2wa8il_x=MlheA34 diff --git a/target/test-classes/blockchain/utility/UtilTest.class b/target/test-classes/blockchain/utility/UtilTest.class index 67dc2a15c8d18caca38462160ee8dfc692dde113..f95febe409e664c8c7848aad9d6e985c39e2fb00 100644 GIT binary patch delta 121 zcmew&@I_#Q02?FEWI?tvNkIl?24Mzn1`!}B${@}l#$d)E!C=QAHTfgE#pD}o!HV)g z6$(HVia-@g43Z4W4Dt*rK&Z-~#h}ih$DldchrLHq7pO`Ps7fEG$^dANAM Nb5a?3Cx>&$0svY}5vTwF delta 121 zcmew&@I_#Q02?FsWI?tvNdX3C1|bG+24Nr+VGw5!WiSJhb_|k}KeAg)zQGo(C Date: Sat, 17 Nov 2018 13:19:35 +0100 Subject: [PATCH 19/21] JAVA-API BACK Setup firsts Back Methods for API --- src/main/java/blockchain/query/QueryWrapper.java | 4 ++++ src/main/java/blockchain/query/TransactionWrapper.java | 4 ++++ src/test/java/blockchain/queryWrapper/QueryWrapperTest.java | 4 ++++ .../java/blockchain/queryWrapper/TransactionWrapperTest.java | 4 ++++ 4 files changed, 16 insertions(+) create mode 100644 src/main/java/blockchain/query/QueryWrapper.java create mode 100644 src/main/java/blockchain/query/TransactionWrapper.java create mode 100644 src/test/java/blockchain/queryWrapper/QueryWrapperTest.java create mode 100644 src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java diff --git a/src/main/java/blockchain/query/QueryWrapper.java b/src/main/java/blockchain/query/QueryWrapper.java new file mode 100644 index 0000000..24bdbff --- /dev/null +++ b/src/main/java/blockchain/query/QueryWrapper.java @@ -0,0 +1,4 @@ +package blockchain.query; + +public class QueryWrapper { +} diff --git a/src/main/java/blockchain/query/TransactionWrapper.java b/src/main/java/blockchain/query/TransactionWrapper.java new file mode 100644 index 0000000..0d2b352 --- /dev/null +++ b/src/main/java/blockchain/query/TransactionWrapper.java @@ -0,0 +1,4 @@ +package blockchain.query; + +public class TransactionWrapper { +} diff --git a/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java b/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java new file mode 100644 index 0000000..cc7c697 --- /dev/null +++ b/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java @@ -0,0 +1,4 @@ +package blockchain.queryWrapper; + +public class QueryWrapperTest { +} diff --git a/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java b/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java new file mode 100644 index 0000000..53b642c --- /dev/null +++ b/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java @@ -0,0 +1,4 @@ +package blockchain.queryWrapper; + +public class TransactionWrapperTest { +} From 78f0b30ddaa42224b4eaf9fe57e0d9673e90fbee Mon Sep 17 00:00:00 2001 From: GME Date: Sat, 17 Nov 2018 13:20:00 +0100 Subject: [PATCH 20/21] JAVA-API BACK Setup firsts Back Methods for API --- .../client/ChannelClientWrapper.java | 64 ++++++++++++++++-- .../client/FabricClientWrapper.java | 6 +- .../java/blockchain/query/QueryWrapper.java | 49 ++++++++++++++ .../blockchain/query/TransactionWrapper.java | 37 ++++++++++ .../query/ChaincodeTransactionTest.java | 1 + src/test/java/blockchain/query/QueryTest.java | 10 +-- .../queryWrapper/QueryWrapperTest.java | 14 ++++ .../queryWrapper/TransactionWrapperTest.java | 22 ++++++ .../client/ChannelClientWrapper.class | Bin 3060 -> 7855 bytes .../client/FabricClientWrapper.class | Bin 2976 -> 2976 bytes .../blockchain/query/QueryWrapper.class | Bin 0 -> 2712 bytes .../blockchain/query/TransactionWrapper.class | Bin 0 -> 3201 bytes .../query/ChaincodeTransactionTest.class | Bin 6891 -> 6891 bytes .../blockchain/query/QueryTest.class | Bin 4638 -> 3164 bytes .../queryWrapper/QueryWrapperTest.class | Bin 0 -> 1029 bytes .../queryWrapper/TransactionWrapperTest.class | Bin 0 -> 1675 bytes 16 files changed, 184 insertions(+), 19 deletions(-) create mode 100644 target/classes/blockchain/query/QueryWrapper.class create mode 100644 target/classes/blockchain/query/TransactionWrapper.class create mode 100644 target/test-classes/blockchain/queryWrapper/QueryWrapperTest.class create mode 100644 target/test-classes/blockchain/queryWrapper/TransactionWrapperTest.class diff --git a/src/main/java/blockchain/client/ChannelClientWrapper.java b/src/main/java/blockchain/client/ChannelClientWrapper.java index bfd2f3b..4e84469 100644 --- a/src/main/java/blockchain/client/ChannelClientWrapper.java +++ b/src/main/java/blockchain/client/ChannelClientWrapper.java @@ -1,18 +1,20 @@ package blockchain.client; -import org.hyperledger.fabric.sdk.ChaincodeID; -import org.hyperledger.fabric.sdk.Channel; -import org.hyperledger.fabric.sdk.ProposalResponse; -import org.hyperledger.fabric.sdk.QueryByChaincodeRequest; +import blockchain.configuration.Config; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.*; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; import org.hyperledger.fabric.sdk.exception.ProposalException; - +import org.hyperledger.fabric.sdk.exception.TransactionException; import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; public class ChannelClientWrapper { private String name; - private Channel channel; + static private Channel channel; private FabricClientWrapper fabricClientWrapper; public String getName(){ @@ -46,4 +48,52 @@ public class ChannelClientWrapper { return response; } -} + + //Method to init the channel for query + static public ChannelClientWrapper setupChannel(FabricClientWrapper fabricClientWrapper) throws InvalidArgumentException, TransactionException { + + ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); + + channel = channelClientWrapper.getChannel(); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); + Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + channel.addPeer(peer); + channel.addEventHub(eventHub); + channel.addOrderer(orderer); + channel.initialize(); + + return channelClientWrapper; + } + + //Wrapper for channel.sendTransactionProposal + public Collection sendTransactionProposal (TransactionProposalRequest transactionProposalRequest){ + try{ + return channel.sendTransactionProposal(transactionProposalRequest); + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } + + //Wrapper for channel.sendTransaction + public BlockEvent.TransactionEvent sendTransaction(Collection proposalResponses){ + Logger logger = Logger.getLogger(ChannelClientWrapper.class); + BasicConfigurator.configure(); + try{ + + List invalid = proposalResponses.stream().filter(r -> r.isInvalid()).collect(Collectors.toList()); + if (!invalid.isEmpty()) { + invalid.forEach(response -> { + logger.error(response.getMessage()); + }); + } + + return channel.sendTransaction(proposalResponses).get(); + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } + +} \ No newline at end of file diff --git a/src/main/java/blockchain/client/FabricClientWrapper.java b/src/main/java/blockchain/client/FabricClientWrapper.java index b06237c..30b7cb4 100644 --- a/src/main/java/blockchain/client/FabricClientWrapper.java +++ b/src/main/java/blockchain/client/FabricClientWrapper.java @@ -2,12 +2,11 @@ package blockchain.client; import blockchain.configuration.Config; import blockchain.user.UserContext; -import org.hyperledger.fabric.sdk.Channel; -import org.hyperledger.fabric.sdk.HFClient; -import org.hyperledger.fabric.sdk.Peer; +import org.hyperledger.fabric.sdk.*; import org.hyperledger.fabric.sdk.exception.CryptoException; import org.hyperledger.fabric.sdk.exception.InvalidArgumentException; import org.hyperledger.fabric.sdk.exception.ProposalException; +import org.hyperledger.fabric.sdk.exception.TransactionException; import org.hyperledger.fabric.sdk.security.CryptoSuite; import java.lang.reflect.InvocationTargetException; @@ -40,4 +39,5 @@ public class FabricClientWrapper { Peer peer = client.newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); return client.queryChannels(peer); } + } diff --git a/src/main/java/blockchain/query/QueryWrapper.java b/src/main/java/blockchain/query/QueryWrapper.java index 24bdbff..8507b79 100644 --- a/src/main/java/blockchain/query/QueryWrapper.java +++ b/src/main/java/blockchain/query/QueryWrapper.java @@ -1,4 +1,53 @@ package blockchain.query; +import blockchain.client.ChannelClientWrapper; +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.hyperledger.fabric.sdk.ChaincodeResponse; +import org.hyperledger.fabric.sdk.ProposalResponse; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + public class QueryWrapper { + + public String getUserBalance(String userHashId){ + String response = null; + try{ + UserContext userContext = Util.readUserContext(Config.ORG1,"User-org1"); + String chaincode = Config.CHAINCODE_NAME; + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(userContext); + + ChannelClientWrapper channelClientWrapper = ChannelClientWrapper.setupChannel(fabricClientWrapper); + + String[] args = {userHashId}; + + Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"query",args); + for(ProposalResponse pres : responseQuery){ + ChaincodeResponse.Status status = pres.getStatus(); + if(status.getStatus()!=200){ + throw new Exception(pres.getMessage()); + } + + response = new String(pres.getChaincodeActionResponsePayload()); + } + }catch (Exception e){ + e.printStackTrace(); + } + + if(response==null) response = "Error"; + return response; + } + + public String getUser(String userHashId){ + return ""; + } + + public List getUserLastTransactions(String userHashId){ + List transactions = new ArrayList<>(); + return transactions; + } } diff --git a/src/main/java/blockchain/query/TransactionWrapper.java b/src/main/java/blockchain/query/TransactionWrapper.java index 0d2b352..f1b62eb 100644 --- a/src/main/java/blockchain/query/TransactionWrapper.java +++ b/src/main/java/blockchain/query/TransactionWrapper.java @@ -1,4 +1,41 @@ package blockchain.query; +import blockchain.client.ChannelClientWrapper; +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.hyperledger.fabric.sdk.BlockEvent; +import org.hyperledger.fabric.sdk.ChaincodeID; +import org.hyperledger.fabric.sdk.ProposalResponse; +import org.hyperledger.fabric.sdk.TransactionProposalRequest; + +import java.util.Collection; + public class TransactionWrapper { + + public String sendTransaction(String from, String to, String amount){ + try{ + UserContext userContext = Util.readUserContext(Config.ORG1,"User-org1"); + String chaincode = Config.CHAINCODE_NAME; + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(userContext); + + ChannelClientWrapper channelClientWrapper = ChannelClientWrapper.setupChannel(fabricClientWrapper); + + TransactionProposalRequest tpr = fabricClientWrapper.getClient().newTransactionProposalRequest(); + ChaincodeID cid = ChaincodeID.newBuilder().setName(Config.CHAINCODE_NAME).build(); + tpr.setChaincodeID(cid); + tpr.setFcn("invoke"); + tpr.setArgs(new String[]{from,to,amount}); + + Collection responses = channelClientWrapper.sendTransactionProposal(tpr); + BlockEvent.TransactionEvent event = channelClientWrapper.sendTransaction(responses); + + return event.getTransactionID(); + + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } } diff --git a/src/test/java/blockchain/query/ChaincodeTransactionTest.java b/src/test/java/blockchain/query/ChaincodeTransactionTest.java index 2de4bac..db982fa 100644 --- a/src/test/java/blockchain/query/ChaincodeTransactionTest.java +++ b/src/test/java/blockchain/query/ChaincodeTransactionTest.java @@ -57,6 +57,7 @@ public class ChaincodeTransactionTest { Collection responses = channel.sendTransactionProposal(tpr); List invalid = responses.stream().filter(r -> r.isInvalid()).collect(Collectors.toList()); + if (!invalid.isEmpty()) { invalid.forEach(response -> { logger.error(response.getMessage()); diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 11aebb3..7b66897 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -26,16 +26,8 @@ public class QueryTest { try{ String chaincode = Config.CHAINCODE_NAME; FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); - ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); - Channel channel = channelClientWrapper.getChannel(); - Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG1_PEER_0,Config.ORG1_PEER_0_URL); - EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", "grpc://vps577432.ovh.net:8053"); - Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); - channel.addPeer(peer); - channel.addEventHub(eventHub); - channel.addOrderer(orderer); - channel.initialize(); + ChannelClientWrapper channelClientWrapper = ChannelClientWrapper.setupChannel(fabricClientWrapper); String[] args1 = {"a"}; diff --git a/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java b/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java index cc7c697..aa4d5ff 100644 --- a/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java +++ b/src/test/java/blockchain/queryWrapper/QueryWrapperTest.java @@ -1,4 +1,18 @@ package blockchain.queryWrapper; +import blockchain.query.QueryWrapper; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.junit.Test; + public class QueryWrapperTest { + private static Logger logger = Logger.getLogger(QueryWrapperTest.class); + @Test + public void TestGerUserBalance() { + BasicConfigurator.configure(); + QueryWrapper queryWrapper = new QueryWrapper(); + String response = queryWrapper.getUserBalance("a"); + logger.info(response); + } + } diff --git a/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java b/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java index 53b642c..da77485 100644 --- a/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java +++ b/src/test/java/blockchain/queryWrapper/TransactionWrapperTest.java @@ -1,4 +1,26 @@ package blockchain.queryWrapper; +import blockchain.query.QueryWrapper; +import blockchain.query.TransactionWrapper; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.junit.Test; + public class TransactionWrapperTest { + private static Logger logger = Logger.getLogger(TransactionWrapperTest.class); + + @Test + public void TestTransaction() { + BasicConfigurator.configure(); + QueryWrapper queryWrapper = new QueryWrapper(); + TransactionWrapper transactionWrapper = new TransactionWrapper(); + String responseTransaction = transactionWrapper.sendTransaction("a","b","15"); //do transaction + logger.info("TRANSACTION ID : "+responseTransaction); + + String responseUserB = queryWrapper.getUserBalance("b"); //check new balance of user b + logger.info("BALANCE USER B : "+responseUserB); + + String responseUserA = queryWrapper.getUserBalance("a"); //check new balance of user a + logger.info("BALANCE USER A :"+responseUserA); + } } diff --git a/target/classes/blockchain/client/ChannelClientWrapper.class b/target/classes/blockchain/client/ChannelClientWrapper.class index f0e517c0bf1f6b3d35711331ca021d5fd9c94f42..4f571c9247e70426d974976e0f3bc27f8dd34743 100644 GIT binary patch literal 7855 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 b9s8Q&7;BUKwu zVAJpk)VH2QgTg5qf|J->fD>psiRJ>_iSoMQBlpsfI|^6e=E??uP) zy@cE~p^V8iKo#96Y^0)KoRly|%5V@3RIMFj#QX|UT}i{PVq{&NLAimMlt7XO4tfR( zQX?4yM{ty0Va4Y6>u^2Ikf^KW+vPmwAS+Y{Js8%a;8ApIxIx3y9w&r_8lJA<8JvL1 z!gFI~KsFHaNEn_^c>-)%3;olX!q#l+2b>R=&?lEVO3TtDbd=$Mqy2am6vc5<^2B9J zQVQE{C6QZ2+*)|h5tFWk&n2@I+2=V_&xg(TYX0uP{kWFmZsvc>KSrHuRqbjE>Tnmo UiwY^y+)byQbVi@XXYkqo1EA>%TL1t6 delta 876 zcmZuwO;Zy=5Ph?|WXxtvNQlG`5rZ0FLxdoH#b8v7f}g1P0r(X$DjK3?Jm@J`Z(6lK zL@7wLJop1VdGp}aqereNz;wK=QJIUDD3LE@ssB>}5iS}qGj+;<|n8WC^I z*o?$w0lWBWvHbky(z9w!;)=vocg1?^7VV+gPJ|UA=u(Jcn?e$^64w;2}rEHH@8l-1t-zJ0j_W^ ziyfoRM_5j}0pScc*x$)CV6O0@rKFqVf_g3V!OzY?E~twndM>9$urU{@yoKpyM7@<6 zUZj_1vgvN@q1RLYB)6n5aAjr_9ZmRh)+fkx6YlGtzBV@rG8&=`2U%p0=UZr5Q!Vm;vI@k6DS!=GA7*nM4G?XTYrn@}d5mccbKLnn zFEZH2HymN9e!W&^l$k6u0f^toN{mUO$C>bv^8gOw5Mu*}`5p119B$LwBq;K~xrO*& D(>z`t diff --git a/target/classes/blockchain/client/FabricClientWrapper.class b/target/classes/blockchain/client/FabricClientWrapper.class index 017d1ab455721ced9f277f59564ce0cde8367bdd..37ad9e350a8c2f695efc1d0d60358d1b0afe875b 100644 GIT binary patch delta 71 zcmZ1=zCe7#c}_;*$rm^yM8z0b7{nPk7$g|@86<%$DFy`w>B+WS<(zU1oDA{|A`A+X a_i}adsxWXds4|E#s52-rXiN^__5lFc1`DPD delta 71 zcmZ1=zCe7#c}_-=$rm^yM8z3c7$g`t7$h0^8KfA*8KfB$7-S~fa+Pz+GjIagA`FU? a_i}adsxojfs4<8!XfP--Xig5{_5lFd+zYe- diff --git a/target/classes/blockchain/query/QueryWrapper.class b/target/classes/blockchain/query/QueryWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..d59212fbfc4734a8ddcb0c51eaa98998c8180589 GIT binary patch literal 2712 zcmbVOTXz#x7~Q9xX41)&mb4TiA|SUES|W1O6bm#KEw<%S3YOw!IvvuX!%Uc&Ai*n& zqAuTDKKSG#ulmx0EYUYz{sDiD;y#nKOxnaYZ0;#CGj)K%hC>b6!9xcr%tj`-tsYW96&UmVeHecDR!s z@l3-xZ}_%c*EW@K)(!+Vk4!tBIcLrqwwt?Fw){%&j2ticMyX`^{Q_%>RyYw@{-EI) zu1R$}vm;lG>qd^tVs1S2ZMWFpvvQ061)&j^0~HSE2-!^l>%v`P@y)udFtQC|zH?X!>wa_c2200<=J9)!Bk$TW(mROkh`Btr?x=PDH5c zF49034Ui6}ZeJkVKmoZ}aZ~bO_(k&2In~I$HgXj47KK!xyLzb{+D@+EIgVw9w&zld zAi#Ao4MR6ft5iEvBryWXMO{)&T|O~(wVWDisQ<`+iqQbwX=9kpxlyAO>5bC;f{Lpw zB^9oUgDN}~C6)|Ri?t%4jeBL^v`*ME-Pgtwc(06_j%TrnxgJY(({nG|#j{+ESmS?t(kMW5dZZQ=e8(Rvaj!*HKbn3Q_&+&zv-O=%-B&B7@ z_dUjUQw&(-TU{Th!*FW)3NuH=R|5N2aq>ykE3h$UYkAqRzr;>!)zc{XSv?WbW!cP1 zeY`y!T8yxSw?3v+O4wl~H^E=_OW!hPVs$T2Xwcwd#j(`#;wo1*k1cgoyc}k~?AUr> zh2>HWoWPkniB%d$&(rsZjwqIcl_(h12jbLI!E4Y^YE6C_;jGuBy~J~OHhyc7f8J4N zjbJS5x_qrJvYy;%(Y1I#dQGaC#oMiXbQWKX!@Tl8(u`VYX_(D{x<;)aFp6vr_4aC^ zWbOAy(GLyWI zHi3L=ru9D72z-wLIcpdA4IOzcqs?P&K9xz$BfS=X{D6)J=$w?hT?<(E>jUbPi|z%i zAHDnN;aw!h`sT5r_je@HnbF=K>0}db;|{-X6i84fk>=RJ-84UZI_*nn=HZ9otC zIYfpg$jv3PQzXEUkZ%$6ZS0_yZR~8@@eOw2TVx|*ZW8<@p6#G?ijuw9jXl(?;U?#O zXr_hh*h`KTT5#|J_MwH=EWC*Qq__uD{K7lP@3=!4n*BEF&i z9sE+b^wJ;TAM%@*_endNZC$R}56Q_n=eeKzc|E6p|NHx20N%&1D&E9(1*J5`(im4U zfsfL-pfL?8TP~zEYqIq^?+w6^sh>=7%2$BuZ}86d0JY9P@T#xng=Vdd22UcFHw$`+@FR z^1D5m2o@|~U}&mhyT+2Spj%GiQN#3B3p1YX__`5Tt~2ZD^}6Ye5Y;!GYGg&=W`1f> zU(pM;?$iq9z_Xm%$aZFiH*XT?Yxt&Da-G0@5(w;%l9DTh`<-Qy$%J%`(A;b{xWRe7 z;#o$?woE5z8zFEk3TuRGg^A4@sbCisIF4y=0LXU%D0SIMgx;X;30$0Vy;@;ml|Ho1 zYK?}ph!y862o=oty;s=r9t$s{GwTm^cjXh zX6h+9R#4SoVxCLOs|Gzj6vfyw`=r8}f&~p07BwuvRPGymarr;NW3o&UQlQ|4SM5#<)D_AYu=bH`4Gxchu4G5IB)qsYhHQS|^99&n_ zn>NVCdNe|+-8Q;aJqyS;gGRl*CUAEhbWFop$1z3&^Egv8gH~5!Kg$ot)xnL4)<#Ml zj)}+GHnv^Id>ko*P923!N#Jt4zO6;c;AjkkNF!ralEn3fWmir1Pv!OKY`pFW#F4fP zm7d<7(lrU{V*qdK%j^eZU6L!-+ua!?E7BB!p)Aa*WpuW<{p~w;jV)SLbCa2oEd@7|h0@n2hLX#km z=k+%M$$b<9d=4UmUFgSd?BmJ-nmh7Cqh4I$SbD#Oc9m$OoJm9cBaiwIxc5VT_uv}N U^PT1B94h>~A^5jp8Xj{00XlWD{r~^~ literal 0 HcmV?d00001 diff --git a/target/test-classes/blockchain/query/ChaincodeTransactionTest.class b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class index 61693cfed4c1c9eb4f0694c903a0b4ea08f3b2ae..584e9065e1aaa7a8ef03bdfa0c9bec31945b5217 100644 GIT binary patch delta 52 zcmaED`r35E2?<$ShFc7F49^%`7``&NG72$xGKw;|Gm0^IFiJ6aZGI|Y%gAcaz{TJ& ISzYP~0FsamH~;_u delta 52 zcmaED`r35E2?<#nhFc7_49^&x8NM>OFbXkvFp4s`F^Vy`GfFXdZhk6Z%gAcSz{Oxc ISzYP~0FjanE&u=k diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index e62b557cdd04ea29b51bd689a54fda00e9fa5198..35fa21a47ee8b20b3b6481fa5eacab9805a4144c 100644 GIT binary patch delta 1120 zcmYk5+gDU|6vscm!WPV(=HBL zscB|(x+$rcDb`cQS~D1{%VVqO9((LB=(Sa}f6!WW9`^0*>v!+prKP{sm45mAyB~l~ zzIIv44wo#wnr9uJb9mn61$H{@(&StmcDv+xQB!bu$zhMt_D1QWKg!Dt7_v`Obn)5m zvVuX)D@HlsQp-Uj4Y@=aj?ly*&8sd+ns+!HHo_4@UUPY!H;nt6nxjT3X+}nWzoCv# zo>gm9aJuTx#YZ)7Ne|MK=55Vd%{!VCQdo0bDhA)!z0p=unv))myuD_VkGR?9q(R^F2w9%p$!=nFR{&+&m|^BCnrN$C;rk;lh;qG$__MeBpKHGh@I zr+j9}dBuYM+@V~@K(4r_W7FY$VQ{E#f6?OtVtmx58}j~ee_VQ6@81DlW_Ye`!1f@>y73_Q1%zdnsM^nu??iZUSg-)=Fj1+GW*9TZFO{ExS4QmNW=|0v; zs<0HWd5{efAyEIjhA3lf>VvYPvMr zG~3}XIyH}Lx@Tk=1+6vuxPlDx@eC=lopS}bL^lqPM#Vo*U51X)~Au(*aYroocdTIy~D_gx(K z1w>SE7pv1k-S-XmecyNGc=Y&9@xC9klym*PZ|lT1#wIE7P9PE(w2VRD8^R`WA0Rr$pu=x(BvYM zi?w)(#id-P$>o}?)#M6=YjUN@RTkORTpi{bt_^b?*K2Zv;zo;6++;C>b&B;`x!GbY z8?+TwD_?^gxltW;$I? zrgP4!Wd>uly<}Ei7oTeDSnhP_6kVnwaDY}fp5-$p-mTaoTbE%f9#C{E9#lM}@Dz&` zJ&Io0y5fG>vwO>crQt@VDz@5eW2&qCjln*fhk3-^*I$=yX0c-`g=o^;RjSCzfVTQVJ+w|PfKWb-cX*}TsO?pA-?{E&}qKICKfSASXQCwywt z$Y(a6^M#haw3)(g?#MuO@mG9p^9`RWzP0&|?`?jNu^t_$9PlGQxvK-k{+|sR+?S1V zcY#^vZV${gMrqBOSwKals1?B+7)EPPxNztOxyb&Lb|b+*b{*Q>;UqhqeCo{Bw4lXc zj|uZvB)gKa)?_9XTh!T+&ZOMws;0eRm1Yw3u#Y2d%QSyvFFV0*9B;~ zCW;FN0ba&AQRCBKKlkR~c(>jxFUjLIEUtgMomX&23pS}{Nk|T=y1@R0h?2ZX<2t!~ zdA|IF9I$h>-MBfjG~aDlA_^4^=H;S71;aEQS(1;mB=XbhJW$<(u|)(Q38BH9aWK$LPes=s=G#LwJ5YgZmiUq^;w6 z82?zG6xGUv9(GL>JwSCI6PtRdiAZO)(IO!pF^~ABof|h{E~xRS+aj|F^CQ2=&FRlg zZ3V++8pSf=GVzpCL*VFDmxXqdr6#jO&ha-nL47pW%J?@+#p%psphOO5UuMa&8`zK8^0z6< z@-cJ7=%bXkn9KgsU8UR`^O!GPkK-9>W+4G-t(OBhP)>dZcX1F0qr|h0MI0g@tuFb- z9m--t(qft=942tuA^A-#mCAyEJUYUB&*2;)lQ~kX8adhigrg+kXfe$pu#=0h6~`!& zie-vs#d3wCI98ETv?$Vw6-tJ}pG;P?Dpu~4;rRM`-sPn%TJFl`rZa{NDtt`eL6 ng(CI6G;~j*TEkk9A+#UXL!{*n(R`f1KEf^W&fq@wo)P^U_!-NZ diff --git a/target/test-classes/blockchain/queryWrapper/QueryWrapperTest.class b/target/test-classes/blockchain/queryWrapper/QueryWrapperTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9e060b4dfaf8819efe4b6f7c39f0f05d586611c3 GIT binary patch literal 1029 zcmZ`%+iuf95IvilFEMQ~(2_!FQ=lYisJY}V6%vgEF9rlHK|F5E*4g0NVeKICS%B15 zAn^fw6k?nNa#Q`Vvokw$=FIW@{`2D(fCd^Sir6%5@PLONpwikZu0gt8Eio#>* z4-`)#`uT=8c4?d?UnDcS?^N6g>{z_&Vu)dFq19-EXk%n}9FbDfNF##HbfFAt`7gCT zozn_<95<^Mt|rQ~)kRu;1~XNTZdtmM@^r3{=a6M&^R+XuuXM@aGM$BCP=`%-Ym|U1 zxJn+8q~gr5xJx!mvGsFgej@w+3^{k#&Yz<2;v2O3Df9{AD)K|DERiS@0h>@tgpzjH z8lj9k6zOFZYt+exj_Z__!8&E7oNkcSaq~a@GR4x*u#Iz=-=U=q+0+OIc^eeV;MQO9 COZ2t? literal 0 HcmV?d00001 diff --git a/target/test-classes/blockchain/queryWrapper/TransactionWrapperTest.class b/target/test-classes/blockchain/queryWrapper/TransactionWrapperTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ca8a34f1b4287e8eda0aac64941b664604b58185 GIT binary patch literal 1675 zcma)6Yg5xe6g>+qNkiljK*aheC<=(g2Z#cKZ9xTVQCe~Q;>84`JS%Vy{<2*)ngcPqA6=9LQ)6^6E}Gdk|!zK#v)961kGg&*xMF0{3la zE5ZuH+F1PO|Bq)p4x(EnHoWXNKaGEFEM{0#|00&hQ| z?Evl1J|a;#K$7N;hm(e4s79&*t@s|D2hhoT%;;*M`!anE^fb_W$xs_G<`NM=A8igL zA_zqyk`Y9|L?nM9e%CxfEdpKCU^hC^gFf_9{RU>yk0qkv84}#=Ad)QYe z_A!EU)L$P2&SR8%JcH-BfQ#~Vr#F3!Rtd_G#yG8#n4lbzr%N=enEXZQaFZ_}Wej}6 V@ek;fCDNM_!a-${EXiua)DQW!srUc@ literal 0 HcmV?d00001 From d11837203c60faf2de5be7f0eec2bf4c38c84cc6 Mon Sep 17 00:00:00 2001 From: GME Date: Sat, 17 Nov 2018 18:29:34 +0100 Subject: [PATCH 21/21] Setup api front --- msp/toto/abdel.context | Bin 0 -> 229 bytes pom.xml | 29 ++++++++++++++---- src/main/java/Application/App.java | 26 +++++++++++++++- .../java/restService/WelcomeController.java | 12 ++++++++ target/classes/Application/App.class | Bin 532 -> 2440 bytes .../blockchain/query/QueryWrapper.class | Bin 2712 -> 3158 bytes .../restService/WelcomeController.class | Bin 0 -> 610 bytes .../compile/default-compile/createdFiles.lst | 11 +++++++ .../compile/default-compile/inputFiles.lst | 11 +++++++ .../default-testCompile/createdFiles.lst | 11 +++++++ .../default-testCompile/inputFiles.lst | 11 +++++++ .../surefirebooter2244873732484001783.jar | Bin 0 -> 9358 bytes 12 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 msp/toto/abdel.context create mode 100644 src/main/java/restService/WelcomeController.java create mode 100644 target/classes/restService/WelcomeController.class create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 target/surefire/surefirebooter2244873732484001783.jar diff --git a/msp/toto/abdel.context b/msp/toto/abdel.context new file mode 100644 index 0000000000000000000000000000000000000000..95e9850b9c4c40073709ba6dc1192053aa8ec158 GIT binary patch literal 229 zcmX|)F%H5o3`Jekf&>E+D+gdB2Vg`DNZBe5;HGW~q)A9zR2ELe)wlzNR{X*C@cjPk z4OtAZE{s!Gbw+KsZKSY0^<(cWQ^znQnZQ)S43%=NWrmf!;2niQTZ^27w)IZJ0;@_J zjjWx$!4nb*bF#r1)6n;6BVDM)`Qa%TDr*X&!XjuTVtEyZKiHeHCi-JJI#P=bjd#}D dC^9UE{+6{7Iq|OZo*`w&?zek{A;Y31<3F`ZNl*X) literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 38cffd1..41e27e1 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.monnethic java-api - 1.0-SNAPSHOT + 0.1 org.springframework.boot @@ -15,30 +15,47 @@ - - junit - junit - 4.12 - + + + org.hyperledger.fabric-sdk-java fabric-sdk-java 1.2.1 + + + org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-actuator + + + + log4j log4j 1.2.17 + + junit + junit + 4.12 + + + + org.bouncycastle bcprov-jdk15on 1.60 + diff --git a/src/main/java/Application/App.java b/src/main/java/Application/App.java index 9ebf319..41421ed 100644 --- a/src/main/java/Application/App.java +++ b/src/main/java/Application/App.java @@ -1,7 +1,31 @@ package Application; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; + +import java.util.Arrays; +import java.util.Collections; + +@SpringBootApplication public class App { public static void main(String [ ] args){ - System.out.println("Welcome"); + SpringApplication app = new SpringApplication(App.class); + app.setDefaultProperties(Collections.singletonMap("server.port","8083")); + app.run(args); + } + + @Bean + public CommandLineRunner commandLineRunner(ApplicationContext ctx){ + return args -> { + System.out.println("Spring Boot:"); + String[] beanNames = ctx.getBeanDefinitionNames(); + Arrays.sort(beanNames); + for (String beanName : beanNames) { + System.out.println(beanName); + } + }; } } diff --git a/src/main/java/restService/WelcomeController.java b/src/main/java/restService/WelcomeController.java new file mode 100644 index 0000000..723d6ed --- /dev/null +++ b/src/main/java/restService/WelcomeController.java @@ -0,0 +1,12 @@ +package restService; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class WelcomeController { + + @RequestMapping("/") + public String index(){return "Welcome from Monnethic !";} + +} \ No newline at end of file diff --git a/target/classes/Application/App.class b/target/classes/Application/App.class index 1c1ad9e12a397c2e4f34aa9336186619b8e08d0a..9bffa882b09312830d49e9796ca80f882e8d494d 100644 GIT binary patch literal 2440 zcmb7FZFdtz6n-X2vuRjt38b}vfKasWDacDDSS$eqP0LGav7+cCora~G-JIPC((nEf zzxY-C02Pn?0FOV!pWr9)nN8YmY3#vs+MSs@_vN|wK6CTOKQCSaI0rY2B+ghkYvBV6 z=dwuPd$#=6hN_)duP&>{44)9PMfl1uebqpFxu~ z{ZwGOtI-}&1cnGvI}NqugboWj=Xt)4>c^r??&(f$sTQs(=@Gt~&KrpgJ_TN=C#wS+sEgIf1b^XOBStc0#wS zk5x_c4a9sJrWm(nfqkJ0o~U4|=?7Fw%}mem`OVu{z-=3MaM#8?ROry43Uwfx^GZMR zSHiwD7W*;8<#VHQ+`^KL`}jh@ZnOD>vAASm*~XW6z?#|k3SV1zXyY3bc&b}I|IIPJ zt?it)3jg|xY$qGN$b6*U(vDjw`L4?vm_`v^$oJ9dC8KRo7h{RYid=tTzx0-n<~(bqW4_K-Ik`IS~6&HcHHecJGydXvkavUHO!2PwU1)+-iuj$ z3zmsjbWS?IJwtt(V`()uU=Y84t*IMkOeanoaW+?$-Kt_p|ShQ(N~ zJ4wbQI}8`sn<}pU=9le|d)syx7X7YtJeQ>FRvfL07S;q#@2XF?d<2f|t%rBXmn45f z!Ii%<$nkrSrvg{OwP)-(#LwI$aERY@B;1cY_jX$W0~q9~7jI*T5@TGWUV`hX-;h{N z{f^{vGMB16M^AY?m(E!m$UH;u_}DXK?{B-#5dqLg4E;FD?@3}YVFuc+a2Q8;G6;|2 z9R^}|D&f*GY{{>Hq Bj>P}~ delta 291 zcmYL?yH3MU5Jb;)Vqe=B5)xkFos=o!28o&mIw&ZR=!|6{M<$L?prxfnAn_egfJDIu z@KK1d5n_v(-I?9l`|eY7@b&%i3G6Wl@mLC2X2oYUWR0F>-Lmm;{CpmsmN(aFc9<8L z!9SQzN8{u+iLm&V&4?|w4fZT6(()>^>_qI+H?*`_(5~*{BAHyqCl})^ zojo48`5k>+eXq(vLHNQzQ!F-OcleHZsqIkc)nbD=_0jKwcwSS$0xc=k@qQg9?G>lf bc%%6r5Xw@j{&))M{iOu7S(IVu2pzgVy~icV diff --git a/target/classes/blockchain/query/QueryWrapper.class b/target/classes/blockchain/query/QueryWrapper.class index d59212fbfc4734a8ddcb0c51eaa98998c8180589..1b44d9dea40c857256806053ac6a320fdad3e5f0 100644 GIT binary patch delta 1162 zcmZvbZF3W46o#*-o8*bx9qAN{g;Lr=Q7Dy4i?mtFO=YvGrYaFZ zK}E5yZ{PjoIOFK>ff;q2@vA?;8UH~4h2s5eYDLFv=InXB?{iL0zHIxgz5eT;Kl}`A z=L?^8JZ*U<&xt(G`kZ7c&vTY(AItMTFA!QzmU*>ddEGK%dBgIi=qxqy7;Lc+PpZan_mVaqR^sDPSgwSpb1dr+pgm8QsF% zA4RiT7>1Sq%sv)HVa@e#=v?@vGg-{EWj;3y34Z9tV7A9Q)~O3|pNtAMie!(h0lkGq zw(ln9dnrwN|mG!p1#qb$Qc+$-6We3k#U?sAXND%q;ayL2dR+{r51^>ndD z_q3KBbTTRODS3(_j)i(rXqSa^MVMEGcukoJeJS6(7^mdlL_f`{?B_nV3fX5~?cR?k zhB>w|NTx2D8HV%+$O^o`10u@_>LkOA=)-~VBynXRo(?zV3PvPZmy`^rArg~hl9^E0+QruAfk93^4$=aj+ z4$Mn`MLz`?)DS}{V0R;P8PHz>%q#C0Pe}efe#7&mJQHba$E8iC+EZ+CZ0db8uVv`l Gv-&SMlEC@^ delta 763 zcmX|m=P6+S+XMK@R%nK zPnlEHyFDu8_IZOH4mq9~m{*jH#-?Kp$yjQ*p>rml7@r(Ti`sKu80iIvm%K7;(P4?O z!q=I}q%-ahUsSzbRsI2QUzwbyc|0ho3kz0A)F7*p)mQf!^(mjO6!hme3#k(BtQWA2 z?Gh=f*&$fre%SCaXKK4C77U7Tu^eg%MQoy!EmR8DQbw~F_lxC_m=25Sq$tgc)&db0 zMQus+-cWiY0a56HsbwXj;ZUi{9@28avsjgtjI)4Zs!AP+PD4% Dg_LWL diff --git a/target/classes/restService/WelcomeController.class b/target/classes/restService/WelcomeController.class new file mode 100644 index 0000000000000000000000000000000000000000..d8eabe7910300616e9d9657baf20c3792d689a7a GIT binary patch literal 610 zcmb7BO-lnY5Pj*l^}Bu_#ClUfbMYW3f(V{g1uOO7DZ7p}x|`H&w)JP}N$}tg@JETW zwx}Qo1~S9Ty!SGhyuH7?0@%h<9VN`wFki(&6^jCuJ#Dn#7bvc+w*^Xv_KE~118wLe zOG0wzDvbH05!gt@ZRK>1hleG9qf>#Ez)|X330?qr`r z8M3KVUtD=c_Zjzbth(KSZMmo7jC&VSpx&~Xi|9z_kD33~<5u3)|1L}Yk0*|yjEcbG z(71W+Y|=co#t@GvYOV?_|2ZRpsqeX*hPM=XtfI)Dm9GMLgs5<=GLoDH=kmrg#M5WF z#xXC02_qcG1_abG%1AICXOmpK$tdR)8-+(s1$;~EKcvN>bb>h(ESTgybqSGTnl+72 L@@YV`8u%hBKe@zd?d z`SWV@#pw3>ySL)qhZ}kO_QSiI>yO_Bw>SU$=VQY`^%I^)v$ZxiBl7!o}lEHc^Gquqs&UN-Ib+(k@CXDWt zT!)V;mFD>9^)^$BI8)LT4`QZut};0dCU1g?FBVoDtisHt1oaX8&_pn*k0S}yB z)g!%@ORblQk}At|w#jr_JbvQmPhpzsoYqf{y=G_^z-2tPHh_C+VfOou^znD0qeGt?(R~1~cLCH2WhD(#Fs}Etij7>vnOIeY%gwxGwlS1A${* zcORzn1SgscS$MVR>NSn@>5EjJX|wHO(Mkp!VLN;2_HvOvbVQcxV!hUBn{C*;=;`JH z&b}b*nO1rWr_a-KMF|{doz}*5leaJfr9A{o zBQj-l^4L0^Ro^}%fpgft5JpE2reP*<@@E`CbWHGweZ(ECz(IZm@9ttQCN$Sro3-dw z3OmA=BAlKC&IujMEhP~4cS-?+9|b*PehA0S&w4k2gGxCQo4|^SC2%-e!bQCBS!`eu zF&1N52EaV4N2vsG_9slO?h{Fz@3ITB3*n@4BXxH9vd@vgsj-=SJF86;2?hWIrxD-% zJr<>59zQDN)mfY_jY)*bA&HP%Amonu><3O6l=80e$Tq6+Nyi=}oYvIend8!VcK)zJ zZ7zBeoR@Pt+XBamk$^zl!M2|YIOR4dX_-xI^Eg4K<4_iS)X^jb&feRNV=K^D=yX{NVn^c;mINA5TSPPBQ5pTuhZFgXLyBsd?-SxtuJbH2}W zz^Px+>^?Ih(aR-Pi}c%+je0Wh@V&{qlI`2_h+{~-lDLASXXrBtPF)euPY-q$=b3!Z zEOgx=>h%TzfR2#KMMFwE?!sk*K11f6ZNa`PJ%h(-aPBmLgLyx9q4(lq3QkwWeVOLt zbS3C~enMO%^^yBuc)i?3)8SdsqykR&-JJ4OShCTnN^>K*nZ$TT_&P)0z7q)Gu%U#U{dm0_SRVy#oKaX6z$ruhZ&HhJpf1;-O0@>4h!45pl@&k zr>`j2KS}U?xXm>#)CMd0o_`V=g)@eIhzBNd}yL zq6Q1E#$cvh5bQ1L0&;|`0iy>E0A~bGcf@xp?nF?>5G<1UM~m+25YFjXM#C$rGxedIu(Os25Sw z?LBn1xIW)|emloi_$P0IPj~r zT_qlUDRy|fNP*L~eap8u4c>|rA)M+Mc;~^U1E=nIit%>904;VZ0LPj3`*@}@+-jAq zp2TCA#PbkEScw!BnYOL7`u)Jc5aA3tXzFb?1}fkX8%p%DAjV^rli53U;&oxUQ(1x) zD_Mav_|4gBrg3j6BA4V=bxi}#32pVl>{=&ovsF*Y+eHeTTD=YlG+qZ8Bxg@Z4*3<- zn*2TiB(7PjB=L4J72Bju*cjK`hjp7Fys?-iywm%IG>q67xb9Z^SF&dh2tXyi%;eJ)kHx*?iV3E&*rAhaanL8sozV{>2-+seQz(;yo~z z4S~~jbbIGEx#~V#M=0Xu)q~CR5QKnJ7jk4eq%ukPT$gamtr3dHkBwTZBLhuqt(ElY zy{FVahiQD2!Y(^)`!2=yAoS2zGUUYLquVe}#TCWm%hxa?u-E~AY7>;7*97+Sn&1Y- z7&ZTzzqL6&IzGC4|EHJ#`tj3$|MTT&^b7vKd;j8huSUCXhTJ~-W~lzB>kFd0_kZ{! PjeLRsZt(Z?D{B1;-9Ifm literal 0 HcmV?d00001