Skip to content

Commit cca56e7

Browse files
committed
Prepare for PSR compliant namespacing
1 parent 9b141c5 commit cca56e7

File tree

2 files changed

+191
-188
lines changed

2 files changed

+191
-188
lines changed

tests/Api.php

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
<?php
2+
3+
require_once(__DIR__ . '/../api.php');
4+
5+
class Api
6+
{
7+
/**
8+
* Database configuration array
9+
*
10+
* @var array
11+
*/
12+
protected $config;
13+
14+
/**
15+
* @var PHP_CRUD_API_Test
16+
*/
17+
protected $test;
18+
19+
/**
20+
* @var PHP_CRUD_API
21+
*/
22+
protected $api;
23+
24+
public function __construct($test)
25+
{
26+
$this->test = $test;
27+
$this->config = $test::$config;
28+
$this->config['dbengine'] = $test->getEngineName();
29+
}
30+
31+
private function action($method,$url,$data='')
32+
{
33+
$url = parse_url($url);
34+
$query = isset($url['query'])?$url['query']:'';
35+
parse_str($query,$get);
36+
37+
$this->api = new PHP_CRUD_API(array(
38+
'dbengine'=>$this->config['dbengine'],
39+
'hostname'=>$this->config['hostname'],
40+
'username'=>$this->config['username'],
41+
'password'=>$this->config['password'],
42+
'database'=>$this->config['database'],
43+
// callbacks
44+
'table_authorizer'=>function($action,$database,$table) { return true; },
45+
'column_authorizer'=>function($action,$database,$table,$column) { return !($column=='password'&&$action=='list'); },
46+
'record_filter'=>function($action,$database,$table) { return ($table=='posts')?array('id,neq,13'):false; },
47+
'tenancy_function'=>function($action,$database,$table,$column) { return ($table=='users'&&$column=='id')?1:null; },
48+
'input_sanitizer'=>function($action,$database,$table,$column,$type,$value) { return is_string($value)?strip_tags($value):$value; },
49+
'input_validator'=>function($action,$database,$table,$column,$type,$value,$context) { return ($column=='category_id' && !is_numeric($value))?'must be numeric':true; },
50+
'before'=>function(&$action,&$database,&$table,&$id,&$input) { if ($table=='products') if ($action=='create') $input->created_at = '2013-12-11 10:09:08'; else if ($action=='delete') { $action='update'; $input = (object)array('deleted_at' => '2013-12-11 11:10:09'); } },
51+
'after'=>function($action,$database,$table,$id,$input,$output) { file_put_contents('log.txt',var_export(array($action,$database,$table,$id,$input,$output),true),FILE_APPEND); },
52+
// for tests
53+
'method'=>$method,
54+
'request'=>$url['path'],
55+
'post'=>$data,
56+
'get'=>$get,
57+
));
58+
return $this;
59+
}
60+
61+
public function get($url)
62+
{
63+
return $this->action('GET',$url);
64+
}
65+
66+
public function post($url,$data)
67+
{
68+
return $this->action('POST',$url,$data);
69+
}
70+
71+
public function put($url,$data)
72+
{
73+
return $this->action('PUT',$url,$data);
74+
}
75+
76+
public function delete($url)
77+
{
78+
return $this->action('DELETE',$url);
79+
}
80+
81+
public function options($url)
82+
{
83+
return $this->action('OPTIONS',$url);
84+
}
85+
86+
public function patch($url,$data)
87+
{
88+
return $this->action('PATCH',$url,$data);
89+
}
90+
91+
public function expectAny()
92+
{
93+
ob_start();
94+
$this->api->executeCommand();
95+
ob_end_clean();
96+
return $this;
97+
}
98+
99+
public function expect($output,$error=false)
100+
{
101+
$exception = false;
102+
ob_start();
103+
try {
104+
$this->api->executeCommand();
105+
} catch (\Exception $e) {
106+
$exception = $e->getMessage();
107+
}
108+
$data = ob_get_contents();
109+
ob_end_clean();
110+
if ($exception) $this->test->assertEquals($error, $exception);
111+
else $this->test->assertEquals($output, $data);
112+
return $this;
113+
}
114+
}

0 commit comments

Comments
 (0)