/**
  * Create a registration.
  *
  * @param Request $request
  *
  * @return Response
  */
 public function doRegistration(Request $request)
 {
     try {
         $this->validator->isValidUserName();
         $this->validator->isValidPassword();
         $user = $this->userBuilder->getUser($request->getUserName(), $request->getPassword());
         $userId = $this->userDao->create($user);
         return new Response('yes', '201', $userId);
     } catch (InvalidUserNameException $exception) {
         return new Response('no', '601', '');
     } catch (InvalidPasswordException $exception) {
         return new Response('no', '602', '');
     } catch (UserExistsException $exception) {
         return new Response('no', '701', '');
     } catch (Exception $exception) {
         return new Response('no', '500', '');
     }
 }
 public function testRegistration()
 {
     $request = new Request('bandi', 'jelszo', 'jelszo');
     $user = new User($request->getUserName(), $request->getPassword(), $request->getPassword() . UserBuilder::$salt);
     $validator = $this->getMockBuilder('Kata\\Registration\\Validator')->disableOriginalConstructor()->getMock();
     $validator->expects($this->once())->method('isValidUserName')->willReturn(true);
     $validator->expects($this->once())->method('isValidPassword')->willReturn(true);
     $userBuilder = $this->getMock('Kata\\Registration\\UserBuilder');
     $userBuilder->expects($this->once())->method('getUser')->willReturn($user);
     $userDao = $this->getMock('Kata\\Registration\\UserDao2');
     $userDao->expects($this->once())->method('create')->willReturn($request->getUserName());
     $controller = new RegistrationController($validator, $userBuilder, $userDao);
     $response = $controller->doRegistration($request);
     $this->assertEquals($response->getSuccess(), 'yes');
     $this->assertEquals($response->getResultCode(), 201);
     $this->assertEquals($response->getResultId(), $request->getUserName());
 }