def test_spam_checker_shadow_ban(self): """A spam checker can choose to shadow-ban a user, which allows registration to succeed.""" class BanAll: def check_registration_for_spam(self, email_threepid, username, request_info): return RegistrationBehaviour.SHADOW_BAN # Configure a spam checker that denies all users. spam_checker = self.hs.get_spam_checker() spam_checker.spam_checkers = [BanAll()] user_id = self.get_success( self.handler.register_user(localpart="user")) # Get an access token. token = "testtok" self.get_success( self.store.add_access_token_to_user(user_id=user_id, token=token, device_id=None, valid_until_ms=None)) # Ensure the user was marked as shadow-banned. request = Mock(args={}) request.args[b"access_token"] = [token.encode("ascii")] request.requestHeaders.getRawHeaders = mock_getRawHeaders() auth = Auth(self.hs) requester = self.get_success(auth.get_user_by_req(request)) self.assertTrue(requester.shadow_banned)
def setUp(self): self.store = StateGroupStore() storage = Mock(main=self.store, state=self.store) hs = Mock( spec_set=[ "config", "get_datastore", "get_storage", "get_auth", "get_state_handler", "get_clock", "get_state_resolution_handler", "hostname", ] ) hs.config = default_config("tesths", True) hs.get_datastore.return_value = self.store hs.get_state_handler.return_value = None hs.get_clock.return_value = MockClock() hs.get_auth.return_value = Auth(hs) hs.get_state_resolution_handler = lambda: StateResolutionHandler(hs) hs.get_storage.return_value = storage self.state = StateHandler(hs) self.event_id = 0
def setUp(self): self.dummy_store = _DummyStore() storage_controllers = Mock(main=self.dummy_store, state=self.dummy_store) hs = Mock( spec_set=[ "config", "get_datastores", "get_storage_controllers", "get_auth", "get_state_handler", "get_clock", "get_state_resolution_handler", "get_account_validity_handler", "get_macaroon_generator", "hostname", ] ) clock = cast(Clock, MockClock()) hs.config = default_config("tesths", True) hs.get_datastores.return_value = Mock(main=self.dummy_store) hs.get_state_handler.return_value = None hs.get_clock.return_value = clock hs.get_macaroon_generator.return_value = MacaroonGenerator( clock, "tesths", b"verysecret" ) hs.get_auth.return_value = Auth(hs) hs.get_state_resolution_handler = lambda: StateResolutionHandler(hs) hs.get_storage_controllers.return_value = storage_controllers self.state = StateHandler(hs) self.event_id = 0
def build_v1auth(self): orf = Auth(self) # Matrix spec makes no reference to what HTTP status code is returned, # but the V1 API uses 403 where it means 401, and the webclient # relies on this behaviour, so V1 gets its own copy of the auth # with backwards compat behaviour. orf.TOKEN_NOT_FOUND_HTTP_STATUS = 403 return orf
def setUp(self): self.state_handler = Mock() self.store = Mock() self.hs = yield setup_test_homeserver(handlers=None) self.hs.get_datastore = Mock(return_value=self.store) self.auth = Auth(self.hs) self.test_user = "******" self.test_token = "_test_token_"
def setUp(self): self.state_handler = Mock() self.store = Mock() self.hs = Mock() self.hs.get_datastore = Mock(return_value=self.store) self.hs.get_state_handler = Mock(return_value=self.state_handler) self.auth = Auth(self.hs) self.test_user = "******" self.test_token = "_test_token_"
def setUp(self): self.state_handler = Mock() self.store = Mock() self.hs = yield setup_test_homeserver(handlers=None) self.hs.get_datastore = Mock(return_value=self.store) self.hs.handlers = TestHandlers(self.hs) self.auth = Auth(self.hs) self.test_user = "******" self.test_token = "_test_token_" # this is overridden for the appservice tests self.store.get_app_service_by_token = Mock(return_value=None)
def setUp(self): self.store = StateGroupStore() hs = Mock(spec_set=[ "get_datastore", "get_auth", "get_state_handler", "get_clock", "get_state_resolution_handler", ]) hs.get_datastore.return_value = self.store hs.get_state_handler.return_value = None hs.get_clock.return_value = MockClock() hs.get_auth.return_value = Auth(hs) hs.get_state_resolution_handler = lambda: StateResolutionHandler(hs) self.state = StateHandler(hs) self.event_id = 0
def setUp(self): self.store = Mock( spec_set=[ "get_state_groups", "add_event_hashes", ] ) hs = Mock(spec=[ "get_datastore", "get_auth", "get_state_handler", "get_clock", ]) hs.get_datastore.return_value = self.store hs.get_state_handler.return_value = None hs.get_auth.return_value = Auth(hs) hs.get_clock.return_value = MockClock() self.state = StateHandler(hs) self.event_id = 0
def prepare(self, reactor, clock, hs): self.store = Mock() hs.get_datastore = Mock(return_value=self.store) hs.get_auth_handler().store = self.store self.auth = Auth(hs) # AuthBlocking reads from the hs' config on initialization. We need to # modify its config instead of the hs' self.auth_blocking = self.auth._auth_blocking self.test_user = "******" self.test_token = b"_test_token_" # this is overridden for the appservice tests self.store.get_app_service_by_token = Mock(return_value=None) self.store.insert_client_ip = simple_async_mock(None) self.store.is_support_user = simple_async_mock(False)
def test_spam_checker_shadow_ban(self): """A spam checker can choose to shadow-ban a user, which allows registration to succeed.""" user_id = self.get_success(self.handler.register_user(localpart="user")) # Get an access token. token = "testtok" self.get_success( self.store.add_access_token_to_user( user_id=user_id, token=token, device_id=None, valid_until_ms=None ) ) # Ensure the user was marked as shadow-banned. request = Mock(args={}) request.args[b"access_token"] = [token.encode("ascii")] request.requestHeaders.getRawHeaders = mock_getRawHeaders() auth = Auth(self.hs) requester = self.get_success(auth.get_user_by_req(request)) self.assertTrue(requester.shadow_banned)
def setUp(self): self.state_handler = Mock() self.store = Mock() self.hs = yield setup_test_homeserver(self.addCleanup, handlers=None) self.hs.get_datastore = Mock(return_value=self.store) self.hs.handlers = TestHandlers(self.hs) self.auth = Auth(self.hs) # AuthBlocking reads from the hs' config on initialization. We need to # modify its config instead of the hs' self.auth_blocking = self.auth._auth_blocking self.test_user = "******" self.test_token = b"_test_token_" # this is overridden for the appservice tests self.store.get_app_service_by_token = Mock(return_value=None) self.store.is_support_user = Mock(return_value=defer.succeed(False))
def setUp(self): self.store = Mock( spec_set=[ "get_state_groups_ids", "add_event_hashes", "get_events", "get_next_state_group", "get_state_group_delta", ] ) hs = Mock(spec_set=[ "get_datastore", "get_auth", "get_state_handler", "get_clock", ]) hs.get_datastore.return_value = self.store hs.get_state_handler.return_value = None hs.get_clock.return_value = MockClock() hs.get_auth.return_value = Auth(hs) self.store.get_next_state_group.side_effect = Mock self.store.get_state_group_delta.return_value = (None, None) self.state = StateHandler(hs) self.event_id = 0
def build_auth(self): return Auth(self)
def get_auth(self) -> Auth: return Auth(self)
try: auth.check(e, auth_events=auth_events) except Exception as ex: print("Failed:", e.event_id, e.type, e.state_key) print("Auth_events:", auth_events) print(ex) print(json.dumps(e.get_dict(), sort_keys=True, indent=4)) # raise print("Success:", e.event_id, e.type, e.state_key) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("json", nargs="?", type=argparse.FileType("r"), default=sys.stdin) args = parser.parse_args() js = json.load(args.json) auth = Auth(Mock()) check_auth( auth, [FrozenEvent(d) for d in js["auth_chain"]], [FrozenEvent(d) for d in js.get("pdus", [])], )