Beispiel #1
0
	def test_invalid_profile_type(self):
		repo = MemorySecurityRepo(MEMORY_SESSION)
		repo_profile = MemoryProfileRepo(MEMORY)

		login_uc = LoginUseCase(repo, repo_profile)		
		with self.assertRaises(VarTypeError):
			session = login_uc.login(SALT, 'test str', _on_success_cb)
Beispiel #2
0
	def test_profile_not_valid_no_password(self):
		repo = MemorySecurityRepo(MEMORY_SESSION)
		repo_profile = MemoryProfileRepo(MEMORY)

		profile = Profile('test', Password('', Sha256Hasher))
		login_uc = LoginUseCase(repo, repo_profile)
		
		with self.assertRaises(ValidationError):
			session = login_uc.login(SALT, profile, _on_success_cb)
Beispiel #3
0
	def test_profile_not_exist(self):
		repo = MemorySecurityRepo(MEMORY_SESSION)
		repo_profile = MemoryProfileRepo(MEMORY)

		profile = Profile('test', Password('test', Sha256Hasher))
		login_uc = LoginUseCase(repo, repo_profile)

		session = login_uc.login(SALT, profile, _on_success_cb)

		self.assertIsInstance(session, State)
		self.assertEqual(session.name, login_uc.STATE_NAME)
		self.assertEqual(session.status, login_uc.STATE_FAILED_NO_PROFILE)
Beispiel #4
0
	def test_profile_password_mismatch(self):
		repo = MemorySecurityRepo(MEMORY_SESSION)
		repo_profile = MemoryProfileRepo(MEMORY)

		profile = Profile('test', Password('test', Sha256Hasher))
		self.assertTrue(repo_profile.create(profile))

		profile_invalid = Profile('test', Password('test2', Sha256Hasher))
		login_uc = LoginUseCase(repo, repo_profile)
		session = login_uc.login(SALT, profile_invalid, _on_success_cb)

		self.assertIsInstance(session, State)
		self.assertEqual(session.name, login_uc.STATE_NAME)
		self.assertEqual(session.status, login_uc.STATE_FAILED_PASSWORD_MISMTACH)
Beispiel #5
0
	def test_success(self):
		repo = MemorySecurityRepo(MEMORY_SESSION)
		repo_profile = MemoryProfileRepo(MEMORY)

		profile = Profile('test', Password('test', Sha256Hasher))
		self.assertTrue(repo_profile.create(profile))

		login_uc = LoginUseCase(repo, repo_profile)
		session = login_uc.login(SALT, profile, _on_success_cb)
		
		self.assertFalse(isinstance(session, State))
		self.assertIsNotNone(session.id)
		self.assertIsNone(session.token.options)
		self.assertTrue(isinstance(session.token.build(), str))
Beispiel #6
0
    def test_delete_session_using_none(self):
        repo = MemorySecurityRepo(MEMORY_SESSION)
        repo_profile = MemoryProfileRepo(MEMORY)

        profile = Profile('test', Password('test', Sha256Hasher))
        self.assertTrue(repo_profile.create(profile))

        login_uc = LoginUseCase(repo, repo_profile)
        session = login_uc.login(SALT, profile, _on_success_cb)
        self.assertFalse(isinstance(session, State))
        self.assertIsNotNone(session.id)

        logout_uc = LogoutUseCase(repo, repo_profile)
        logout_uc.logout()
        self.assertFalse(repo.is_exist())
Beispiel #7
0
class LoginAdapter(object):
    def __init__(self, repo_profile: ProfileRepository, repo_sec: SecurityRepo,
                 config: data.Config):
        self.repo = repo_sec
        self.usecase = LoginUseCase(repo_sec, repo_profile)
        self.config = config

    def login(self, name: str, password: str) -> Union[State, Session]:
        """Logging in users

		Raises:
			autowp.core.shared.exceptions.VarTypeError: When given profile is not an instance of Profile
			autowp.core.shared.exceptions.ValidationError: When cannot validate given profile entity
		"""
        if self.repo.is_exist():
            sess_prev = self.repo.get()
            if sess_prev:
                self.repo.remove(sess_prev.id)

        password = Password(raw=password, hasher=Sha256Hasher)
        profile = Profile(name=name, password=password)
        session = self.usecase.login(self.config.salt, profile,
                                     self._login_success_callback)
        return session

    def _login_success_callback(self, salt: str, profile: Profile) -> Session:
        """Build jwt token"""
        payload = {'name': profile.name}
        token = Token(salt=self.config.salt, payload=payload, builder=JWTToken)
        session = Session(token=token, locked=False, profile_id=profile.id)
        return session
Beispiel #8
0
    def test_get_profile_success(self):
        repo = MemorySecurityRepo(MEMORY_SESSION)
        repo_profile = MemoryProfileRepo(MEMORY)

        profile = Profile('test', Password('test', Sha256Hasher))
        self.assertTrue(repo_profile.create(profile))

        login_uc = LoginUseCase(repo, repo_profile)
        session = login_uc.login(SALT, profile, _on_success_cb)

        self.assertFalse(isinstance(session, State))
        self.assertIsNotNone(session.id)
        self.assertIsNotNone(session.profile_id)

        current_profile_uc = CurrentProfileUseCase(repo, repo_profile)
        current_profile = current_profile_uc.current_profile()
        self.assertIsNotNone(current_profile)
        self.assertIsInstance(current_profile, Profile)
Beispiel #9
0
 def __init__(self, repo_profile: ProfileRepository, repo_sec: SecurityRepo,
              config: data.Config):
     self.repo = repo_sec
     self.usecase = LoginUseCase(repo_sec, repo_profile)
     self.config = config
Beispiel #10
0
	def test_invalid_profile_repo(self):
		repo = MemorySecurityRepo(MEMORY)

		with self.assertRaises(VarTypeError):
			login_uc = LoginUseCase(repo, 'test str')		
Beispiel #11
0
	def test_invalid_security_repo(self):
		repo_profile = MemoryProfileRepo(MEMORY)

		with self.assertRaises(VarTypeError):
			login_uc = LoginUseCase('test str', repo_profile)