j'ai un RESFUL et je souhaite le tester avec JUNIT et une page HTML en même temps
Pour la page HTML, je n'ai pas de problème, et quand j'envoi les données depuis JUNIT le RESFUL reçoit toujours la valeur null
Voici mon Resful
Voici la page HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 @Component @Path("/dao") public class RestServiceControllerImp implements RestServiceController { @POST @Path("/test/") @Consumes({ MediaType.APPLICATION_FORM_URLENCODED ,MediaType.MULTIPART_FORM_DATA ,MediaType.TEXT_HTML ,MediaType.TEXT_PLAIN ,MediaType.TEXT_XML }) public Response getMessage( @FormParam("dataInput") String dataInput ) { log.info("Message from getProductByID WS"); log.info("Valeur reçu en entrée :"+ServiceConstants.RETOUR_CHARIOT+dataInput); if (dataInput == null) { result = "your value is null"; } else { result = "your value :"+dataInput; } return Response.status(201).entity(result).build(); } }
voici le log quand je lance depuis la page HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <form action="http://localhost:8080/MyRestful/dao/test" method="POST" > <textarea name="dataInput" rows="8" cols="50"> Hello World </textarea> <p> <input type ="submit" value="Send"/> </p> </form> </body> </html>
voici la classe Junit de test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [http-bio-8080-exec-2] INFO com.myresful.rest.controller.RestServiceControllerImp - Message from getProductByID WS [http-bio-8080-exec-2] INFO com.myresful.rest.controller.RestServiceControllerImp - Valeur reçu en entrée : Hello World
voici le log depuis le Restful quand je lance depuis junit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext_Test.xml") // @ContextConfiguration("classpath:applicationContext.xml") @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestUnitRest { @Autowired private BoxControlUnitDao objBoxControlUnitDao; private Logger log = LoggerFactory.getLogger(TestUnitRest.class); private String userName ; private String userPwd ; private String urlToConnect ; private String responseMsg = ""; private String dataInput; @Test public void test01GetMessageFromRestful() throws Exception { log.info("*****************************test01GetMessageFromRestful******************"); userName = "nizar"; userPwd = "nizar123"; log.info("*****************************Génération de l'url******************"); urlToConnect = "http://localhost:8080/MyRestful/dao/test"; log.info("Url appelé : "+urlToConnect); AutenticateFactory objAutenticateFactory = new AutenticateFactory(urlToConnect, userName, userPwd); dataInput ="Hello World"; responseMsg = objAutenticateFactory.putMessage(dataInput); log.info("Réception du retour :"+"\n"+responseMsg); if (responseMsg.startsWith("your value is null")) { fail( "L'appel du : "+urlToConnect +" à renvoyé :"+ "\n"+ responseMsg ); } else { log.info( "Réponse reçu OK" + "\n"+ "-----contenu de la réponse------" + "\n" + responseMsg+ "\n" + "-----fin------" ); } } }
pour préciser j'utilise une classe d'authentification
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [http-bio-8080-exec-6] INFO com.MyResful.rest.controller.RestServiceControllerImp - Message from getProductByID WS [http-bio-8080-exec-6] INFO com.MyResful.rest.controller.RestServiceControllerImp - Valeur reçu en entrée : null
pourquoi je reçoi la valeur null quand je lance depuis Junit ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 public class AutenticateFactory { static Logger log = LoggerFactory.getLogger(AutenticateFactory.class); String urlToConnect; String userName; String userPwd; String msgResponse; int statusResponse; private com.sun.jersey.api.client.WebResource webResource; private com.sun.jersey.api.client.Client client; public AutenticateFactory(String urlToConnect, String userName,String userPwd) { super(); this.urlToConnect = urlToConnect; this.userName = userName; this.userPwd = userPwd; com.sun.jersey.api.client.config.ClientConfig config = new com.sun.jersey.api.client.config.DefaultClientConfig(); // Déclaration du client client = com.sun.jersey.api.client.Client.create(config); client.addFilter(new LoggingFilter()); client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(userName, userPwd)); // Déclaration du web ressource webResource = client.resource(urlToConnect); } public String getUrlToConnect() { return urlToConnect; } public void setUrlToConnect(String urlToConnect) { this.urlToConnect = urlToConnect; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } public String getMessage() throws Exception { try { ClientResponse response = webResource.type(javax.ws.rs.core.MediaType.TEXT_HTML).get(ClientResponse.class); statusResponse = response.getStatus(); msgResponse = response.getEntity(String.class); // Vérifier le retour de la requete if (statusResponse != HttpURLConnection.HTTP_OK) { throw (new Exception( ServiceConstants.HTTP_ERR_CODE+ statusResponse + ServiceConstants.RETOUR_CHARIOT+ msgResponse )); } } catch (Exception err) { msgResponse = ServiceConstants.HTTP_ERR_CODE+ statusResponse + ServiceConstants.RETOUR_CHARIOT+ err.getMessage(); } client.destroy(); return msgResponse ; } public String putMessage(String inputValue) throws Exception { try { ClientResponse response = webResource.type(javax.ws.rs.core.MediaType.TEXT_HTML).post(ClientResponse.class, inputValue); statusResponse = response.getStatus(); msgResponse = response.getEntity(String.class); // Vérifier le retour de la requete if (statusResponse != HttpURLConnection.HTTP_CREATED) { throw (new Exception( ServiceConstants.HTTP_ERR_CODE+ statusResponse + ServiceConstants.RETOUR_CHARIOT+ msgResponse )); } } catch (Exception err) { /*msgResponse = ServiceConstants.HTTP_ERR_CODE+ statusResponse + ServiceConstants.RETOUR_CHARIOT+ err.getMessage();*/ msgResponse = err.getMessage(); } client.destroy(); return msgResponse ; } }
comment avoir la même valeur comme depuis la apage HTML ?
Merci !
Partager