/**
  * @dataProvider provideConstructorArguments
  */
 public function testCreate($user, $type, $expiration, $data)
 {
     $user = $user ? self::$DI['user'] : null;
     $manipulator = new TokenManipulator(self::$DI['app']['orm.em'], self::$DI['app']['random.low'], self::$DI['app']['repo.tokens'], self::$DI['app']['tmp.download.path']);
     $token = $manipulator->create($user, $type, $expiration, $data);
     $this->assertSame($user, $token->getUser());
     $this->assertSame($type, $token->getType());
     $this->assertSame($expiration, $token->getExpiration());
     $this->assertSame($data, $token->getData());
     $this->assertInternalType('string', $token->getValue());
     $this->assertEquals(32, strlen($token->getValue()));
 }