PageRenderTime 49ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/t/lib/MT/Test/Permission.pm

http://github.com/movabletype/movabletype
Perl | 1104 lines | 984 code | 116 blank | 4 comment | 18 complexity | 0ed71e3f2518e2208c15e09a58ca596a MD5 | raw file
Possible License(s): LGPL-2.1, MIT, BSD-3-Clause
  1. # Movable Type (r) (C) 2001-2020 Six Apart Ltd. All Rights Reserved.
  2. # This code cannot be redistributed without permission from www.sixapart.com.
  3. # For more information, consult your Movable Type license.
  4. #
  5. package MT::Test::Permission;
  6. use strict;
  7. use warnings;
  8. sub make_author {
  9. my $pkg = shift;
  10. my %params = @_;
  11. require MT::Author;
  12. my $values = {
  13. email => 'test@example.com',
  14. url => 'http://example.com/',
  15. api_password => 'seecret',
  16. auth_type => 'MT',
  17. created_on => '19780131074500',
  18. type => MT::Author::AUTHOR(),
  19. is_superuser => 0,
  20. };
  21. if (%params) {
  22. foreach my $key ( keys %params ) {
  23. $values->{$key} = $params{$key};
  24. }
  25. }
  26. my $count = MT::Author->count( { type => MT::Author::AUTHOR() } );
  27. if ( !$values->{name} ) {
  28. $values->{name} = 'test' . $count;
  29. }
  30. if ( !$values->{nickname} ) {
  31. $values->{nickname} = 'test' . $count;
  32. }
  33. my $author = MT::Author->new();
  34. $author->set_values($values);
  35. $author->set_password("pass");
  36. $author->can_sign_in_cms(1);
  37. $author->can_sign_in_data_api(1);
  38. $author->save()
  39. or die "Couldn't save author record: " . $author->errstr;
  40. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  41. return $author;
  42. }
  43. sub make_website {
  44. my $pkg = shift;
  45. my %params = @_;
  46. my $test_root = $ENV{MT_TEST_ROOT} || "$ENV{MT_HOME}/t";
  47. my $values = {
  48. name => 'Test site',
  49. site_url => 'http://narnia.na/',
  50. site_path => $test_root,
  51. description => "Narnia None Test Website",
  52. custom_dynamic_templates => 'custom',
  53. convert_paras => 1,
  54. allow_reg_comments => 1,
  55. allow_unreg_comments => 0,
  56. allow_pings => 1,
  57. sort_order_posts => 'descend',
  58. sort_order_comments => 'ascend',
  59. remote_auth_token => 'token',
  60. convert_paras_comments => 1,
  61. cc_license =>
  62. 'by-nc-sa http://creativecommons.org/licenses/by-nc-sa/2.0/ http://creativecommons.org/images/public/somerights20.gif',
  63. server_offset => '-3.5',
  64. children_modified_on => '20000101000000',
  65. language => 'en_us',
  66. file_extension => 'html',
  67. theme_id => 'classic_website',
  68. };
  69. if (%params) {
  70. foreach my $key ( keys %params ) {
  71. $values->{$key} = $params{$key};
  72. }
  73. }
  74. require MT::Website;
  75. my $website = MT::Website->new();
  76. $website->set_values($values);
  77. $website->class('website');
  78. $website->save() or die "Couldn't save website: " . $website->errstr;
  79. my $themedir = File::Spec->catdir( $MT::MT_DIR => 'themes' );
  80. MT->config->ThemesDirectory( [$themedir] );
  81. require MT::Theme;
  82. my $theme = MT::Theme->load( $values->{theme_id} )
  83. or die MT::Theme->errstr;
  84. $theme->apply($website);
  85. $website->save() or die "Couldn't save blog: " . $website->errstr;
  86. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  87. return $website;
  88. }
  89. sub make_blog {
  90. my $pkg = shift;
  91. my %params = @_;
  92. my $test_root = $ENV{MT_TEST_ROOT} || "$ENV{MT_HOME}/t";
  93. my $values = {
  94. name => 'none',
  95. site_url => '/::/nana/',
  96. archive_url => '/::/nana/archives/',
  97. site_path => "$test_root/site/",
  98. archive_path => "$test_root/site/archives/",
  99. archive_type => 'Individual,Monthly,Weekly,Daily,Category,Page',
  100. archive_type_preferred => 'Individual',
  101. description => "Narnia None Test Blog",
  102. custom_dynamic_templates => 'custom',
  103. convert_paras => 1,
  104. allow_reg_comments => 1,
  105. allow_unreg_comments => 0,
  106. allow_pings => 1,
  107. sort_order_posts => 'descend',
  108. sort_order_comments => 'ascend',
  109. remote_auth_token => 'token',
  110. convert_paras_comments => 1,
  111. google_api_key => 'r9Vj5K8PsjEu+OMsNZ/EEKjWmbCeQAv1',
  112. cc_license =>
  113. 'by-nc-sa http://creativecommons.org/licenses/by-nc-sa/2.0/ http://creativecommons.org/images/public/somerights20.gif',
  114. server_offset => '-3.5',
  115. children_modified_on => '20000101000000',
  116. language => 'en_us',
  117. file_extension => 'html',
  118. theme_id => 'classic_blog',
  119. parent_id => 1,
  120. };
  121. if (%params) {
  122. foreach my $key ( keys %params ) {
  123. $values->{$key} = $params{$key};
  124. }
  125. }
  126. require MT::Blog;
  127. my $blog = MT::Blog->new();
  128. $blog->set_values($values);
  129. $blog->class('blog');
  130. $blog->save() or die "Couldn't save blog: " . $blog->errstr;
  131. my $themedir = File::Spec->catdir( $MT::MT_DIR => 'themes' );
  132. MT->config->ThemesDirectory( [$themedir] );
  133. require MT::Theme;
  134. my $theme = MT::Theme->load( $values->{theme_id} )
  135. or die MT::Theme->errstr;
  136. $theme->apply($blog);
  137. $blog->save() or die "Couldn't save blog: " . $blog->errstr;
  138. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  139. return $blog;
  140. }
  141. sub make_role {
  142. my $pkg = shift;
  143. my (%params) = @_;
  144. require MT::Role;
  145. my $role = MT::Role->new();
  146. $role->set_values(
  147. { name => $params{name},
  148. permissions => $params{permissions},
  149. }
  150. );
  151. $role->save
  152. or die "Couldn't save role record: " . $role->errstr;
  153. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  154. return $role;
  155. }
  156. sub make_entry {
  157. my $pkg = shift;
  158. my %params = @_;
  159. require MT::Entry;
  160. my $values = {
  161. title => 'A Rainy Day',
  162. text => 'On a drizzly day last weekend,',
  163. text_more => 'I took my grandpa for a walk.',
  164. excerpt => 'A story of a stroll.',
  165. keywords => 'keywords',
  166. created_on => '19780131074500',
  167. authored_on => '19780131074500',
  168. modified_on => '19780131074600',
  169. authored_on => '19780131074500',
  170. author_id => 1,
  171. pinged_urls => 'http://technorati.com/',
  172. allow_comments => 1,
  173. allow_pings => 1,
  174. status => MT::Entry::RELEASE(),
  175. };
  176. if (%params) {
  177. foreach my $key ( keys %params ) {
  178. $values->{$key} = $params{$key};
  179. }
  180. }
  181. my $entry = MT::Entry->new();
  182. $entry->set_values($values);
  183. $entry->save() or die "Couldn't save entry record: " . $entry->errstr;
  184. $entry->clear_cache();
  185. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  186. return $entry;
  187. }
  188. sub make_asset {
  189. my $pkg = shift;
  190. my %params = @_;
  191. my $class = 'file';
  192. $class = delete $params{class}
  193. if %params && exists $params{class};
  194. my $values = {
  195. url => 'http://narnia.na/nana/files/test.tmpl',
  196. file_path => File::Spec->catfile( $ENV{MT_HOME}, "t", 'test.tmpl' ),
  197. file_name => 'test.tmpl',
  198. file_ext => 'tmpl',
  199. mime_type => 'text/plain',
  200. label => 'Template',
  201. description => 'This is a test template.',
  202. created_by => 1,
  203. created_on => '19780131074500',
  204. };
  205. if (%params) {
  206. foreach my $key ( keys %params ) {
  207. $values->{$key} = $params{$key};
  208. }
  209. }
  210. use MT::Asset;
  211. my $pkg_class = MT::Asset->class_handler($class);
  212. my $asset = $pkg_class->new();
  213. foreach my $k ( keys %$values ) {
  214. $asset->$k( $values->{$k} );
  215. }
  216. $asset->save() or die "Couldn't save asset record: " . $asset->errstr;
  217. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  218. return $asset;
  219. }
  220. sub make_comment {
  221. my $pkg = shift;
  222. my %params = @_;
  223. my $values = {
  224. text =>
  225. 'Postmodern false consciousness has always been firmly rooted in post-Freudian Lacanian neo-Marxist bojangles. Needless to say, this quickly and asymptotically approches a purpletacular jouissance of etic jumpinmypants.',
  226. entry_id => 1,
  227. author => 'v14GrUH 4 cheep',
  228. visible => 1,
  229. email => 'jake@fatman.com',
  230. url => 'http://fatman.com/',
  231. blog_id => 1,
  232. ip => '127.0.0.1',
  233. created_on => '20040714182800',
  234. };
  235. if (%params) {
  236. foreach my $key ( keys %params ) {
  237. $values->{$key} = $params{$key};
  238. }
  239. }
  240. require MT::Comment;
  241. my $comment = MT::Comment->new();
  242. foreach my $k ( keys %$values ) {
  243. $comment->$k( $values->{$k} );
  244. }
  245. $comment->save()
  246. or die "Couldn't save comment record: " . $comment->errstr;
  247. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  248. return $comment;
  249. }
  250. my $template_name_index = 0;
  251. sub make_template {
  252. my $pkg = shift;
  253. my %params = @_;
  254. my $values = {
  255. blog_id => 1,
  256. name => 'blog-name ' . $template_name_index++,
  257. text => '<MTBlogName>',
  258. type => 'custom',
  259. outfile => 'blog.html',
  260. };
  261. if (%params) {
  262. foreach my $key ( keys %params ) {
  263. $values->{$key} = $params{$key};
  264. }
  265. }
  266. require MT::Template;
  267. my $tmpl = MT::Template->new();
  268. foreach my $k ( keys %$values ) {
  269. $tmpl->$k( $values->{$k} );
  270. }
  271. $tmpl->save() or die "Couldn't save template record: " . $tmpl->errstr;
  272. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  273. return $tmpl;
  274. }
  275. sub make_page {
  276. my $pkg = shift;
  277. my %params = @_;
  278. require MT::Page;
  279. my $values = {
  280. blog_id => 1,
  281. title => 'Watching the River Flow',
  282. text => 'What the matter with me,',
  283. text_more => 'I don\'t have much to say,',
  284. keywords => 'no folder',
  285. excerpt => 'excerpt',
  286. created_on => '19780131074500',
  287. authored_on => '19780131074500',
  288. modified_on => '19780131074600',
  289. author_id => 1,
  290. status => MT::Entry::RELEASE(),
  291. };
  292. if (%params) {
  293. foreach my $key ( keys %params ) {
  294. $values->{$key} = $params{$key};
  295. }
  296. }
  297. my $page = MT::Page->new();
  298. $page->set_values($values);
  299. $page->save() or die "Couldn't save page record: " . $page->errstr;
  300. $page->clear_cache();
  301. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  302. return $page;
  303. }
  304. sub make_folder {
  305. my $pkg = shift;
  306. my %params = @_;
  307. my $values = {
  308. blog_id => 2,
  309. label => 'foo',
  310. description => 'foo',
  311. author_id => 1,
  312. parent => 0,
  313. };
  314. if (%params) {
  315. foreach my $key ( keys %params ) {
  316. $values->{$key} = $params{$key};
  317. }
  318. }
  319. require MT::Folder;
  320. my $folder = MT::Folder->new();
  321. foreach my $k ( keys %$values ) {
  322. $folder->$k( $values->{$k} );
  323. }
  324. $folder->save() or die "Couldn't save folder record: " . $folder->errstr;
  325. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  326. return $folder;
  327. }
  328. sub make_templatemap {
  329. my $pkg = shift;
  330. my %params = @_;
  331. my $values = {
  332. is_preferred => 0,
  333. blog_id => 1,
  334. template_id => 1,
  335. archive_type => 'Individual',
  336. };
  337. if (%params) {
  338. foreach my $key ( keys %params ) {
  339. $values->{$key} = $params{$key};
  340. }
  341. }
  342. require MT::TemplateMap;
  343. my $map = MT::TemplateMap->new();
  344. foreach my $k ( keys %$values ) {
  345. $map->$k( $values->{$k} );
  346. }
  347. $map->save() or die "Couldn't save templatemap record: " . $map->errstr;
  348. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  349. return $map;
  350. }
  351. sub make_category {
  352. my $pkg = shift;
  353. my %params = @_;
  354. my $values = {
  355. blog_id => 2,
  356. label => 'foo',
  357. description => 'foo',
  358. author_id => 1,
  359. parent => 0,
  360. };
  361. if (%params) {
  362. foreach my $key ( keys %params ) {
  363. $values->{$key} = $params{$key};
  364. }
  365. }
  366. require MT::Category;
  367. my $cat = MT::Category->new();
  368. foreach my $k ( keys %$values ) {
  369. $cat->$k( $values->{$k} );
  370. }
  371. $cat->save() or die "Couldn't save category record: " . $cat->errstr;
  372. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  373. return $cat;
  374. }
  375. sub make_banlist {
  376. my $pkg = shift;
  377. my %params = @_;
  378. my $values = {
  379. blog_id => 2,
  380. ip => '1.1.1.1',
  381. };
  382. if (%params) {
  383. foreach my $key ( keys %params ) {
  384. $values->{$key} = $params{$key};
  385. }
  386. }
  387. require MT::IPBanList;
  388. my $banlist = MT::IPBanList->new();
  389. foreach my $k ( keys %$values ) {
  390. $banlist->$k( $values->{$k} );
  391. }
  392. $banlist->save()
  393. or die "Couldn't save banlist record: " . $banlist->errstr;
  394. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  395. return $banlist;
  396. }
  397. sub make_notification {
  398. my $pkg = shift;
  399. my %params = @_;
  400. my $values = {
  401. blog_id => 2,
  402. name => 'John Doe',
  403. email => 'john@example.com',
  404. url => 'http://example.com',
  405. };
  406. if (%params) {
  407. foreach my $key ( keys %params ) {
  408. $values->{$key} = $params{$key};
  409. }
  410. }
  411. require MT::Notification;
  412. my $notification = MT::Notification->new();
  413. foreach my $k ( keys %$values ) {
  414. $notification->$k( $values->{$k} );
  415. }
  416. $notification->save()
  417. or die "Couldn't save notification record: " . $notification->errstr;
  418. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  419. return $notification;
  420. }
  421. sub make_fileinfo {
  422. my $pkg = shift;
  423. my %params = @_;
  424. my $values = { blog_id => 2, };
  425. if (%params) {
  426. foreach my $key ( keys %params ) {
  427. $values->{$key} = $params{$key};
  428. }
  429. }
  430. require MT::FileInfo;
  431. my $fileinfo = MT::FileInfo->new();
  432. foreach my $k ( keys %$values ) {
  433. $fileinfo->$k( $values->{$k} );
  434. }
  435. $fileinfo->save()
  436. or die "Couldn't save fileinfo record: " . $fileinfo->errstr;
  437. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  438. return $fileinfo;
  439. }
  440. sub make_log {
  441. my $pkg = shift;
  442. my %params = @_;
  443. my $values = { blog_id => 2, };
  444. if (%params) {
  445. foreach my $key ( keys %params ) {
  446. $values->{$key} = $params{$key};
  447. }
  448. }
  449. require MT::Log;
  450. my $log = MT::Log->new();
  451. foreach my $k ( keys %$values ) {
  452. $log->$k( $values->{$k} );
  453. }
  454. $log->save() or die "Couldn't save log record: " . $log->errstr;
  455. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  456. return $log;
  457. }
  458. sub make_objectasset {
  459. my $pkg = shift;
  460. my %params = @_;
  461. my $values = {
  462. blog_id => 2,
  463. object_id => 1,
  464. object_ds => 'entry',
  465. asset_id => 1,
  466. };
  467. if (%params) {
  468. foreach my $key ( keys %params ) {
  469. $values->{$key} = $params{$key};
  470. }
  471. }
  472. require MT::ObjectAsset;
  473. my $os = MT::ObjectAsset->new();
  474. foreach my $k ( keys %$values ) {
  475. $os->$k( $values->{$k} );
  476. }
  477. $os->save() or die "Couldn't save objectasset record: " . $os->errstr;
  478. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  479. return $os;
  480. }
  481. sub make_objectscore {
  482. my $pkg = shift;
  483. my %params = @_;
  484. my $values = {
  485. namespace => 'sample',
  486. object_id => 1,
  487. object_ds => 'entry',
  488. };
  489. if (%params) {
  490. foreach my $key ( keys %params ) {
  491. $values->{$key} = $params{$key};
  492. }
  493. }
  494. require MT::ObjectScore;
  495. my $os = MT::ObjectScore->new();
  496. foreach my $k ( keys %$values ) {
  497. $os->$k( $values->{$k} );
  498. }
  499. $os->save() or die "Couldn't save objectscore record: " . $os->errstr;
  500. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  501. return $os;
  502. }
  503. sub make_objecttag {
  504. my $pkg = shift;
  505. my %params = @_;
  506. my $values = {
  507. blog_id => 2,
  508. object_id => 1,
  509. object_datasource => 'entry',
  510. tag_id => 1,
  511. };
  512. if (%params) {
  513. foreach my $key ( keys %params ) {
  514. $values->{$key} = $params{$key};
  515. }
  516. }
  517. require MT::ObjectTag;
  518. my $os = MT::ObjectTag->new();
  519. foreach my $k ( keys %$values ) {
  520. $os->$k( $values->{$k} );
  521. }
  522. $os->save() or die "Couldn't save objecttag record: " . $os->errstr;
  523. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  524. return $os;
  525. }
  526. sub make_permission {
  527. my $pkg = shift;
  528. my %params = @_;
  529. my $values = {
  530. blog_id => 0,
  531. author_id => 1,
  532. };
  533. if (%params) {
  534. foreach my $key ( keys %params ) {
  535. $values->{$key} = $params{$key};
  536. }
  537. }
  538. require MT::Permission;
  539. my $perm = MT::Permission->new();
  540. foreach my $k ( keys %$values ) {
  541. $perm->$k( $values->{$k} );
  542. }
  543. $perm->save() or die "Couldn't save permission record: " . $perm->errstr;
  544. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  545. return $perm;
  546. }
  547. sub make_placement {
  548. my $pkg = shift;
  549. my %params = @_;
  550. my $values = {
  551. blog_id => 0,
  552. entry_id => 1,
  553. category_id => 1,
  554. is_primary => 1,
  555. };
  556. if (%params) {
  557. foreach my $key ( keys %params ) {
  558. $values->{$key} = $params{$key};
  559. }
  560. }
  561. require MT::Placement;
  562. my $place = MT::Placement->new();
  563. foreach my $k ( keys %$values ) {
  564. $place->$k( $values->{$k} );
  565. }
  566. $place->save() or die "Couldn't save placement record: " . $place->errstr;
  567. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  568. return $place;
  569. }
  570. sub make_session {
  571. my $pkg = shift;
  572. my %params = @_;
  573. my $values = {
  574. id => '0123456789',
  575. start => time,
  576. };
  577. if (%params) {
  578. foreach my $key ( keys %params ) {
  579. $values->{$key} = $params{$key};
  580. }
  581. }
  582. require MT::Session;
  583. my $sess = MT::Session->new();
  584. foreach my $k ( keys %$values ) {
  585. $sess->$k( $values->{$k} );
  586. }
  587. $sess->save() or die "Couldn't save session record: " . $sess->errstr;
  588. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  589. return $sess;
  590. }
  591. sub make_tag {
  592. my $pkg = shift;
  593. my %params = @_;
  594. my $values = {
  595. name => 'Tag',
  596. n8d_id => 0,
  597. is_private => 0,
  598. };
  599. if (%params) {
  600. foreach my $key ( keys %params ) {
  601. $values->{$key} = $params{$key};
  602. }
  603. }
  604. require MT::Tag;
  605. my $tag = MT::Tag->new();
  606. foreach my $k ( keys %$values ) {
  607. $tag->$k( $values->{$k} );
  608. }
  609. $tag->save() or die "Couldn't save tag record: " . $tag->errstr;
  610. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  611. return $tag;
  612. }
  613. sub make_ping {
  614. my $pkg = shift;
  615. my %params = @_;
  616. my $values = {
  617. blog_id => 2,
  618. tb_id => 1,
  619. title => 'Trackback Title',
  620. excerpt => 'Body',
  621. source_url => 'http://example.com/1',
  622. ip => '127.0.0.1',
  623. blog_name => 'From Blog',
  624. visible => 1,
  625. junk_status => 1,
  626. last_moved_on => '20000101000000',
  627. junk_score => 0,
  628. junk_log => '',
  629. };
  630. if (%params) {
  631. foreach my $key ( keys %params ) {
  632. $values->{$key} = $params{$key};
  633. }
  634. }
  635. require MT::TBPing;
  636. my $ping = MT::TBPing->new();
  637. foreach my $k ( keys %$values ) {
  638. $ping->$k( $values->{$k} );
  639. }
  640. $ping->save() or die "Couldn't save tbping record: " . $ping->errstr;
  641. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  642. return $ping;
  643. }
  644. sub make_tb {
  645. my $pkg = shift;
  646. my %params = @_;
  647. my $values = {
  648. blog_id => 2,
  649. entry_id => 1,
  650. category_id => 0,
  651. };
  652. if (%params) {
  653. foreach my $key ( keys %params ) {
  654. $values->{$key} = $params{$key};
  655. }
  656. }
  657. require MT::Trackback;
  658. my $tb = MT::Trackback->new();
  659. foreach my $k ( keys %$values ) {
  660. $tb->$k( $values->{$k} );
  661. }
  662. $tb->save() or die "Couldn't save trackback record: " . $tb->errstr;
  663. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  664. return $tb;
  665. }
  666. sub make_touch {
  667. my $pkg = shift;
  668. my %params = @_;
  669. my $values = {
  670. blog_id => 2,
  671. object_type => 'blog',
  672. };
  673. if (%params) {
  674. foreach my $key ( keys %params ) {
  675. $values->{$key} = $params{$key};
  676. }
  677. }
  678. require MT::Touch;
  679. my $touch = MT::Touch->new();
  680. foreach my $k ( keys %$values ) {
  681. $touch->$k( $values->{$k} );
  682. }
  683. $touch->save() or die "Couldn't save touch record: " . $touch->errstr;
  684. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  685. return $touch;
  686. }
  687. sub make_plugindata {
  688. my $pkg = shift;
  689. my %params = @_;
  690. my $values = {
  691. plugin => 'Dummy',
  692. key => 'Dummy Key',
  693. };
  694. if (%params) {
  695. foreach my $key ( keys %params ) {
  696. $values->{$key} = $params{$key};
  697. }
  698. }
  699. require MT::PluginData;
  700. my $plugindata = MT::PluginData->new();
  701. foreach my $k ( keys %$values ) {
  702. $plugindata->$k( $values->{$k} );
  703. }
  704. $plugindata->save()
  705. or die "Couldn't save plugindata record: " . $plugindata->errstr;
  706. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  707. return $plugindata;
  708. }
  709. sub make_field {
  710. my $pkg = shift;
  711. my %params = @_;
  712. my $values = {
  713. blog_id => 2,
  714. name => 'Sample Field',
  715. description => 'This is a sample.',
  716. obj_type => 'entry',
  717. type => 'text',
  718. tag => 'samplefield',
  719. basename => 'sample_field',
  720. };
  721. if (%params) {
  722. foreach my $key ( keys %params ) {
  723. $values->{$key} = $params{$key};
  724. }
  725. }
  726. require CustomFields::Field;
  727. my $cf = CustomFields::Field->new();
  728. foreach my $k ( keys %$values ) {
  729. $cf->$k( $values->{$k} );
  730. }
  731. $cf->save() or die "Couldn't save field record: " . $cf->errstr;
  732. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  733. return $cf;
  734. }
  735. sub make_group {
  736. my $pkg = shift;
  737. my %params = @_;
  738. my $values = {
  739. name => 'Sample Group',
  740. display_name => 'Sample Group',
  741. status => 1,
  742. };
  743. if (%params) {
  744. foreach my $key ( keys %params ) {
  745. $values->{$key} = $params{$key};
  746. }
  747. }
  748. require MT::Group;
  749. my $grp = MT::Group->new();
  750. foreach my $k ( keys %$values ) {
  751. $grp->$k( $values->{$k} );
  752. }
  753. $grp->save() or die "Couldn't save group record: " . $grp->errstr;
  754. MT::ObjectDriver::Driver::Cache::RAM->clear_cache();
  755. return $grp;
  756. }
  757. sub make_category_set {
  758. my $pkg = shift;
  759. my %params = @_;
  760. my $values = {
  761. blog_id => 2,
  762. name => 'Sample Category Set',
  763. %params,
  764. };
  765. require MT::CategorySet;
  766. my $cs = MT::CategorySet->new;
  767. $cs->$_( $values->{$_} ) for keys %{$values};
  768. $cs->save or die q{Couldn't save category set record: } . $cs->errstr;
  769. MT::ObjectDriver::Driver::Cache::RAM->clear_cache;
  770. $cs;
  771. }
  772. my $content_type_name_index = 0;
  773. sub make_content_type {
  774. my $pkg = shift;
  775. my %params = @_;
  776. my $values = {
  777. name => 'Sample Content Type ' . $content_type_name_index++,
  778. description => 'This is a sample.',
  779. blog_id => 2,
  780. %params,
  781. };
  782. require MT::ContentType;
  783. my $ct = MT::ContentType->new;
  784. $ct->$_( $values->{$_} ) for keys %{$values};
  785. $ct->save or die q{Couldn't save content type record: } . $ct->errstr;
  786. MT::ObjectDriver::Driver::Cache::RAM->clear_cache;
  787. _mock_perms_from_registry();
  788. $ct;
  789. }
  790. sub make_content_field {
  791. my $pkg = shift;
  792. my %params = @_;
  793. my $values = {
  794. blog_id => 2,
  795. type => 'single_line_text',
  796. name => 'Sample Content Field',
  797. description => 'This is a sample single_line_text field.',
  798. %params,
  799. };
  800. require MT::ContentField;
  801. my $cf = MT::ContentField->new;
  802. $cf->$_( $values->{$_} ) for keys %{$values};
  803. $cf->save or die q{Couldn't save content field record: } . $cf->errstr;
  804. MT::ObjectDriver::Driver::Cache::RAM->clear_cache;
  805. _mock_perms_from_registry();
  806. $cf;
  807. }
  808. sub make_content_data {
  809. my $pkg = shift;
  810. my %params = @_;
  811. require MT::ContentStatus;
  812. my $values = {
  813. blog_id => 2,
  814. status => MT::ContentStatus::RELEASE(),
  815. author_id => 1,
  816. authored_on => '20170530163600',
  817. %params,
  818. };
  819. require MT::ContentData;
  820. my $cd = MT::ContentData->new;
  821. $cd->$_( $values->{$_} ) for keys %{$values};
  822. $cd->save or die q{Couldn't save content data record: } . $cd->errstr;
  823. MT::ObjectDriver::Driver::Cache::RAM->clear_cache;
  824. $cd;
  825. }
  826. {
  827. my $mock_permission;
  828. sub _mock_perms_from_registry {
  829. eval { require Test::MockModule } or return;
  830. $mock_permission = Test::MockModule->new('MT::Permission');
  831. $mock_permission->mock(
  832. 'perms_from_registry',
  833. sub {
  834. my %perms = %{ $mock_permission->original('perms_from_registry')->() };
  835. my $content_type_perm
  836. = MT->app->model('content_type')->all_permissions;
  837. foreach my $k ( keys %$content_type_perm ) {
  838. next if exists $perms{$k};
  839. $perms{$k} = $content_type_perm->{$k};
  840. }
  841. \%perms;
  842. }
  843. ) if !$mock_permission->is_mocked('perms_from_registry');
  844. }
  845. }
  846. sub make_filter {
  847. my $pkg = shift;
  848. my %params = @_;
  849. my $values = {
  850. blog_id => 1,
  851. author_id => 1,
  852. label => 'Test filter',
  853. object_ds => 'entry',
  854. %params,
  855. };
  856. require MT::Filter;
  857. my $filter = MT::Filter->new;
  858. $filter->$_( $values->{$_} ) for keys %{$values};
  859. $filter->save or die q{Couldn't save filter record: } . $filter->errstr;
  860. MT::ObjectDriver::Driver::Cache::RAM->clear_cache;
  861. return $filter;
  862. }
  863. 1;