test_00_base.py 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. # -*- coding: utf-8 -*-
  2. """Model unit tests."""
  3. import pytest
  4. from walle.model.user import MenuModel
  5. from walle.model.user import RoleModel
  6. from walle.model.user import UserModel
  7. from werkzeug.security import generate_password_hash
  8. from copy import deepcopy
  9. user_data_login = {
  10. 'username': u'wushuiyong',
  11. 'email': u'wushuiyong@walle-web.io',
  12. 'password': u'WU123shuiyong',
  13. }
  14. @pytest.mark.usefixtures('db')
  15. class TestFoo:
  16. """User tests."""
  17. def test_get_by_id(self):
  18. """Get user by ID."""
  19. pass
  20. # user = Foo(username='testuser', email='wushuiyong@mail.com')
  21. # user.save()
  22. # print(user.id)
  23. #
  24. # retrieved = Foo.get_by_id(user.id)
  25. # assert retrieved == user
  26. class TestAccess:
  27. def from_data(self):
  28. return []
  29. def test_add(self):
  30. access_list = [
  31. {
  32. "archive": 0,
  33. "created_at": u"2017-06-11 23:11:38",
  34. "url": u"xx.yy.zz",
  35. "visible": 1,
  36. "icon": u"leaf",
  37. "id": 1,
  38. "name_cn": u"用户中心",
  39. "name_en": u"",
  40. "pid": 0,
  41. "sequence": 10001,
  42. "type": u"module",
  43. "updated_at": u"2017-06-12 00:15:29"
  44. },
  45. {
  46. "archive": 0,
  47. "created_at": u"2017-06-11 23:11:52",
  48. "url": u"xx.yy.zz",
  49. "visible": 1,
  50. "icon": u"leaf",
  51. "id": 2,
  52. "name_cn": u"配置中心",
  53. "name_en": u"",
  54. "pid": 0,
  55. "sequence": 10002,
  56. "type": u"module",
  57. "updated_at": u"2017-06-12 00:15:29"
  58. },
  59. {
  60. "archive": 0,
  61. "created_at": u"2017-06-11 23:12:45",
  62. "url": u"xx.yy.zz",
  63. "visible": 1,
  64. "icon": u"leaf",
  65. "id": 3,
  66. "name_cn": u"上线单",
  67. "name_en": u"",
  68. "pid": 0,
  69. "sequence": 10003,
  70. "type": u"module",
  71. "updated_at": u"2017-06-12 00:15:29"
  72. },
  73. {
  74. "archive": 0,
  75. "created_at": u"2017-06-11 23:13:51",
  76. "url": u"xx.yy.zz",
  77. "visible": 1,
  78. "icon": u"leaf",
  79. "id": 11,
  80. "name_cn": u"用户管理",
  81. "name_en": u"user",
  82. "pid": 1,
  83. "sequence": 10101,
  84. "type": u"controller",
  85. "updated_at": u"2017-06-14 10:42:45"
  86. },
  87. {
  88. "archive": 0,
  89. "created_at": u"2017-06-11 23:14:11",
  90. "url": u"xx.yy.zz",
  91. "visible": 1,
  92. "icon": u"leaf",
  93. "id": 12,
  94. "name_cn": u"用户组",
  95. "name_en": u"group",
  96. "pid": 1,
  97. "sequence": 10102,
  98. "type": u"controller",
  99. "updated_at": u"2017-06-14 10:42:48"
  100. },
  101. {
  102. "archive": 0,
  103. "created_at": u"2017-06-11 23:14:44",
  104. "url": u"xx.yy.zz",
  105. "visible": 1,
  106. "icon": u"leaf",
  107. "id": 13,
  108. "name_cn": u"角色",
  109. "name_en": u"role",
  110. "pid": 1,
  111. "sequence": 10103,
  112. "type": u"controller",
  113. "updated_at": u"2017-06-14 10:42:52"
  114. },
  115. {
  116. "archive": 0,
  117. "created_at": u"2017-06-11 23:15:30",
  118. "url": u"xx.yy.zz",
  119. "visible": 1,
  120. "icon": u"leaf",
  121. "id": 14,
  122. "name_cn": u"环境管理",
  123. "name_en": u"environment",
  124. "pid": 2,
  125. "sequence": 10201,
  126. "type": u"controller",
  127. "updated_at": u"2017-06-14 10:42:58"
  128. },
  129. {
  130. "archive": 0,
  131. "created_at": u"2017-06-11 23:15:51",
  132. "url": u"xx.yy.zz",
  133. "visible": 1,
  134. "icon": u"leaf",
  135. "id": 15,
  136. "name_cn": u"服务器管理",
  137. "name_en": u"server",
  138. "pid": 2,
  139. "sequence": 10202,
  140. "type": u"controller",
  141. "updated_at": u"2017-06-14 10:43:01"
  142. },
  143. {
  144. "archive": 0,
  145. "created_at": u"2017-06-11 23:16:18",
  146. "url": u"xx.yy.zz",
  147. "visible": 1,
  148. "icon": u"leaf",
  149. "id": 16,
  150. "name_cn": u"项目管理",
  151. "name_en": u"project",
  152. "pid": 2,
  153. "sequence": 10203,
  154. "type": u"controller",
  155. "updated_at": u"2017-06-14 10:43:07"
  156. },
  157. {
  158. "archive": 0,
  159. "created_at": u"2017-06-11 23:17:12",
  160. "url": u"xx.yy.zz",
  161. "visible": 1,
  162. "icon": u"leaf",
  163. "id": 101,
  164. "name_cn": u"查看",
  165. "name_en": u"get",
  166. "pid": 11,
  167. "sequence": 11101,
  168. "type": u"action",
  169. "updated_at": u"2017-06-14 10:43:09"
  170. },
  171. {
  172. "archive": 0,
  173. "created_at": u"2017-06-11 23:17:26",
  174. "url": u"xx.yy.zz",
  175. "visible": 1,
  176. "icon": u"leaf",
  177. "id": 102,
  178. "name_cn": u"修改",
  179. "name_en": u"put",
  180. "pid": 11,
  181. "sequence": 11102,
  182. "type": u"action",
  183. "updated_at": u"2017-06-14 10:43:17"
  184. },
  185. {
  186. "archive": 0,
  187. "created_at": u"2017-06-11 23:17:59",
  188. "url": u"xx.yy.zz",
  189. "visible": 1,
  190. "icon": u"leaf",
  191. "id": 103,
  192. "name_cn": u"新增",
  193. "name_en": u"post",
  194. "pid": 11,
  195. "sequence": 11103,
  196. "type": u"action",
  197. "updated_at": u"2017-06-14 10:43:19"
  198. },
  199. {
  200. "archive": 0,
  201. "created_at": u"2017-06-11 23:18:16",
  202. "url": u"xx.yy.zz",
  203. "visible": 1,
  204. "icon": u"leaf",
  205. "id": 104,
  206. "name_cn": u"删除",
  207. "name_en": u"delete",
  208. "pid": 11,
  209. "sequence": 11104,
  210. "type": u"action",
  211. "updated_at": u"2017-06-14 10:43:35"
  212. },
  213. {
  214. "archive": 0,
  215. "created_at": u"2017-06-19 08:14:56",
  216. "url": u"xx.yy.zz",
  217. "visible": 1,
  218. "icon": u"leaf",
  219. "id": 105,
  220. "name_cn": u"查看",
  221. "name_en": u"get",
  222. "pid": 12,
  223. "sequence": 11201,
  224. "type": u"action",
  225. "updated_at": u"2017-06-19 08:14:56"
  226. },
  227. {
  228. "archive": 0,
  229. "created_at": u"2017-06-19 08:14:56",
  230. "url": u"xx.yy.zz",
  231. "visible": 1,
  232. "icon": u"leaf",
  233. "id": 106,
  234. "name_cn": u"修改",
  235. "name_en": u"put",
  236. "pid": 12,
  237. "sequence": 11202,
  238. "type": u"action",
  239. "updated_at": u"2017-06-19 08:14:56"
  240. },
  241. {
  242. "archive": 0,
  243. "created_at": u"2017-06-19 08:14:56",
  244. "url": u"xx.yy.zz",
  245. "visible": 1,
  246. "icon": u"leaf",
  247. "id": 107,
  248. "name_cn": u"新增",
  249. "name_en": u"post",
  250. "pid": 12,
  251. "sequence": 11203,
  252. "type": u"action",
  253. "updated_at": u"2017-06-19 08:14:56"
  254. },
  255. {
  256. "archive": 0,
  257. "created_at": u"2017-06-19 08:14:56",
  258. "url": u"xx.yy.zz",
  259. "visible": 1,
  260. "icon": u"leaf",
  261. "id": 108,
  262. "name_cn": u"删除",
  263. "name_en": u"delete",
  264. "pid": 12,
  265. "sequence": 11204,
  266. "type": u"action",
  267. "updated_at": u"2017-06-19 08:14:56"
  268. },
  269. {
  270. "archive": 0,
  271. "created_at": u"2017-06-19 08:15:22",
  272. "url": u"xx.yy.zz",
  273. "visible": 1,
  274. "icon": u"leaf",
  275. "id": 109,
  276. "name_cn": u"查看",
  277. "name_en": u"get",
  278. "pid": 13,
  279. "sequence": 11301,
  280. "type": u"action",
  281. "updated_at": u"2017-06-19 08:15:22"
  282. },
  283. {
  284. "archive": 0,
  285. "created_at": u"2017-06-19 08:15:22",
  286. "url": u"xx.yy.zz",
  287. "visible": 1,
  288. "icon": u"leaf",
  289. "id": 110,
  290. "name_cn": u"修改",
  291. "name_en": u"put",
  292. "pid": 13,
  293. "sequence": 11302,
  294. "type": u"action",
  295. "updated_at": u"2017-06-19 08:15:22"
  296. },
  297. {
  298. "archive": 0,
  299. "created_at": u"2017-06-19 08:15:22",
  300. "url": u"xx.yy.zz",
  301. "visible": 1,
  302. "icon": u"leaf",
  303. "id": 111,
  304. "name_cn": u"新增",
  305. "name_en": u"post",
  306. "pid": 13,
  307. "sequence": 11303,
  308. "type": u"action",
  309. "updated_at": u"2017-06-19 08:15:22"
  310. },
  311. {
  312. "archive": 0,
  313. "created_at": u"2017-06-19 08:15:22",
  314. "url": u"xx.yy.zz",
  315. "visible": 1,
  316. "icon": u"leaf",
  317. "id": 112,
  318. "name_cn": u"删除",
  319. "name_en": u"delete",
  320. "pid": 13,
  321. "sequence": 11304,
  322. "type": u"action",
  323. "updated_at": u"2017-06-19 08:15:22"
  324. },
  325. {
  326. "archive": 0,
  327. "created_at": u"2017-06-19 08:15:40",
  328. "url": u"xx.yy.zz",
  329. "visible": 1,
  330. "icon": u"leaf",
  331. "id": 113,
  332. "name_cn": u"查看",
  333. "name_en": u"get",
  334. "pid": 14,
  335. "sequence": 11401,
  336. "type": u"action",
  337. "updated_at": u"2017-06-19 08:15:40"
  338. },
  339. {
  340. "archive": 0,
  341. "created_at": u"2017-06-19 08:15:40",
  342. "url": u"xx.yy.zz",
  343. "visible": 1,
  344. "icon": u"leaf",
  345. "id": 114,
  346. "name_cn": u"修改",
  347. "name_en": u"put",
  348. "pid": 14,
  349. "sequence": 11402,
  350. "type": u"action",
  351. "updated_at": u"2017-06-19 08:15:40"
  352. },
  353. {
  354. "archive": 0,
  355. "created_at": u"2017-06-19 08:15:40",
  356. "url": u"xx.yy.zz",
  357. "visible": 1,
  358. "icon": u"leaf",
  359. "id": 115,
  360. "name_cn": u"新增",
  361. "name_en": u"post",
  362. "pid": 14,
  363. "sequence": 11403,
  364. "type": u"action",
  365. "updated_at": u"2017-06-19 08:15:40"
  366. },
  367. {
  368. "archive": 0,
  369. "created_at": u"2017-06-19 08:15:40",
  370. "url": u"xx.yy.zz",
  371. "visible": 1,
  372. "icon": u"leaf",
  373. "id": 116,
  374. "name_cn": u"删除",
  375. "name_en": u"delete",
  376. "pid": 14,
  377. "sequence": 11404,
  378. "type": u"action",
  379. "updated_at": u"2017-06-19 08:15:40"
  380. },
  381. {
  382. "archive": 0,
  383. "created_at": u"2017-06-19 08:16:21",
  384. "url": u"xx.yy.zz",
  385. "visible": 1,
  386. "icon": u"leaf",
  387. "id": 117,
  388. "name_cn": u"查看",
  389. "name_en": u"get",
  390. "pid": 15,
  391. "sequence": 11501,
  392. "type": u"action",
  393. "updated_at": u"2017-06-19 08:16:21"
  394. },
  395. {
  396. "archive": 0,
  397. "created_at": u"2017-06-19 08:16:21",
  398. "url": u"xx.yy.zz",
  399. "visible": 1,
  400. "icon": u"leaf",
  401. "id": 118,
  402. "name_cn": u"修改",
  403. "name_en": u"put",
  404. "pid": 15,
  405. "sequence": 11502,
  406. "type": u"action",
  407. "updated_at": u"2017-06-19 08:16:21"
  408. },
  409. {
  410. "archive": 0,
  411. "created_at": u"2017-06-19 08:16:21",
  412. "url": u"xx.yy.zz",
  413. "visible": 1,
  414. "icon": u"leaf",
  415. "id": 119,
  416. "name_cn": u"新增",
  417. "name_en": u"post",
  418. "pid": 15,
  419. "sequence": 11503,
  420. "type": u"action",
  421. "updated_at": u"2017-06-19 08:16:21"
  422. },
  423. {
  424. "archive": 0,
  425. "created_at": u"2017-06-19 08:16:21",
  426. "url": u"xx.yy.zz",
  427. "visible": 1,
  428. "icon": u"leaf",
  429. "id": 120,
  430. "name_cn": u"删除",
  431. "name_en": u"delete",
  432. "pid": 15,
  433. "sequence": 11504,
  434. "type": u"action",
  435. "updated_at": u"2017-06-19 08:16:21"
  436. },
  437. {
  438. "archive": 0,
  439. "created_at": u"2017-06-19 08:16:42",
  440. "url": u"xx.yy.zz",
  441. "visible": 1,
  442. "icon": u"leaf",
  443. "id": 121,
  444. "name_cn": u"查看",
  445. "name_en": u"get",
  446. "pid": 16,
  447. "sequence": 11601,
  448. "type": u"action",
  449. "updated_at": u"2017-06-19 08:16:42"
  450. },
  451. {
  452. "archive": 0,
  453. "created_at": u"2017-06-19 08:16:42",
  454. "url": u"xx.yy.zz",
  455. "visible": 1,
  456. "icon": u"leaf",
  457. "id": 122,
  458. "name_cn": u"修改",
  459. "name_en": u"put",
  460. "pid": 16,
  461. "sequence": 11602,
  462. "type": u"action",
  463. "updated_at": u"2017-06-19 08:16:42"
  464. },
  465. {
  466. "archive": 0,
  467. "created_at": u"2017-06-19 08:16:42",
  468. "url": u"xx.yy.zz",
  469. "visible": 1,
  470. "icon": u"leaf",
  471. "id": 123,
  472. "name_cn": u"新增",
  473. "name_en": u"post",
  474. "pid": 16,
  475. "sequence": 11603,
  476. "type": u"action",
  477. "updated_at": u"2017-06-19 08:16:42"
  478. },
  479. {
  480. "archive": 0,
  481. "created_at": u"2017-06-19 08:16:42",
  482. "url": u"xx.yy.zz",
  483. "visible": 1,
  484. "icon": u"leaf",
  485. "id": 124,
  486. "name_cn": u"删除",
  487. "name_en": u"delete",
  488. "pid": 16,
  489. "sequence": 11604,
  490. "type": u"action",
  491. "updated_at": u"2017-06-19 08:16:42"
  492. }
  493. ]
  494. for asscess_data in access_list:
  495. access = MenuModel(
  496. id=asscess_data['id'],
  497. name_cn=asscess_data['name_cn'],
  498. name_en=asscess_data['name_en'],
  499. pid=asscess_data['pid'],
  500. type=asscess_data['type'],
  501. sequence=asscess_data['sequence'],
  502. archive=asscess_data['archive'],
  503. icon=asscess_data['icon'],
  504. url=asscess_data['url'],
  505. visible=asscess_data['visible']
  506. )
  507. access.save()
  508. class TestUser:
  509. user_data_login = deepcopy(user_data_login)
  510. def test_add(self):
  511. self.user_data_login['password'] = generate_password_hash(user_data_login['password'])
  512. user = UserModel(**self.user_data_login)
  513. user.save()
  514. # class TestUser:
  515. # """User tests."""
  516. #
  517. # def test_get_by_id(self):
  518. # """Get user by ID."""
  519. # user = Foo(username='wushuiyongoooo', email='wushuiyong@mail.com')
  520. # user.save()
  521. #
  522. # retrieved = User.get_by_id(user.id)
  523. # assert retrieved == user
  524. # def test_created_at_defaults_to_datetime(self):
  525. # """Test creation date."""
  526. # user = User(username='foo', email='foo@bar.com')
  527. # user.save()
  528. # assert bool(user.created_at)
  529. # assert isinstance(user.created_at, dt.datetime)
  530. #
  531. # def test_password_is_nullable(self):
  532. # """Test null password."""
  533. # user = User(username='foo', email='foo@bar.com')
  534. # user.save()
  535. # assert user.password is None
  536. #
  537. # def test_factory(self, db):
  538. # """Test user factory."""
  539. # user = UserFactory(password='myprecious')
  540. # db.session.commit()
  541. # assert bool(user.username)
  542. # assert bool(user.email)
  543. # assert bool(user.created_at)
  544. # assert user.is_admin is False
  545. # assert user.active is True
  546. # assert user.check_password('myprecious')
  547. #
  548. # def test_check_password(self):
  549. # """Check password."""
  550. # user = User.create(username='foo', email='foo@bar.com',
  551. # password='foobarbaz123')
  552. # assert user.check_password('foobarbaz123') is True
  553. # assert user.check_password('barfoobaz') is False
  554. #
  555. # def test_full_name(self):
  556. # """User full name."""
  557. # user = UserFactory(first_name='Foo', last_name='Bar')
  558. # assert user.full_name == 'Foo Bar'
  559. #
  560. # def test_roles(self):
  561. # """Add a role to a user."""
  562. # role = Role(name='admin')
  563. # role.save()
  564. # user = UserFactory()
  565. # user.roles.append(role)
  566. # user.save()
  567. # assert role in user.roles