From 103a374ba1cfe3a2eb61269db46b2bd247253774 Mon Sep 17 00:00:00 2001 From: "Christopher C. Smith" Date: Thu, 30 Jun 2022 00:01:55 -0400 Subject: [PATCH] Article/bael 5516 how to convert input stream to base64 string (#12219) * java-shallow-deep tutorial * BAEL-5516 How to Convert InputStream to base64 String - Junit test demonstrating the code * BAEL-5516 - How-to-Convert-InputStream-to-base64-String Cleaned up files * BAEL-5516 - How-to-Convert-InputStream-to-base64-String - updated per Jira comments * BAEL-5516 - How-to-Convert-InputStream-to-base64-String - rename and formatting to match Baeldung standards --- .../InputStreamToBase64UnitTest.java | 49 ++++++++++++++++++ .../src/test/resources/logo.png | Bin 0 -> 2599 bytes 2 files changed, 49 insertions(+) create mode 100644 core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java create mode 100644 core-java-modules/core-java-io-conversions-2/src/test/resources/logo.png diff --git a/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java new file mode 100644 index 0000000000..d8de202ba3 --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobase64/InputStreamToBase64UnitTest.java @@ -0,0 +1,49 @@ +package com.baeldung.inputstreamtobase64; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.InputStream; +import java.util.Base64; + +import org.apache.commons.io.IOUtils; +import org.junit.Test; +/** + * Test the Stream to base64 conversion + */ +public class InputStreamToBase64UnitTest { + + /** + * Test stream to base64 conversion + * @throws Exception + */ + @Test + public void givenABinaryInputStream_whenItIsConvertedToBase64_thenItCanBeDecoded() throws Exception { + // given a binary input stream + InputStream sourceStream = getClass().getClassLoader().getResourceAsStream("logo.png"); + byte[] sourceBytes = IOUtils.toByteArray(sourceStream); + + // when it is converted to base64 + String encodedString = Base64.getEncoder().encodeToString(sourceBytes); + assertNotNull(encodedString); + + // then it can be decoded + byte[] decodedBytes = Base64.getDecoder().decode(encodedString); + assertNotNull(decodedBytes); + assertTrue(decodedBytes.length == sourceBytes.length); + assertTrue(calculateChecksum(decodedBytes) == calculateChecksum(sourceBytes)); + } + + /** + * Calculate a checksum + * @param bytes array of bytes to check + * @return the total sum of all bytes + */ + private int calculateChecksum(byte[] bytes) { + int checksum = 0; + for(int index=0; index < bytes.length; index++) { + checksum+=bytes[index]; + } + return checksum; + } +} diff --git a/core-java-modules/core-java-io-conversions-2/src/test/resources/logo.png b/core-java-modules/core-java-io-conversions-2/src/test/resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6d7c8340705747fabe6b612c3c1ec9f5b7848e GIT binary patch literal 2599 zcmV+?3fT3DP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H13A9N> zK~#90?VEY59c2~3e+ODhfdVZ8qQHZoY+(^>*}^I<6;PB#poju7Ms`pn!6=|ng9Hgn zDhiSaHUUvc1qv>hma@~b6{M7%qAZogwzLIG`+olM&873^&D{ImeXo73nO|~~J7>=M zzB6;b`R4o1ITvbbYHDg~YHDg~YF0_qt<;|mv>!D!eMa40ovpqw(7x2vw2d0-N$NZk zO9tAfnwqvycUK>@JF5@0Z#AnfgH~i`>W0A4z)8U8E7S%9OPjQ@2C!ofyPO*lFZRmG zenuS+Y?B?%h=}j^(*Bdcgq&!6MBLh6{?+sXbwl+q^%C`QwX z5&!Jxwrf^0`ei_?n*e73-vT!3LsRdzVeH6j-G z)>k!vJ%LfcP||(4Ga?o>u{i>0M1-D?h$l*PwgEQF4m%@avbr(pVFy^;*kESSrF}>n z?)8D!fj>t?=_I3W1sn)$NSd6cM#Qt(xskw@nd;LKF|+ku7+}<|^N;igV}p zpx=&y&CiW=Co6>W{PVpFIt z%*n2(@b!wE&ik2cOummyc5HUdMc!5SE3~O?&+`zKgr^pE4 zQedKKgWME#XW$;nLzpA7zP{e7oxY%+3*1P$<|4y^8`U*4-A#b|fFnwDgA|gTOnTd` zI;dxqJfS_|o9ZC--xcRuMn&vCL*HV0TjW0{ski2IJ}?X2sjI2asB_fw8-1!n)C1M$ zb9M_%v2)bZ3jI!2_ft1kN2xa!&R>z)mCn%WV0C7}<~{W~^)geKQ*}u}r$1-tk8Md}3gm+IX)dEVz0IzzXGlhawEZf*5|KCaNui)u&ie5j|od&dHf-aX_;qCA_{@lyo%7L%xQg~R-M!&{ z;JCv5xU!(r$nfSlHzH=`1rae3=v5}PziB7Ru@lR7*F9l6aCAg0QO5wgSLofZTQlZhYzqSoOdP;tV z+Yb0#?)a35xVdqVJ$w_@59vCfi!~r;Mnu^%ryJ_S6{ns7Hp#w^RJVwTS4#9YsIbq^ zgjE^Z?OJ=-V`h@xasXSaJ4M8kC3;oA|_HAirHbNd1y}gXLM=i|rn^`(nj? zekZ4Ml_`HPt6)1rJwEeyoI0(f&y_n4ZTkOTkxom-OG!qRlE^ zGo@{BD9GoVk{GY%WcL(!x|e!e!QnU5u_e0Sw)v0sfm-#im1aJ4w78)~ zI@LSOk{0T4b$W&FLeoImso?uLneBS&A8cO3GDF=u=kI4s8OI`v)Ya7^?V7a7^OkzB zDf^jce^aKhEUTxwSiR7c6@9GWTiXLVlkaBt2e`p?rp#%c(JW7hS=kMQ375DFYmepk3m%E;6rnk=_q&BmTJ|T76_2{6`c-v{9_W6-w9I(gu9a5v z)Q8lcsQnq>uNeT;H7qaeFJq~x&U)3y^pAzo(#)DwA5%^HGZh25(^NCP=Ro<_+kc$Y z)Bq_T0eqHJTDlZ?6PQ-@AH(002ov JPDHLkV1hD%G=cyC literal 0 HcmV?d00001