Exemplo n.º 1
0
 /**
  * Test add user device
  */
 public function test_add_user_device()
 {
     global $USER, $CFG, $DB;
     $this->resetAfterTest(true);
     $device = array('appid' => 'com.moodle.moodlemobile', 'name' => 'occam', 'model' => 'Nexus 4', 'platform' => 'Android', 'version' => '4.2.2', 'pushid' => 'apushdkasdfj4835', 'uuid' => 'asdnfl348qlksfaasef859');
     // Call the external function.
     core_user_external::add_user_device($device['appid'], $device['name'], $device['model'], $device['platform'], $device['version'], $device['pushid'], $device['uuid']);
     $created = $DB->get_record('user_devices', array('pushid' => $device['pushid']));
     $created = (array) $created;
     $this->assertEquals($device, array_intersect_key((array) $created, $device));
     // Test reuse the same pushid value.
     $warnings = core_user_external::add_user_device($device['appid'], $device['name'], $device['model'], $device['platform'], $device['version'], $device['pushid'], $device['uuid']);
     // We need to execute the return values cleaning process to simulate the web service server.
     $warnings = external_api::clean_returnvalue(core_user_external::add_user_device_returns(), $warnings);
     $this->assertCount(1, $warnings);
     // Test update an existing device.
     $device['pushid'] = 'different than before';
     $warnings = core_user_external::add_user_device($device['appid'], $device['name'], $device['model'], $device['platform'], $device['version'], $device['pushid'], $device['uuid']);
     $warnings = external_api::clean_returnvalue(core_user_external::add_user_device_returns(), $warnings);
     $this->assertEquals(1, $DB->count_records('user_devices'));
     $updated = $DB->get_record('user_devices', array('pushid' => $device['pushid']));
     $this->assertEquals($device, array_intersect_key((array) $updated, $device));
     // Test creating a new device just changing the uuid.
     $device['uuid'] = 'newuidforthesameuser';
     $device['pushid'] = 'new different than before';
     $warnings = core_user_external::add_user_device($device['appid'], $device['name'], $device['model'], $device['platform'], $device['version'], $device['pushid'], $device['uuid']);
     $warnings = external_api::clean_returnvalue(core_user_external::add_user_device_returns(), $warnings);
     $this->assertEquals(2, $DB->count_records('user_devices'));
 }