array('Local address', 'style="width: 150px;"'), array(NULL, 'style="width: 20px;"'), 'peer_ip' => array('Peer address', 'style="width: 150px;"'), 'type' => array('Type', 'style="width: 50px;"'), array('Family'), 'peer_as' => 'Remote AS', 'state' => 'State', 'Uptime / Updates', NULL ); $this->assertSame($result, get_table_header($cols, $vars)); } public function providerGetTableHeader() { return array( array( // Sorting enabled array('page' => 'routing', 'protocol' => 'bgp', 'type' => 'all'), ' Local address Peer address Type Family Remote AS State Uptime / Updates ' . PHP_EOL ), array( // Sorting enabled, selected type array('page' => 'routing', 'protocol' => 'bgp', 'type' => 'all', 'sort' => 'type'), ' Local address Peer address Type  Family Remote AS State Uptime / Updates ' . PHP_EOL ), array( // Sorting disabled array(), ' Local address Peer address Type Family Remote AS State Uptime / Updates ' . PHP_EOL ), ); } /** * @dataProvider providerGenerateTableHeader * @group common */ public function testGenerateTableHeader($cols, $result, $vars = []) { $this->assertSame($result, generate_table_header($cols, $vars)); } public function providerGenerateTableHeader() { $ports_basic = [ 'state-marker' => '', [ NULL, 'style' => "width: 1px;" ], 'device' => [ 'device' => 'Device', 'style' => "min-width: 150px;"], [ 'port' => 'Port Name', 'descr' => 'Description', 'errors' => 'Errors', 'style' => "min-width: 250px;"], [ 'traffic' => [ 'Bits', 'subfields' => [ 'traffic_in' => 'In', 'traffic_out' => 'Out' ] ], 'style' => "width: 100px;" ], [ 'traffic_perc' => [ '%', 'subfields' => [ 'traffic_perc_in' => 'In', 'traffic_perc_out' => 'Out' ] ], 'style' => "width: 110px;" ], [ 'packets' => [ 'Pkts', 'subfields' => [ 'packets_in' => 'In', 'packets_out' => 'Out' ] ], 'style' => "width: 90px;" ], [ 'speed' => 'Speed', 'mtu' => 'MTU', 'style' => "width: 90px;" ], [ 'media' => 'Media', 'mac' => 'MAC', 'style' => "width: 150px;" ] ]; $ports_detail = [ 'state-marker' => '', [ NULL, 'style' => "width: 1px;" ], 'device' => [ 'device' => 'Device', 'style' => "min-width: 150px;" ], [ 'port' => 'Port Name', 'descr' => 'Description', 'errors' => 'Errors', 'style' => "min-width: 250px;" ], [ NULL ], [ 'traffic' => [ 'Bits', 'subfields' => [ 'traffic_in' => 'In', 'traffic_out' => 'Out' ] ], 'packets' => [ 'Pkts', 'subfields' => [ 'packets_in' => 'In', 'packets_out' => 'Out' ] ], 'style' => "width: 100px;" ], [ 'media' => "Media", 'speed' => 'Speed' ], [ 'mac' => "MAC" ], ]; $ports_detail2 = [ 'state-marker' => '', [ NULL, 'style' => "width: 1px;" ], [ 'device' => 'Device', 'style' => "min-width: 150px;" ], [ 'port' => 'Port Name', 'descr' => 'Description', 'errors' => 'Errors', 'style' => "min-width: 250px;" ], [ NULL ], [ 'traffic' => [ 'Bits', 'subfields' => [ 'traffic_in' => 'In', 'traffic_out' => 'Out' ] ], 'packets' => [ 'Pkts', 'subfields' => [ 'packets_in' => 'In', 'packets_out' => 'Out' ] ], 'style' => "width: 100px;" ], [ 'media' => "Media", 'speed' => 'Speed' ], [ 'mac' => "MAC" ], ]; $mixed = [ 'class' => 'header', 'style' => 'width: 100%;', 'state-marker' => '', [ 'Date', 'style' => 'width: 150px;' ], [ 'user' => 'User' ], [ 'from' => 'From' ], [ 'User-Agent', 'style' => 'width: 200px;' ], [ 'Action', 'Test' ], ]; $array = []; $array[] = [ $ports_basic, ' Device Port Name / Description / Errors Bits [In / Out] % [In / Out] Pkts [In / Out] Speed / MTU Media / MAC ', [ 'page' => 'ports', 'format' => 'list', 'view' => 'basic' ] ]; $array[] = [ $ports_detail, ' Device Port Name / Description / Errors Bits [In / Out] / Pkts [In / Out] Media / Speed MAC ', [ 'page' => 'ports', 'format' => 'list', 'view' => 'detail' ] ]; $array[] = [ $ports_detail2, ' Device Port Name / Description / Errors Bits [In / Out] / Pkts [In / Out] Media / Speed MAC ', [ 'page' => 'ports', 'format' => 'list', 'view' => 'detail' ] ]; $array[] = [ $mixed, ' Date User From User-Agent Action / Test ', [ TRUE ] // just not empty vars ]; $array[] = [ $mixed, ' Date User From User-Agent Action / Test ', [ 'show_header' => 0 ] ]; $array[] = [ $mixed, ' Date User From User-Agent Action / Test ', [ 'show_sort' => 0 ] ]; return $array; } /** * @dataProvider providerGenerateButtonGroup * @group common */ public function testGenerateButtonGroup($buttons, $opts, $result) { $this->assertSame($result, generate_button_group($buttons, $opts)); } public function providerGenerateButtonGroup() { return [ [ [ [ 'title' => 'Edit', 'event' => 'default', 'url' => '#modal-edit_syslog_rule_' . $la['la_id'], 'icon' => 'icon-cog text-muted', 'attribs' => [ 'data-toggle' => 'modal' ] ], [ 'title' => 'Delete', 'event' => 'danger', 'url' => '#modal-delete_syslog_rule_' . $la['la_id'], 'icon' => 'icon-trash', 'attribs' => [ 'data-toggle' => 'modal' ] ], ], [ 'title' => 'Rule actions' ], '
' . PHP_EOL ], ]; } /** * @dataProvider providerGetForm * @group forms */ public function testGetForm($form, $html) { //echo "\n<<assertSame($html, generate_form($form)); } public function providerGetForm() { // Temporary use direct array, need switch to json+txt includes $array = []; $form = ['type' => 'horizontal', 'id' => 'logonform', //'space' => '20px', //'title' => 'Logon', //'icon' => 'oicon-key', 'class' => NULL, // Use empty class here, to not add additional divs 'fieldset' => ['logon' => 'Please log in:'], ]; $form['row'][0]['username'] = [ 'type' => 'text', 'fieldset' => 'logon', 'name' => 'Username', 'placeholder' => '', 'class' => 'input-xlarge', //'width' => '95%', 'value' => '']; $form['row'][1]['password'] = [ 'type' => 'password', 'fieldset' => 'logon', 'name' => 'Password', 'autocomplete' => TRUE, 'placeholder' => '', 'class' => 'input-xlarge', //'width' => '95%', 'value' => '']; $form['row'][3]['submit'] = [ 'type' => 'submit', 'name' => 'Log in', 'icon' => 'icon-lock', //'right' => TRUE, 'div_class' => 'controls', 'class' => 'btn-large']; $html = <<

Please log in:

FORM; $array[] = [$form, $html]; // Force text field with autocomplete OFF $form['row'][0]['username']['autocomplete'] = FALSE; $html = <<

Please log in:

FORM; $array[] = [$form, $html]; // Removed password autocomplete unset($form['row'][1]['password']['autocomplete'], $form['row'][0]['username']['autocomplete']); $html = <<

Please log in:

FORM; $array[] = [$form, $html]; // Append checkbox $form['row'][2]['remember'] = [ 'type' => 'checkbox', 'fieldset' => 'logon', 'placeholder' => 'Remember my login']; $html = <<

Please log in:

FORM; $array[] = [$form, $html]; return $array; } /** * @dataProvider providerGetMarkdown * @group html */ public function testGetMarkdown($text, $result, $extra = FALSE) { $this->assertSame($result, get_markdown($text, TRUE, $extra)); } public function providerGetMarkdown() { $array = []; // Simple $array[] = [ 'Hello _Observium_!', 'Hello Observium!' ]; $array[] = [ 'an autolink http://example.com', 'an autolink http://example.com' ]; $array[] = [ 'inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (http://example.com)', 'inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (http://example.com)' ]; $array[] = [ 'trailing slash http://example.com/ and http://example.com/path/', 'trailing slash http://example.com/ and http://example.com/path/' ]; // Extra $array[] = [ 'Please read [FAQ](' . OBSERVIUM_DOCS_URL . '/faq/#snmpv3-strong-authentication-or-encryption){target=_blank}.', 'Please read FAQ.', TRUE ]; // XSS $array[] = [ 'inside of brackets [javascript:alert(1)], inside of braces {javascript:alert(1)}, inside of parentheses (javascript:alert(1)), [click me](javascript:alert(1))', 'inside of brackets [javascript:alert(1)], inside of braces {javascript:alert(1)}, inside of parentheses (javascript:alert(1)), click me' ]; // Multiline $text = <<

Welcome to the demo:

  1. Write Markdown text on the left
  2. Hit the Parse button or ⌘ + Enter
  3. See the result to on the right
HTML; $array[] = [ $text, $html ]; return $array; } } // EOF