From 5b21caa7fa7a1cadb997801fb33620fbb36a3b08 Mon Sep 17 00:00:00 2001 From: MathewFrancis Date: Tue, 15 Apr 2025 17:54:11 +0530 Subject: [PATCH] DELETE an extension with postman rout. Now test cases for integration testing added --- .../CezenPBX_API.postman_collection.json | 30 ++- .../test1/mariadb_data/aria_log.00000001 | Bin 4890624 -> 4890624 bytes .../test1/mariadb_data/aria_log_control | Bin 52 -> 52 bytes .../asterisk_db/extensions_table.ibd | Bin 114688 -> 114688 bytes .../mariadb_data/asterisk_db/ps_aors.ibd | Bin 65536 -> 65536 bytes .../mariadb_data/asterisk_db/ps_auths.ibd | Bin 81920 -> 81920 bytes .../mariadb_data/asterisk_db/ps_endpoints.ibd | Bin 98304 -> 98304 bytes MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 | Bin 100663296 -> 100663296 bytes MySQL_conf_pbx/test1/mariadb_data/ibdata1 | Bin 12582912 -> 12582912 bytes .../mariadb_data/mysql/innodb_index_stats.ibd | Bin 65536 -> 65536 bytes .../mariadb_data/mysql/innodb_table_stats.ibd | Bin 65536 -> 65536 bytes MySQL_conf_pbx/test1/mariadb_data/undo001 | Bin 10485760 -> 10485760 bytes MySQL_conf_pbx/test1/mariadb_data/undo002 | Bin 10485760 -> 10485760 bytes MySQL_conf_pbx/test1/mariadb_data/undo003 | Bin 10485760 -> 10485760 bytes .../cezenPBX/DAO/BasicAsteriskOpsDAO.java | 38 ++++ .../example/cezenPBX/DAO/CezenPbxOpsDAO.java | 4 + .../controller/CezenPbxController.java | 11 +- .../com/example/cezenPBX/entity/PsAors.java | 23 ++ .../com/example/cezenPBX/entity/PsAuths.java | 3 + .../cezenPBX/service/BasicPbxService.java | 6 + .../service/BasicPbxServiceInterface.java | 2 + .../PbxControllerIntegrationTest.java | 198 ++++++++++++++++++ 22 files changed, 309 insertions(+), 6 deletions(-) create mode 100644 MySQL_conf_pbx/test1/springCezenPBX/src/test/java/com/example/cezenPBX/controller/PbxControllerIntegrationTest.java diff --git a/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json b/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json index 11e085e..92ed814 100644 --- a/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json +++ b/MySQL_conf_pbx/test1/Rest-API-Postman/CezenPBX_API.postman_collection.json @@ -13,7 +13,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"id\": \"1005\",\n \"transport\": \"transport-udp\",\n \"aors\": \"1005\",\n \"auth\": \"1005\",\n \"context\": \"default\",\n \"disallow\": \"all\",\n \"allow\": \"ulaw,alaw\",\n \"directMedia\": \"no\",\n \"connectedLineMethod\": null,\n \"callerid\": null,\n \"dtmfMode\": null,\n \"mohsuggest\": \"default\",\n \"mailboxes\": null\n}\n\n// {\n// \"id\": \"1004\",\n// \"transport\": \"transport-udp\",\n// \"aors\": \"1004\",\n// \"auth\": \"1004\",\n// \"context\": \"default\",\n// \"disallow\": \"all\",\n// \"allow\": \"ulaw,alaw\",\n// \"directMedia\": \"no\",\n// \"connectedLineMethod\": null,\n// \"callerid\": \"User <1004>\",\n// \"dtmfMode\": null,\n// \"mohsuggest\": \"default\",\n// \"mailboxes\": \"1004@default\"\n// }", + "raw": "{\n \"id\": \"1005\",\n// \"transport\": \"transport-udp\",\n// \"context\": \"default\",\n// \"disallow\": \"all\",\n// \"allow\": \"ulaw,alaw\",\n// \"directMedia\": \"no\",\n \"connectedLineMethod\": null,\n \"callerid\": null,\n \"dtmfMode\": null,\n// \"mohsuggest\": \"default\",\n \"mailboxes\": null\n}\n\n// {\n// \"id\": \"1004\",\n// \"transport\": \"transport-udp\",\n// \"aors\": \"1004\",\n// \"auth\": \"1004\",\n// \"context\": \"default\",\n// \"disallow\": \"all\",\n// \"allow\": \"ulaw,alaw\",\n// \"directMedia\": \"no\",\n// \"connectedLineMethod\": null,\n// \"callerid\": \"User <1004>\",\n// \"dtmfMode\": null,\n// \"mohsuggest\": \"default\",\n// \"mailboxes\": \"1004@default\"\n// }", "options": { "raw": { "language": "json" @@ -94,7 +94,7 @@ "response": [] }, { - "name": "New Request", + "name": "SetAORS", "request": { "method": "POST", "header": [], @@ -121,6 +121,32 @@ } }, "response": [] + }, + { + "name": "DeleteExtension", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "http://localhost:8081/cezen/delete_extension?sipNumber=testEndPoint", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8081", + "path": [ + "cezen", + "delete_extension" + ], + "query": [ + { + "key": "sipNumber", + "value": "testEndPoint" + } + ] + } + }, + "response": [] } ] } \ No newline at end of file diff --git a/MySQL_conf_pbx/test1/mariadb_data/aria_log.00000001 b/MySQL_conf_pbx/test1/mariadb_data/aria_log.00000001 index 2bc4d79947114dc8175986914730d8304be8fa17..7c51317d5e2f7df3ba53b9898c19b180a2dcd95d 100644 GIT binary patch delta 244 zcmYkxH&Oxt06@_dBdd!EbHXg<98odr_FjU@v9zLirG?BEbl6*a058Vqs11MSSFil_ zkt+YLNlLR8t=hEfkQVCHC6dvtN3TBpvIYzqGHk@CG27A#tlw`|3# zHS0EP+OloOu08t>96ECBM8T;u=ZY>|x^nHttvmM~KI3|=T2JCIs>MMNeE(OfR^m*y d`uY}!nf!YLJU75&BfR`U@{~&_VIis%OFyXrUsnJC delta 167 zcmWl|$x;CT007WIi#AJ1D5+@CLbevlQd+;t;r)PUSCT`0PA<=TysvRf5Z oHFXVl?mc+a)biw6TSr&Vi&uSb-hKG=HU9qp8BKqav0-;M2OZ8kGXMYp diff --git a/MySQL_conf_pbx/test1/mariadb_data/aria_log_control b/MySQL_conf_pbx/test1/mariadb_data/aria_log_control index f221f0d72bf9fd95c37d6b6318bddaee90aec4df..0eb2a97d9f06f50a98d7c206da67981c62c6e072 100644 GIT binary patch delta 27 fcmXppnIIiWYW z)>9b8w8R&o>EvMLZIENx%b)|)!3cyAVUd~Zeg*{KWME>{Xkdd1FflN0Hal>{o^6qtC$p&G6h<+vMVjd9 a8FnD6XJCQoWlG-az_<&jQ#0;h3NHY1*Aou_ delta 112 zcmZo@U~On%-5_>AfuY8AKLY}AGB7b}G_ZjL7}*$D85lO39XMjo#!ypusBixiMlmf0 h2XyreJ0R*AHh|PKus{rB;@RrJxC^M$;qfc;qX3=~6wCks diff --git a/MySQL_conf_pbx/test1/mariadb_data/asterisk_db/ps_endpoints.ibd b/MySQL_conf_pbx/test1/mariadb_data/asterisk_db/ps_endpoints.ibd index 2235245b0ae536fb64697d2ab5c5e28c843a03fe..9d0927501369d4a8fc3172f6c8dae3fdbe6c2e7e 100644 GIT binary patch delta 74 zcmZo@U~6b#+aPv;Y2l2`5(ggHvn`wv;60mT3Zod)!uqKajOvW>TOAm80mbVt&2KiF U<^YoDhDdC8fXH+o6_q>)00wUwp8x;= delta 74 zcmZo@U~6b#+aPv;sb<$^i35-9*=lxuFO9!6g;9*DX5mx`Ms-I2tqzR4fZ_|YHZOfT U%>g8_79z3T0V1>3%CjN}08*+O;s5{u diff --git a/MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 b/MySQL_conf_pbx/test1/mariadb_data/ib_logfile0 index ee82e5486a4b5cac1ff86baf4c3e022a0d07722e..e441f539a764f5ab36e27daf6ebe2e38d9cce118 100644 GIT binary patch delta 30735 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 Dr|=ns delta 72 zcmZo@U}1-&}sM*^aHU Jep1^rT>zN~7+wGX diff --git a/MySQL_conf_pbx/test1/mariadb_data/undo001 b/MySQL_conf_pbx/test1/mariadb_data/undo001 index 0dbcd8655a94958f52026fc5dde6e2de8d5a90fc..dd29c2218b042d0b088d1b4480f4b26d398e0f64 100644 GIT binary patch delta 666 zcmYk$w@;J-0EY40QN)gg^Rp|0U9h8P;juUDf)y2e?|ODWQ64)*;p|9MOdLfF>+QyW z!pX(K)yX4qV0f4Jmp6ICFw6?msgFfl;|)P&By1{*4E|DgyfnKt-txL7zl|7a`Wl2k zJFB)oS+m+wd1PeX%J~*VX6Htu6<@0&pNqSti`?2oWs*oNTHV|c5Gl!x?EG)l&A$uZ zmnXxteQ56p!cIH!-#)aLRm`hNrqcE?(GjG&+Q-D-AK!m9Mmyhq3!+_Ct?@)b(F}=7 zhGa^XWJ@>6k?zt%dP*WuDBJ1+q{|1z9AEWr-}6 zWwKmW$Vyoyt7VOp$y!+_>t%y%lufc(wn({D$X3}V+hvFBlwDFOyJe5;l`7dM`{jTf zltXe@j>u6tCdcK3oRm{?TF%H>IVb1kf?SkKl90=CMXt&A1Aur{Xyp}ieR+>NYF7*#!^y};Z delta 665 zcmXZR$x{sg0D$q{qi2mQy$ijrGc7;+(5>sx{BgZb-X+@yYe$(64V@t z{q9=-zEpkv+?Gagw?Bv6nVObR!b1wQ13I^usSnu;0;goBx#tq}sVQUh5DYRc=? zGqdy8$CUKOSi*9mt&v!lMY}C0`aPWev#~8$XFRC<7I+Olu0sKa%76+N}f!WX);}A$V|zX0+}VVWsc01LMf7Y zGGB@XSs)8#kt~)avQ(DIa#M zD-x5da!szw4Y?`GEx9ds~@N}W8CdU-5QWUwKI z$}`Mx`9>J2z$l}|jS(7aobe`@Xp+gMm};6r)6Fo`EVIoq*F5truuzdj7F%MeWtLl^ z*h;Icw#HiPtXCpogN-&RRc5ntTWqz>c025}%Wf6+*lVBtDjjgpA%`7t)G<|#JK>~i zr<`_1jkC@ES6y>mog3;kNV@5k+wQpQo<{dQ5NYzzBRuxRQ_nPe?uD0L bd96jOHgCN3PP-28eelsIpMCMwH{bsO3+}9r delta 420 zcmXZRNn4Bo0KjoGTC7QUz4kp@WJ|`@$U1hi6H@jqTeeXzeq>i6LzasRH+ASbpT)T^ z;OU~C$KikZ{i7(#jrwW{;_2SjusT-%yFo=>y0>mXQB`L$NcM4882#y|^xuxk&TNp4 zCwjWWC{|t=EAFa^{VdJTN%Z_Gt8Hx0#)5b%(;a5}U&;TM$`rKyXcjk6j$C>24Kmme zLk%-rfe{LgRAiLV#t4iR8fUx-CYofjDW;lcx*2AgrPyq9%r(z^B^Fqy)FO*5vD7kU zmMgbH!b+>Gw#Hf&lGdrT-Ub_Ove_0XTWz!54m<6#+a7yW*=N544m#wpBaS+z+HohG zRO6Idbxu3utaHx0;G#<|yW*;P*IakQO}8|-?T)+dxi9U3Mol6QJ@Ob&Jk{)(=U#Z} cmDk>Qt3|6e@4WXxyN@zH`K-eiUw!laA9rM__5c6? diff --git a/MySQL_conf_pbx/test1/mariadb_data/undo003 b/MySQL_conf_pbx/test1/mariadb_data/undo003 index 2ae60d668f0276bc2cbf1917d5d1794ff91b8670..4638c31b4415a8eefaa46b88c3bb0ef9703c3e6f 100644 GIT binary patch delta 477 zcmY+(H&c@V0D$33Xkq~r37@@yyuy~$>a2}5A z{sf);0q)rhcPtL?@;>o+JR_c}JreFrb_BJdmT#@fGCPyyxqmCWVv$&CcL(u5eXHn8 z)z7Zpf>>I5Th8|&6wM2VYq}dkpG&e*qqH!;J`oE=!m@jUSg15FRM&5^e>XK&B;qOS zjP?ZaK5Oo`&ghTspg7UnXUU$R_diR1t#1D%EKRx$nX(L!ZJ-#4r+ABVMiR*b-_iKTz17(*Iai)T$`J2;kG;Oy63(J9(v@lC!T88;hE=Ncq!qP O*WP&Ro%cTY=+i%iCc11Mk1 z2RJq3#KG0c*=uz8UcR3o2vUPYjp3wtT~nkyRQ;t!N$+@F^Pimh)>t@}*lm&EXZLF8 z%<63I$cQC}g7;q|p@Q_JULV>jLLc+f5+hnw`n@F<3MWNt+as}1VR|U@zokTL3x9u$ zw*(0*%4?4V-Im>BMR~=)DnGS!B&@8fJ<`!_xjk0a_4jkx4@r`xNYz`KKKkmXzX1js zWUzEY3^mMf8Nx=07-^Kz#u#gy@iJwZV4_JT%a&t`siLOIm1nwqGt4y0Y;(+2pwK+? z6)CpBLW`7$S!{`=mMOK|3M-XaWwkZdT4%itHriyfEwz?}_Xz queryResult = this.entityManager.createQuery(query, Integer.class); + queryResult.setParameter("endpoint", endpoint); + return queryResult.getSingleResult(); + + }catch (Exception e){ + // that means endpoint doesnt exist yet + return 0; + } + } + + // delete extension by endoint + @Override + @Transactional + public boolean deleteAnExtensionPoint(String endpoint) { + + Query query = this.entityManager.createQuery("DELETE FROM ExtensionsTable e WHERE e.extension = :extension"); + + query.setParameter("extension", endpoint); + + return query.executeUpdate() == 1; + } } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java index cc2a763..0ce7d36 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/DAO/CezenPbxOpsDAO.java @@ -15,4 +15,8 @@ public interface CezenPbxOpsDAO { ReturnStatus setThePasswordForSipEndpoint(PsAuths psAuths); ReturnStatus setTheAorsForTheEndPoint(PsAors psAors); + + int getTheHighestPriorityNumberByEndpoint(String endpoint); + + boolean deleteAnExtensionPoint(String endpoint); } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java index 2078369..6d8a9b1 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/controller/CezenPbxController.java @@ -3,10 +3,7 @@ import com.example.cezenPBX.DTO.*; import com.example.cezenPBX.service.BasicPbxServiceInterface; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/cezen") @@ -77,4 +74,10 @@ public class CezenPbxController { psAorsDTO.maxContacts() ); } + + @DeleteMapping("/delete_extension") + public boolean deleteExtensionBySipNumber(@RequestParam String sipNumber){ + + return this.basicPbxServiceInterface.deleteByExtension(sipNumber); + } } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAors.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAors.java index b998324..77049e9 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAors.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAors.java @@ -37,3 +37,26 @@ public class PsAors implements PBXentiry{ this.maxContacts = maxContacts; } } + +// bellow can also work +//@Table(name = "ps_aors") +//@Entity +//public record PsAors( +// @Id +// @Column(name = "id") +// String extension, +// +// @Column(name = "max_contacts") +// int maxContacts +//) implements PBXentiry{ +// +// public PsAors() { +// this("",0); +// +// } +// +// @Override +// public String getExtension() { +// return this.extension; +// } +//} \ No newline at end of file diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAuths.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAuths.java index 795337a..f9c610c 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAuths.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/entity/PsAuths.java @@ -38,6 +38,9 @@ public class PsAuths implements PBXentiry{ this.realm = realm; } + public PsAuths() { + } + public String getExtension() { return extension; } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java index 0efc5c7..9f76bef 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxService.java @@ -94,4 +94,10 @@ public class BasicPbxService implements BasicPbxServiceInterface { return new ReturnStatus(false, "Endpoint and password already set ",e.getMessage()); } } + + @Override + public boolean deleteByExtension(String extensionNumber) { + + return this.cezenPbxOpsDAO.deleteAnExtensionPoint(extensionNumber); + } } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java index 9967d86..5279985 100644 --- a/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/main/java/com/example/cezenPBX/service/BasicPbxServiceInterface.java @@ -16,4 +16,6 @@ public interface BasicPbxServiceInterface { public ReturnStatus addAPasswordForEndpoint(String id, String authType, String userName, String password, String md5Cred, String realm); public ReturnStatus setAors(String id, int maxContacts); + + public boolean deleteByExtension(String extensionNumber); } diff --git a/MySQL_conf_pbx/test1/springCezenPBX/src/test/java/com/example/cezenPBX/controller/PbxControllerIntegrationTest.java b/MySQL_conf_pbx/test1/springCezenPBX/src/test/java/com/example/cezenPBX/controller/PbxControllerIntegrationTest.java new file mode 100644 index 0000000..15e32e0 --- /dev/null +++ b/MySQL_conf_pbx/test1/springCezenPBX/src/test/java/com/example/cezenPBX/controller/PbxControllerIntegrationTest.java @@ -0,0 +1,198 @@ +package com.example.cezenPBX.controller; + + +import com.example.cezenPBX.DTO.ReturnStatus; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; +import org.json.JSONObject; +import org.junit.jupiter.api.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.*; + +import java.util.List; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class PbxControllerIntegrationTest { + + @Autowired + private TestRestTemplate restTemplate; + + + static HttpEntity stringBasedRequest; + + + static HttpEntity extensionEndpoint; + + @BeforeAll + public static void createAnEndpoint() throws JSONException { + + JSONObject endpointDetails = new JSONObject(); + endpointDetails.put("id","testEndpoint"); +// endpointDetails.put("transport",""); +// endpointDetails.put("context",""); +// endpointDetails.put("disallow",""); +// endpointDetails.put("allow",""); +// endpointDetails.put("directMedia",""); + endpointDetails.put("connectedLineMethod",null); + endpointDetails.put("callerid",null); + endpointDetails.put("dtmfMode",null); +// endpointDetails.put("mohsuggest",""); + endpointDetails.put("mailboxes",null); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(List.of(MediaType.APPLICATION_JSON)); + + stringBasedRequest = new HttpEntity<>(endpointDetails.toString(), headers); + + //Arrange + JSONObject extensionDetails = new JSONObject(); + extensionDetails.put("context","default"); + extensionDetails.put("extension","testEndpoint"); + extensionDetails.put("priority","5"); + extensionDetails.put("app","Dial"); + extensionDetails.put("appdata","PJSIP/1005,20,m(default)"); + + extensionEndpoint = new HttpEntity(extensionDetails.toString(), headers); + } + + + // test will create an testEndpoint endpoint + @Test + @DisplayName("User can be created") + @Order(1) + void testIfEndpointCanBeCreatedWithValidInput() { + // Act + ResponseEntity response = this.restTemplate.postForEntity("/cezen/add_user", stringBasedRequest, String.class); + + // Assert + Assertions.assertEquals(HttpStatus.OK, response.getStatusCode(), () -> "Wrong Status Code"); + } + + //duplicate entry must return false + @Test + @DisplayName("Duplicate values must result in false") + @Order(2) + void integrationTest_duplicateValurSubmission_ThrowsAnException() { + // Act + ResponseEntity response = this.restTemplate.postForEntity("/cezen/add_user", stringBasedRequest, String.class); + String responseBody = response.getBody(); + + // Assert + Assertions.assertEquals(HttpStatus.OK, response.getStatusCode(), () -> "Wrong Status Code"); + Assertions.assertEquals("false", responseBody, () -> "must return false when value already exists"); + } + + + // test for extension + + // if SIP end point doesn't exist then return a json ReturnStatus object with false in it + + @Test + @DisplayName("For no SIP endpoint Should return ReturnStatus object with false in it") + public void extensionTest_tryingToAddAnExtensionIfSipEndpointDoesntExist_returnAReturnStatusObjectWithFalseInIt() throws JSONException, JsonProcessingException { + + //Arrange + JSONObject extensionDetails = new JSONObject(); + extensionDetails.put("context","default"); + extensionDetails.put("extension","NoEndPointEver"); + extensionDetails.put("priority","5"); + extensionDetails.put("app","Dial"); + extensionDetails.put("appdata","PJSIP/1005,20,m(default)"); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(List.of(MediaType.APPLICATION_JSON)); + + HttpEntity extensionEndpoint = new HttpEntity(extensionDetails.toString(), headers); + + //Act + ResponseEntity response = this.restTemplate.postForEntity("/cezen/add_extension", extensionEndpoint, String.class); + System.out.println(response.getBody()); + + ObjectMapper mapper = new ObjectMapper(); + ReturnStatus status = mapper.readValue(response.getBody(), ReturnStatus.class); + + //Assert + Assertions.assertFalse(status.status(), () -> "Wrong Status flag expected false in return "); + Assertions.assertEquals("Create Endpoint for NoEndPointEver", status.message(), () -> "Wrong message for given input"); + } + + @Test + @DisplayName("For no SIP endpoint Should return ReturnStatus object with false in it") + @Order(3) + public void extensionTest_addingANewExtension_StatusMessageMustReturnTrueInIt() throws JSONException, JsonProcessingException { + + //Act + ResponseEntity responseFromExtension = this.restTemplate.postForEntity("/cezen/add_extension", extensionEndpoint, String.class); + System.out.println(responseFromExtension.getBody()); + + ObjectMapper mapper = new ObjectMapper(); + ReturnStatus statusFromExtension = mapper.readValue(responseFromExtension.getBody(), ReturnStatus.class); + + //Assert + Assertions.assertTrue(statusFromExtension.status(), () -> "Wrong Status flag expected True in returnStatus first extension entry"); + Assertions.assertEquals("testEndpoint Persisted ", statusFromExtension.message(), () -> "Wrong message for given input"); + } + + @Test + @DisplayName("Duplicate entry of extension") + @Order(4) + public void extensionTest_addingANewExtension_StatusMessageMustReturnFalseInIt() throws JSONException, JsonProcessingException { + + //Act + ResponseEntity responseFromExtension = this.restTemplate.postForEntity("/cezen/add_extension", extensionEndpoint, String.class); + System.out.println(responseFromExtension.getBody()); + + ObjectMapper mapper = new ObjectMapper(); + ReturnStatus statusFromExtension = mapper.readValue(responseFromExtension.getBody(), ReturnStatus.class); + + //Assert + Assertions.assertFalse(statusFromExtension.status(), () -> "Wrong Status flag expected false in returnStatus for duplicate entry "); + Assertions.assertEquals("Data likely already exists or DB issue", statusFromExtension.message(), () -> "Wrong message for given input expected Data likely already exists or DB issue"); + } + + // delete the created testEndpoint value + @Test + @DisplayName("Delete an Extension with endpoint testEndpoint must return true") + @Order(5) + public void extensionTest_deletingAnExtension_ifExistsWillReturnTrue(){ + + // Arrange + String url = "/cezen/delete_extension?sipNumber=testEndPoint"; + + //Act + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity requestEntity = new HttpEntity<>(headers); + + ResponseEntity response = restTemplate.exchange( + url, + HttpMethod.DELETE, + requestEntity, + Boolean.class + ); + + // if the extension exists + Assertions.assertTrue(response.getBody()); + + response = restTemplate.exchange( + url, + HttpMethod.DELETE, + requestEntity, + Boolean.class + ); + + // when deleted it won't exist so the endpoint must return false + Assertions.assertFalse(response.getBody()); + } + + +}