postデータを変更しながら、レスポンスをチェックする

CakePHPを練習していて、


f:id:tenman:20081019232228j:image:w380

フレームワークは、アイディアのたたき台から、UnitTestやWebTestまで、一通りの作業を網羅していてくれる


CakePHPを使って、最初のチュートリアルは、ブログを作ってみようでした

異様な簡単さで、WEBから新規エントリ、編集、削除、閲覧等の機能を自分のものに出来る。


ただ、そこからは、結構いろいろなことを学ばないといけない。自分しかファイルの変更が出来ないような仕組み、MVCのどこに何を書いたらいいのかといった考え方も含めて学ばなければならない。

このあたりから、手探りが始まりだす。

結局、想像力がどれぐらい及ぶかで、次に何をしてみようかということが決まっていく。

MVCは大抵DBと、mod_rewriteを使う。メソッドと、URLが直つながりなので、どんなURLでアクセスできて、出来ないのか等が、次第に気になってくる。

SimpleTestのあたりを勉強していて、Webテストなどというのがあることを知った。


何か始めようとすると、メソッド作っては、適切に動作するかを、チェックするのは常

大抵、すべてうまく動いているか、心配になる

POSTも、PHP5だと簡単に出来るようなので、練習もかねて、POSTの値を変化させて、レスポンスのMD5
と、あるべきMD5を比較する関数を作ってみました。

この関数、PHP5用です。

<?php


	$url   = "http://www.…/ ";
	$query = array(
			array("first" , array("title"=>"test","body"=>"testbody"),"a13efb280bdf9ff7edc7a607a9200840"),
			array("next"  , array("title"=>"test","body"=>"vestbody")),
			);
        echo '<ul>';
	echo post_check($url,$query);
        echo '</ul>';

 
function post_check($url,$posts = array()){

/*
 * postする値を変更しながら、応答をチェックする。
 *
 *$url = "http://www.…/";
 *$query = array(
 *		array("first" , array("title"=>"test","body"=>"testbody"),"a13efb280bdf9ff7edc7a607a9200840"),
 *		array("next"  , array("title"=>"test","body"=>"bestbody")),
 *		);
 */

	$result = "";

	foreach($posts as $key=>$post){
	
		$data = http_build_query($post[1]);
	
		$option = array(
			'http' =>array('method' => 'POST',
			'header' => 'Content-type: application/x-www-form-urlencoded',
			'content' => $data
			)
		);
	
		$context 	= stream_context_create( $option );
		$response 	= md5(file_get_contents($url,false,$context));
	
		switch(true){
			case($response == $post[2]):
			 $result = "";
			break;
			default:
			 $result .= "<li>".$post[0]."&nbsp;".$response."</li>";
			break;
		}
	}
	return $result;
	
}