[Tͪ#n$;<:a4sX[2ܝΤxXΈKwO.%VG_,y;qhJbؤh넴9WN0{ީS- l4m ]*1&3bv):㯦14eW?O+e,	3I!пD3wBo5[6OHm`F7% D3wBo5[6OYVi]taD<gi;jsFt*yj*gWP~\yNuaO\bPj]r RU]2|vhIzTcpF#*ݟ@+O@}z0%/!8FOLC}v{^Vhsۙ6>U>
+a<-w:e-#Q.v2"exҸϔ1r 6F1f=V,J@HTA(>ֲ";[,\{7dݼx(3\=NtASz1#Y!Uu?\NT[{-g{ ֠KDMryZba֚۳ x}eUq_ueY>WF~tDj{ij.qWנ\T,Xv}e	WWƱR=dub{CmʢoG$7Jٞf8,DA}x~:ٛ3`q Ę|z,5^@`*$W,ڧ<;I-zyVgcPaesSzhcǤe EgKWD)u-r;(ԩuY	#3p08Y(4a@՜VIծOy`hcu3@Tnsw=~'8rBQ("L\0"\l>[u,fH&0ty''Kf
~iYů9k~xQ#Zvzu|ni!<16gEp|BsL4e3į/Y@lO|؇+⋒
r<P|ɦb%z]H&TgP=O.Ƹ|a{~4~@>8lHQpnx听O8êE:tk%wZrdxb%lɕ(}VFuh,Ķ:sT(̓ɮd~u"ӰN#̍b4C,ZZ ƼMW/Z UP}C1(Ѫa~g(62-hdbӆQ 2QA.`Ouq_UQFQ_TmPޝsE׹94AspYmItd6L~JҀ202}nD1X!PZh̸aV(QLmzm턲߱gYf9?wd)ՃgI: 17܌6fԸ]YY^5D[TѯgEp|BsL4|,V=Wq [)fM3l6#U5ܒ4Yˑ,߮fn؝SQv(Ƀt;f2+Q@|Mq 6*6ug?+I*Ә;a0aPpY>͘>q%ְԡC"5a5<)b[W?ԑ]NFr1A5YM)Mp#ewB
ch9ZS99RLKaI0wfE1ug	ۘ,wVFʾQWlͿb})نeu2`CMpQ0J`ۚ$RnJ7%\"Oa	_Y3ˑʤ6怵@pTAϮ'=!k]V()#.X:dm8W*nh&J(Li#t::ɻfDva2nӌ@&Vh]B߿v7g9xx8( y!aS;C+e~SrqOEO~ 72}z薗tՃPaJ&yFnR#.UuӓW5ȅئ:|J fBi4+1:,ގῇ`0Y
ozX8U;CJŊ<+~F0(>^9Uc(=gp1q0bkl ֓FFҪÐ$K+E)Nݳ4=.rx2rrhWvizҰZejŔT6FGª.KƤD,p&2R/KqpSw=\@D0lʚG$g`;gʉ]--`_׫Nŭxb9=5=vPb|쵥8Z䋵ӺgE}ga'd.8A%DQ@^w)'JyGYNPy/+D˧'bT	=]ytA/p,G9L H(%yCQcU%TTʟ%z\ dH'JbʖtwLkYO@<ck#ْs1U;l{& 󎘒%eT߹Xͻ7HOSk
	WG9VJaVd
";WC9s%Z'mWw.`FƳY=6s#0/ޜ\8	Ĥ(5x/Gm7q%}94S+v#ŀh#2Mt9̒"9v.O;#g>租_Pq$2K`cؒcLW٫ȨF'Lc[\$/Bm+P(|;cZ{fmטB)8Č9750ӌk_O
O㍷I|J1ӱY(oZGRDuʀ<A5'#WtjC[Ezaub{CmT^Sf5`d7o U
FnV;Ղb6"ĲjVi?qX>hMVC'XNCQ4ڨd<86AОΈsk2	0>*o	C9
- Đ$H"*'aEf n9|Sz4= %˺~l]&g<{OEYi*K.(+,(ffg א跊9ˢQ, 8\9{fWFi
Byw
b−Pٺ?R=`b-^~7|W!yvN7WmCZdCt;:?YemǊԊޯ^-(L@ie5^E6f Kؾ^us{~,~.|fnvhO}\im\?m!3g~JW.QX@,$_]rl,cAL`ix$t;kP5~$|2ʯ2h{@nNn9EW8ˮF1?6m0g;T%Qnu0/-Wԋ+ɯ&l@Ȗm2jٹB&2@Y/(S{طO+N<DIh@x$0_49 l*/(S{ܹLL5k%ɇ_Νun=qگ9Ά8l+_a<SA)c*5xO9KWT0⓸b@Q=%98͵
Z,DBOōG]gt,TegX;)v%`עc}Y2Zr9?Z)聁>4^              'Event_type' => "index1_Event_type",
                'End_log_pos' => "index1_End_log_pos",
                'Server_id' => "index1_Server_id",
        );
        $count = 3;

        //expects functions
        $dbi->expects($this->once())->method('query')
            ->will($this->returnValue($result));

        $dbi->expects($this->once())->method('numRows')
            ->will($this->returnValue($count));

        $dbi->expects($this->at(0))->method('fetchAssoc')
            ->will($this->returnValue($value));

        $dbi->expects($this->at(1))->method('fetchAssoc')
            ->will($this->returnValue(false));

        $container->set('dbi', $dbi);

        //Call the test function
        $url_params = array();
        $url_params['log'] = "log";
        $url_params['dontlimitchars'] = 1;
        $html = $method->invoke($ctrl, $url_params);

        //validate 1: the sql has been executed
        $this->assertContains(
            'Your SQL query has been executed successfully',
            $html
        );
        //validate 2: SQL
        $this->assertContains(
            "SHOW BINLOG EVENTS IN 'index1' LIMIT 3, 10",
            $html
        );
        //validate 3: BINLOG HTML
        $this->assertContains(
            '<table id="binlogTable">',
            $html
        );
        //validate 4: PMA_getNavigationRow is right
        $urlNavigation = 'server_binlog.php?log=log&amp;dontlimitchars=1&amp;'
            . 'pos=3&amp;server=1&amp';
        $this->assertContains(
            $urlNavigation,
            $html
        );
        $this->assertContains(
            'title="Previous"',
            $html
        );
        //validate 5: Log Item
        $this->assertContains(
            'Log name',
            $html
        );
        $this->assertContains(
            'Position',
            $html
        );
        $this->assertContains(
            'Event type',
            $html
        );
        $this->assertContains(
            'Server ID',
            $html
        );
        $this->assertContains(
            'Original position',
            $html
        );
    }

    /**
     * Tests for _getAllLogItemInfo
     *
     * @return void
     */
    public function testGetAllLogItemInfo()
    {
    	$class = new ReflectionClass('\PMA\libraries\controllers\server\ServerBinlogController');
    	$method = $class->getMethod('_getAllLogItemInfo');
    	$method->setAccessible(true);
    	$ctrl = new ServerBinlogController();

        //Mock DBI
    	$container = Container::getDefaultContainer();
        $dbi = $container->get('dbi');

        $fetchAssoc = array(
            'Info' => 'Info',
            'Log_name' => 'Log_name',
            'Pos' => 'Pos',
            'Event_type' => 'Event_type',
            'Server_id' => 'Server_id',
            'Orig_log_pos' => 'Orig_log_pos',
            'End_log_pos' => 'End_log_pos',
        );
        $dbi->expects($this->at(0))->method('fetchAssoc')
            ->will($this->returnValue($fetchAssoc));
        $dbi->expects($this->at(1))->method('fetchAssoc')
            ->will($this->returnValue(false));
        $container->set('dbi', $dbi);

        $GLOBALS['cfg']['LimitChars'] = 2;

        $result = array();
        $dontlimitchars = ";";
        $html = $method->invoke($ctrl, $result, $dontlimitchars);

        $value = $fetchAssoc;
        $this->assertContains(
            $value['Log_name'],
            $html
        );
        $this->assertContains(
            $value['Pos'],
            $html
        );
        $this->assertContains(
            $value['Event_type'],
            $html
        );
        $this->assertContains(
            $value['Server_id'],
            $html
        );
        $this->assertContains(
            $value['Orig_log_pos'],
            $html
        );
        $this->assertContains(
            htmlspecialchars($value['Info']),
            $html
        );
    }
}
