/** * Test LRS */ public function testLRS() { $lrs = new Lrs(); // Test title required. $values = array('title' => '', 'description' => \app\locker\helpers\Helpers::getRandomValue(), 'api' => array('basic_key' => \app\locker\helpers\Helpers::getRandomValue(), 'basic_secret' => \app\locker\helpers\Helpers::getRandomValue())); $validator = $lrs->validate($values); $this->assertTrue($validator->fails()); $this->assertFalse($validator->passes()); $values['title'] = \app\locker\helpers\Helpers::getRandomValue(); $validator = $lrs->validate($values); $this->assertTrue($validator->passes()); // Validate auth_service $values['auth_service_url'] = 'http://' . \app\locker\helpers\Helpers::getRandomValue() . '.adurolms.com'; $validator = $lrs->validate($values); $this->assertTrue($validator->passes()); // Add new lrs $lrs->title = $values['title']; $lrs->description = $values['description']; $lrs->api = $values['api']; $result = $lrs->save(); $this->assertTrue($result); // Load lrs from db $lrs_id = $lrs->_id; $db_lrs = Lrs::find($lrs_id); $this->assertEquals($db_lrs->_id, $lrs->_id); // Edit lrs $title = \app\locker\helpers\Helpers::getRandomValue(); $db_lrs->title = $title; $db_lrs->save(); $this->assertEquals($db_lrs->title, $title); // Delete lrs $db_lrs->delete(); $this->assertEquals(Lrs::find($lrs_id), NULL, 'delete lrs'); }
/** * lrs/{id}/reporting/create * * This test case create new reporting and run report * * It is ensure reporting work correctly. * */ public function testRouterReportCreate() { for ($i = 0; $i < 7; $i++) { $vs = $this->defaultStatment(); $this->statements[] = $this->createStatement($vs, $this->lrs); } $data = array('description' => \app\locker\helpers\Helpers::getRandomValue(), 'name' => '', 'lrs' => $this->lrs->_id, 'query' => array('statement.actor.mbox' => array("mailto:duy.nguyen@go1.com.au"), 'statement.verb.id' => array("http://adlnet.gov/expapi/verbs/experienced"))); //lrs input validation $rules['name'] = 'required|alpha_spaces'; $rules['description'] = 'alpha_spaces'; $validator = Validator::make($data, $rules); $this->assertTrue($validator->fails()); $data['name'] = 'reportabcd'; $data['description'] = 'reportabcd description'; $validator = Validator::make($data, $rules); $this->assertTrue($validator->passes()); // create report. $report = new Report(); $report->lrs = $data['lrs']; $report->query = $data['query']; $report->name = $data['name']; $report->description = $data['description']; $save = $report->save(); $this->assertTrue($save); // Ensure report show in reporting page. $crawler = $this->client->request('GET', "/lrs/{$this->lrs->_id}/reporting"); $this->assertGreaterThan(0, $crawler->filter('html:contains("reportabcd")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("reportabcd description")')->count()); $crawler = $this->client->request('GET', "/lrs/{$this->lrs->_id}/reporting/show/{$report->_id}"); $this->assertGreaterThan(0, $crawler->filter('html:contains("Number of statements")')->count()); $this->assertGreaterThan(0, $crawler->filter('html:contains("7")')->count()); // Delete report by router. $crawler = $this->client->request('DELETE', "/lrs/{$this->lrs->_id}/reporting/delete/{$report->_id}"); $this->assertEquals(Report::find($report->_id), NULL); }
/** * Test Activity */ public function testActivityCRUD() { $activity = new Activity(); $activity->_id = \app\locker\helpers\Helpers::getRandomValue(); $activity->definition = array('type' => \app\locker\helpers\Helpers::getRandomValue(), 'name' => array('en-US' => \app\locker\helpers\Helpers::getRandomValue()), 'description' => array('en-US' => \app\locker\helpers\Helpers::getRandomValue())); $result = $activity->save(); $this->assertTrue($result); // Load activity from db $aid = $activity->_id; $db_activity = Activity::find($aid); $this->assertEquals($db_activity->_id, $activity->_id); // Delete activity $db_activity->delete(); $this->assertEquals(Activity::find($aid), NULL); }
public function create($input) { $user = \Auth::user(); $app = new OAuthApp(); $app->name = $input['name']; $app->description = $input['description']; $app->website = $input['website']; $app->callbackurl = $input['callback']; $app->rules = $input['rules']; $app->client_id = \app\locker\helpers\Helpers::getRandomValue(); $app->secret = \app\locker\helpers\Helpers::getRandomValue(); $app->organisation = array('name' => $input['organisation'] ? $input['organisation'] : '', 'website' => $input['org_url'] ? $input['org_url'] : ''); $app->owner = array('_id' => $user->_id, 'email' => $user->email, 'name' => $user->name, 'role' => $user->role); $result = $app->save() ? true : false; $this->oauthDetails($app->_id, $input['name'], $app->client_id, $app->secret, 1, $input['callback']); return $result; }
/** * Build the required return array for a single or multiple statements. * * @param array $statements Statements to return * @param array $params Parameters used to filter statements * * @return response * **/ public function returnArray($statements = array(), $params = array(), $debug = array()) { $array = array('X-Experience-API-Version' => \Config::get('xapi.using_version')); //replace replace &46; in keys with . //see http://docs.learninglocker.net/docs/statements#quirks for more info if (!empty($statements)) { foreach ($statements as &$s) { $s = \app\locker\helpers\Helpers::replaceHtmlEntity($s['statement']); } } $array['statements'] = $statements; //return total available statements $array['total'] = $this->statement->count($this->lrs->_id, $this->params); //set more link. 100 is our default limit. This should be a value that admins can //set, not hardcoded. if (isset($this->params['offset'])) { if (isset($this->params['limit'])) { $offset = $this->params['offset'] + $this->params['limit']; } else { $offset = $this->params['offset'] + 100; } } else { if (isset($this->params['limit'])) { $offset = $this->params['limit']; } else { $offset = 100; } } //set the more url if ($array['total'] > $offset) { //$url = 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://' . "{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"; $url = "{$_SERVER['REQUEST_URI']}"; if (isset($this->params['offset'])) { if (strpos($url, '?offset=' . $this->params['offset']) !== false) { $url = str_replace('?offset=' . $this->params['offset'], '?offset=' . $offset, $url); } elseif (strpos($url, '&offset=' . $this->params['offset']) !== false) { $url = str_replace('&offset=' . $this->params['offset'], '&offset=' . $offset, $url); } else { $url = $url . '&offset=' . $offset; } } else { if (sizeof($this->params) > 0) { $url = $url . '&offset=' . $offset; } else { $url = $url . '?offset=' . $offset; } } $array['more'] = $url; } else { $array['more'] = ''; } $response = \Response::make($array, 200); //set consistent through data $current_date = \DateTime::createFromFormat('U.u', microtime(true)); $current_date->setTimezone(new \DateTimeZone(\Config::get('app.timezone'))); $current_date = $current_date->format('Y-m-d\\TH:i:s.uP'); $response->headers->set('X-Experience-API-Consistent-Through', $current_date); return $response; }
private function setAvatar($mbox) { if (isset($mbox)) { $avatar = \app\locker\helpers\Helpers::getGravatar(substr($mbox, 7), '20'); $avatar = '<img src="' . $avatar . '" alt="User gravatar" />'; } else { $avatar = ''; } return $avatar; }
protected function dummyEmail() { return helpers::getRandomValue() . '@go1.com.au'; }
<?php //grab gravatar if available $grav_url = \app\locker\helpers\Helpers::getGravatar($user->email, '50'); ?> <div class='user-list clearfix'> @if($user->verified == 'yes') <span class="label label-success pull-right"> {{ Lang::get('users.verified') }} <i class="icon icon-check"></i> </span> @else <span class="label label-default pull-right"> {{ Lang::get('users.unverified') }} </span> @endif <div class="user-avatar"> <img src="{{ $grav_url }}" alt="Avatar" class="pull-left avatar img-circle" /> @if ( Auth::user()->_id != $user['_id'] ) @include('partials.users.forms.delete', array('user' => $user)) @endif @if( $user->verified != 'yes') @include('partials.site.forms.verifyUser', array('user' => $user)) @endif </div> <div class="user-details"> <div class="user-details-item"> {{ $user->name }} </div> <div class="user-details-item"> {{ $user->email }} </div>
/** * Generate a new key and secret for basic auth * **/ public function editCredentials($id) { $lrs = $this->lrs->find($id); $lrs->api = array('basic_key' => \app\locker\helpers\Helpers::getRandomValue(), 'basic_secret' => \app\locker\helpers\Helpers::getRandomValue()); if ($lrs->save()) { $message_type = 'success'; $message = Lang::get('update_key'); } else { $message_type = 'error'; $message = Lang::get('update_key_error'); } return Redirect::back()->with($message_type, $message); }
$stored = new Carbon\Carbon($statement['stored']); ?> <div class="row"> <div class="col-xs-12 col-sm-12 col-lg-12"> <div class="statement-row clearfix"> <span onclick="$('.state-{{ $statement['id'] }}').toggle();"><i class="icon icon-cog lightgrey pull-left"></i></span> <span class="pull-left statement-avatar"> <img src="{{ $avatar }}" alt='avatar' class="img-circle" /> </span> {{ $name }} <i>{{ $verb }}</i> <a href="{{ $object_id }}">{{{ $object }}}</a> <small>| {{ $stored->diffForHumans() }} ({{ $stored->toDayDateTimeString() }})</small> <div class="full-statement state-{{ $statement['id'] }}" style="display:none;"> <?php $statement = \app\locker\helpers\Helpers::replaceHtmlEntity($json); ?> <pre>{{{ json_encode($statement,JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) }}}</pre> </div> </div> </div> </div>
/** * * Mongo doesn't allow full stops (.) in keys as it is reserved, so, * we replace with &46; where required. This will most likely only * happen in extensions. * * @param array $statement A full statement array * * @return array $statement * */ private function replaceFullStop($statement) { $statement = \app\locker\helpers\Helpers::replaceFullStop($statement); return $statement; }