Tizen 2.1 base
[platform/core/security/drm-client.git] / TC / unit / utc_drmclient_drm_get_data_func.c
1 /*\r
2  * drm-client TCs\r
3  *\r
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
5  *\r
6  * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
7  *                      Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
8  *                      Harsha Shekar <h.shekar@samsung.com>\r
9  *\r
10  *\r
11  * Licensed under the Apache License, Version 2.0 (the "License");\r
12  * you may not use this file except in compliance with the License.\r
13  * You may obtain a copy of the License at\r
14  *\r
15  * http://www.apache.org/licenses/LICENSE-2.0\r
16  *\r
17  * Unless required by applicable law or agreed to in writing, software\r
18  * distributed under the License is distributed on an "AS IS" BASIS,\r
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
20  * See the License for the specific language governing permissions and\r
21  * limitations under the License.\r
22  *\r
23  */\r
24 \r
25 /**\r
26  * @file                utc_drmclient_drm_get_data_func.c\r
27  * @brief       TETware unit testing functions for drm_get_data.\r
28  * @author      Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
29  * @version     0.1\r
30  * @history     0.1: Initial draft\r
31  */\r
32 \r
33 #include <tet_api.h>\r
34 #include "drmcontentsdef.h"\r
35 \r
36 static void startup(void);\r
37 static void cleanup(void);\r
38 \r
39 void (*tet_startup)(void) = startup;\r
40 void (*tet_cleanup)(void) = cleanup;\r
41 \r
42 static void utc_drmclient_drm_get_data_func_01(void);\r
43 static void utc_drmclient_drm_get_data_func_02(void);\r
44 static void utc_drmclient_drm_get_data_func_03(void);\r
45 static void utc_drmclient_drm_get_data_func_04(void);\r
46 static void utc_drmclient_drm_get_data_func_05(void);\r
47 static void utc_drmclient_drm_get_data_func_06(void);\r
48 static void utc_drmclient_drm_get_data_func_07(void);\r
49 static void utc_drmclient_drm_get_data_func_08(void);\r
50 static void utc_drmclient_drm_get_data_func_09(void);\r
51 static void utc_drmclient_drm_get_data_func_10(void);\r
52 static void utc_drmclient_drm_get_data_func_11(void);\r
53 static void utc_drmclient_drm_get_data_func_12(void);\r
54 static void utc_drmclient_drm_get_data_func_13(void);\r
55 static void utc_drmclient_drm_get_data_func_14(void);\r
56 \r
57 enum {\r
58         POSITIVE_TC_IDX = 0x01,\r
59         NEGATIVE_TC_IDX,\r
60 };\r
61 \r
62 struct tet_testlist tet_testlist[] = {\r
63         { utc_drmclient_drm_get_data_func_01, POSITIVE_TC_IDX },\r
64         { utc_drmclient_drm_get_data_func_02, NEGATIVE_TC_IDX },\r
65         { utc_drmclient_drm_get_data_func_03, NEGATIVE_TC_IDX },\r
66         { utc_drmclient_drm_get_data_func_04, NEGATIVE_TC_IDX },\r
67         { utc_drmclient_drm_get_data_func_05, POSITIVE_TC_IDX },\r
68         { utc_drmclient_drm_get_data_func_06, NEGATIVE_TC_IDX },\r
69         { utc_drmclient_drm_get_data_func_07, POSITIVE_TC_IDX },\r
70         { utc_drmclient_drm_get_data_func_08, NEGATIVE_TC_IDX },\r
71         { utc_drmclient_drm_get_data_func_09, NEGATIVE_TC_IDX },\r
72         { utc_drmclient_drm_get_data_func_10, NEGATIVE_TC_IDX },\r
73         { utc_drmclient_drm_get_data_func_11, POSITIVE_TC_IDX },\r
74         { utc_drmclient_drm_get_data_func_12, NEGATIVE_TC_IDX },\r
75         { utc_drmclient_drm_get_data_func_13, POSITIVE_TC_IDX },\r
76         { utc_drmclient_drm_get_data_func_14, NEGATIVE_TC_IDX },\r
77         { NULL, 0 }\r
78 };\r
79 \r
80 static void startup(void)\r
81 {\r
82         tet_infoline("drm_get_data:Test started");\r
83 }\r
84 \r
85 static void cleanup(void)\r
86 {\r
87         tet_infoline("drm_get_data:Test completed");\r
88 }\r
89 \r
90 /**\r
91  * @brief Positive test case of drm_get_data()\r
92  */\r
93 static void utc_drmclient_drm_get_data_func_01(void)\r
94 {\r
95         drm_data_type_e data_type = DRM_DATA_TYPE_SECURE_CLOCK;\r
96         drm_secure_clock_data_s secure_clock_info={0};\r
97         int ret = DRM_RETURN_INTERNAL_ERROR;\r
98 \r
99         tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
100         ret = drm_get_data(data_type,NULL,(void*)&secure_clock_info);\r
101         tet_printf("ret=0x%x",ret);\r
102         if(DRM_RETURN_SUCCESS == ret\r
103                         && 1 == secure_clock_info.is_secure_clock_set){\r
104                 tet_printf("Secure Clock is SET:ret=0x%x",ret);\r
105                 tet_printf("Secure Time:"\r
106                                 "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
107                                 secure_clock_info.secure_clock.tm_year,\r
108                                 secure_clock_info.secure_clock.tm_mon,\r
109                                 secure_clock_info.secure_clock.tm_mday,\r
110                                 secure_clock_info.secure_clock.tm_hour,\r
111                                 secure_clock_info.secure_clock.tm_min,\r
112                                 secure_clock_info.secure_clock.tm_sec);\r
113                 tet_result(TET_PASS);\r
114         }else if(DRM_RETURN_SUCCESS == ret\r
115                         && 0 == secure_clock_info.is_secure_clock_set){\r
116                 tet_printf("Secure Clock is NOT SET:ret=0x%x",ret);\r
117                 tet_result(TET_PASS);\r
118         }else{\r
119                 tet_printf("Secure Clock Retrieval FAILED:ret=0x%x",ret);\r
120                 tet_result(TET_FAIL);\r
121         }\r
122 }\r
123 \r
124 /**\r
125  * @brief Negative test case of drm_get_data()\r
126  */\r
127 static void utc_drmclient_drm_get_data_func_02(void)\r
128 {\r
129         drm_data_type_e data_type = DRM_DATA_TYPE_NONE;\r
130         drm_secure_clock_data_s secure_clock_info={0};\r
131         int ret = DRM_RETURN_INTERNAL_ERROR;\r
132 \r
133         tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
134         ret = drm_get_data(data_type,NULL,(void*)&secure_clock_info);\r
135         tet_printf("ret=0x%x",ret);\r
136         if(DRM_RETURN_SUCCESS == ret\r
137                         && 1 == secure_clock_info.is_secure_clock_set){\r
138                 tet_printf("Secure Clock is SET:ret=0x%x",ret);\r
139                 tet_printf("Secure Time:"\r
140                                 "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
141                                 secure_clock_info.secure_clock.tm_year,\r
142                                 secure_clock_info.secure_clock.tm_mon,\r
143                                 secure_clock_info.secure_clock.tm_mday,\r
144                                 secure_clock_info.secure_clock.tm_hour,\r
145                                 secure_clock_info.secure_clock.tm_min,\r
146                                 secure_clock_info.secure_clock.tm_sec);\r
147                 tet_result(TET_FAIL);\r
148         }else if(DRM_RETURN_SUCCESS == ret\r
149                         && 0 == secure_clock_info.is_secure_clock_set){\r
150                 tet_printf("Secure Clock is NOT SET:ret=0x%x",ret);\r
151                 tet_result(TET_FAIL);\r
152         }else{\r
153                 tet_printf("Passing Invalid data_type=%d",data_type);\r
154                 tet_result(TET_PASS);\r
155         }\r
156 }\r
157 \r
158 /**\r
159  * @brief Negative test case of drm_get_data()\r
160  */\r
161 static void utc_drmclient_drm_get_data_func_03(void)\r
162 {\r
163         drm_data_type_e data_type = DRM_DATA_TYPE_SECURE_CLOCK;\r
164         int ret = DRM_RETURN_INTERNAL_ERROR;\r
165 \r
166         tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
167         ret = drm_get_data(data_type,NULL,NULL);\r
168         tet_printf("ret=0x%x",ret);\r
169         if(DRM_RETURN_SUCCESS == ret){\r
170                 tet_printf("Returned Success:ret=0x%x",ret);\r
171                 tet_result(TET_FAIL);\r
172         }else{\r
173                 tet_printf("Passing Invalid output parameter");\r
174                 tet_result(TET_PASS);\r
175         }\r
176 }\r
177 \r
178 /**\r
179  * @brief Negative test case of drm_get_data()\r
180  */\r
181 static void utc_drmclient_drm_get_data_func_04(void)\r
182 {\r
183         drm_data_type_e data_type=DRM_DATA_TYPE_NONE;\r
184         int ret = DRM_RETURN_INTERNAL_ERROR;\r
185 \r
186         tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
187         ret = drm_get_data(data_type,NULL,NULL);\r
188         tet_printf("ret=0x%x",ret);\r
189         if(DRM_RETURN_SUCCESS == ret){\r
190                 tet_printf("Returned Success:ret=0x%x data_type=%d",ret,data_type);\r
191                 tet_result(TET_FAIL);\r
192         }else{\r
193                 tet_printf("Passing Invalid data_type=%d",data_type);\r
194                 tet_result(TET_PASS);\r
195         }\r
196 }\r
197 \r
198 /**\r
199  * @brief Positive test case of drm_get_data()\r
200  */\r
201 static void utc_drmclient_drm_get_data_func_05(void)\r
202 {\r
203         drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG;\r
204         int ret = DRM_RETURN_INTERNAL_ERROR;\r
205         int transtrk_flag = 0;\r
206 \r
207         tet_printf ("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG");\r
208         ret = drm_get_data(data_type, NULL, (void*)&transtrk_flag);\r
209         tet_printf("ret=0x%x", ret);\r
210         if (DRM_RETURN_SUCCESS == ret) {\r
211                 tet_printf("transtrk_flag = %d", transtrk_flag);\r
212                 tet_result(TET_PASS);\r
213         } else {\r
214                 tet_printf("Get Transaction Tracking Flag failed!!, "\r
215                                 "ret = 0x%x", ret);\r
216                 tet_result(TET_FAIL);\r
217         }\r
218 }\r
219 \r
220 /**\r
221  * @brief Negative test case of drm_get_data()\r
222  */\r
223 static void utc_drmclient_drm_get_data_func_06(void)\r
224 {\r
225         drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG;\r
226         int ret = DRM_RETURN_INTERNAL_ERROR;\r
227 \r
228         tet_printf ("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG");\r
229         ret = drm_get_data(data_type, NULL,NULL);\r
230         tet_printf("ret=0x%x", ret);\r
231         if (DRM_RETURN_SUCCESS == ret) {\r
232                 tet_printf("Returned Success");\r
233                 tet_result(TET_FAIL);\r
234         } else {\r
235                 tet_printf("Invalid output:ret = 0x%x", ret);\r
236                 tet_result(TET_PASS);\r
237         }\r
238 }\r
239 \r
240 /**\r
241  * @brief Positive test case of drm_get_data()\r
242  */\r
243 static void utc_drmclient_drm_get_data_func_07(void)\r
244 {\r
245         drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
246         int ret = DRM_RETURN_INTERNAL_ERROR;\r
247 \r
248         tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
249         drm_transaction_id_info_s transaction_id_info;\r
250         memset(&transaction_id_info,0x0,sizeof(drm_transaction_id_info_s));\r
251 \r
252         char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
253         snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
254 \r
255         ret = drm_get_data(data_type,(void*)file_path,(void*)&transaction_id_info);\r
256         tet_printf("ret=0x%x",ret);\r
257         if(DRM_RETURN_SUCCESS == ret){\r
258                 tet_printf("Transaction ID Length =%d file_path=%s",\r
259                                 transaction_id_info.tr_id_len,file_path);\r
260                 if(0 != transaction_id_info.tr_id_len){\r
261                         tet_printf("Transaction ID  =%s",\r
262                                         transaction_id_info.tr_id);\r
263                 }\r
264                 tet_result(TET_PASS);\r
265         }else{\r
266                 tet_printf("Transaction ID Retrieval FAILED:ret=0x%x file_path=%s",\r
267                                 ret,file_path);\r
268                 tet_result(TET_FAIL);\r
269         }\r
270 }\r
271 \r
272 /**\r
273  * @brief Negative test case of drm_get_data()\r
274  */\r
275 static void utc_drmclient_drm_get_data_func_08(void)\r
276 {\r
277         drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
278         int ret = DRM_RETURN_INTERNAL_ERROR;\r
279 \r
280         tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
281         drm_transaction_id_info_s transaction_id_info;\r
282         memset(&transaction_id_info,0x0,sizeof(drm_transaction_id_info_s));\r
283 \r
284         char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
285         snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_EMPTY);\r
286 \r
287         ret = drm_get_data(data_type,(void*)file_path,(void*)&transaction_id_info);\r
288         tet_printf("ret=0x%x",ret);\r
289         if(DRM_RETURN_SUCCESS == ret){\r
290                 tet_printf("Transaction ID Length =%d file_path=%s",\r
291                                 transaction_id_info.tr_id_len,file_path);\r
292                 if(0 != transaction_id_info.tr_id_len){\r
293                         tet_printf("Transaction ID  =%s",\r
294                                         transaction_id_info.tr_id);\r
295                 }\r
296                 tet_result(TET_FAIL);\r
297         }else{\r
298                 tet_printf("Invalid Input:ret=0x%x file_path=%s",\r
299                                 ret,file_path);\r
300                 tet_result(TET_PASS);\r
301         }\r
302 }\r
303 \r
304 /**\r
305  * @brief Negative test case of drm_get_data()\r
306  */\r
307 static void utc_drmclient_drm_get_data_func_09(void)\r
308 {\r
309         drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
310         int ret = DRM_RETURN_INTERNAL_ERROR;\r
311 \r
312         tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
313 \r
314         char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
315         snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
316 \r
317         ret = drm_get_data(data_type,(void*)file_path,NULL);\r
318         tet_printf("ret=0x%x",ret);\r
319         if(DRM_RETURN_SUCCESS == ret){\r
320                 tet_printf("Returned Success:ret=0x%x",ret);\r
321                 tet_result(TET_FAIL);\r
322         }else{\r
323                 tet_printf("Invalid Output:ret=0x%x file_path=%s",\r
324                                 ret,file_path);\r
325                 tet_result(TET_PASS);\r
326         }\r
327 }\r
328 \r
329 /**\r
330  * @brief Negative test case of drm_get_data()\r
331  */\r
332 static void utc_drmclient_drm_get_data_func_10(void)\r
333 {\r
334         drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
335         int ret = DRM_RETURN_INTERNAL_ERROR;\r
336 \r
337         tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
338         drm_transaction_id_info_s transaction_id_info;\r
339         memset(&transaction_id_info,0x0,sizeof(drm_transaction_id_info_s));\r
340 \r
341         ret = drm_get_data(data_type,NULL,(void*)&transaction_id_info);\r
342         tet_printf("ret=0x%x",ret);\r
343         if(DRM_RETURN_SUCCESS == ret){\r
344                 tet_printf("Returned Success:ret=0x%x",ret);\r
345                 tet_result(TET_FAIL);\r
346         }else{\r
347                 tet_printf("Invalid Input:ret=0x%x",ret);\r
348                 tet_result(TET_PASS);\r
349         }\r
350 }\r
351 \r
352 /**\r
353  * @brief Positive test case of drm_get_data()\r
354  */\r
355 static void utc_drmclient_drm_get_data_func_11(void)\r
356 {\r
357         drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_REGISTRATION_CODE;\r
358         int ret = DRM_RETURN_INTERNAL_ERROR;\r
359 \r
360         tet_printf("Testing:DRM_DATA_TYPE_DIVX_REGISTRATION_CODE");\r
361 \r
362         drm_code_info_s reg_code_info;\r
363         memset(&reg_code_info,0x0,sizeof(drm_code_info_s));\r
364 \r
365         ret = drm_get_data(data_type, NULL, (void*) &reg_code_info);\r
366         tet_printf("ret=0x%x", ret);\r
367         if (DRM_RETURN_SUCCESS == ret) {\r
368                 tet_printf("Code Length = %d", reg_code_info.code_len);\r
369                 if (0 != reg_code_info.code_len) {\r
370                         tet_printf("Code = %s", reg_code_info.code);\r
371                 }\r
372                 tet_result(TET_PASS);\r
373         } else {\r
374                 tet_printf("Divx Registration Code Retrieval failed!!");\r
375                 tet_result(TET_FAIL);\r
376         }\r
377 }\r
378 \r
379 /**\r
380  * @brief Negative test case of drm_get_data()\r
381  */\r
382 static void utc_drmclient_drm_get_data_func_12(void)\r
383 {\r
384         drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_REGISTRATION_CODE;\r
385         int ret = DRM_RETURN_INTERNAL_ERROR;\r
386 \r
387         tet_printf("Testing:DRM_DATA_TYPE_DIVX_REGISTRATION_CODE");\r
388 \r
389         ret = drm_get_data(data_type, NULL,NULL);\r
390         tet_printf("ret=0x%x", ret);\r
391         if (DRM_RETURN_SUCCESS == ret) {\r
392                 tet_printf("Success:ret=0x%x", ret);\r
393                 tet_result(TET_FAIL);\r
394         } else {\r
395                 tet_printf("Invalid output:ret=0x%x", ret);\r
396                 tet_result(TET_PASS);\r
397         }\r
398 }\r
399 \r
400 /**\r
401  * @brief Positive test case of drm_get_data()\r
402  */\r
403 static void utc_drmclient_drm_get_data_func_13(void)\r
404 {\r
405         drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE;\r
406         int ret = DRM_RETURN_INTERNAL_ERROR;\r
407 \r
408         tet_printf("Testing:DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE");\r
409 \r
410         drm_code_info_s dereg_code_info;\r
411         memset(&dereg_code_info,0x0,sizeof(drm_code_info_s));\r
412         ret = drm_get_data(data_type, NULL, (void*) &dereg_code_info);\r
413         tet_printf("ret=0x%x", ret);\r
414         if (DRM_RETURN_SUCCESS == ret) {\r
415                 tet_printf("Code Length = %d", dereg_code_info.code_len);\r
416                 if (0 != dereg_code_info.code_len) {\r
417                         tet_printf("Code = %s", dereg_code_info.code);\r
418                 }\r
419                 tet_result(TET_PASS);\r
420         } else {\r
421                 tet_printf("Divx Deregistration Code Retrieval failed!!");\r
422                 tet_result(TET_FAIL);\r
423         }\r
424 }\r
425 \r
426 /**\r
427  * @brief Negative test case of drm_get_data()\r
428  */\r
429 static void utc_drmclient_drm_get_data_func_14(void)\r
430 {\r
431         drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE;\r
432         int ret = DRM_RETURN_INTERNAL_ERROR;\r
433 \r
434         tet_printf("Testing:DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE");\r
435 \r
436         ret = drm_get_data(data_type, NULL,NULL);\r
437         tet_printf("ret=0x%x", ret);\r
438         if (DRM_RETURN_SUCCESS == ret) {\r
439                 tet_printf("Success:ret=0x%x", ret);\r
440                 tet_result(TET_FAIL);\r
441         } else {\r
442                 tet_printf("Invalid output:ret=0x%x", ret);\r
443                 tet_result(TET_PASS);\r
444         }\r
445 }\r