def connect(self): headers = dict(self.scope["headers"]) if b"authorization" not in headers: LOGGER.warning("WS Request without authorization header") raise DenyConnection() raw_header = headers[b"authorization"] token = token_from_header(raw_header) if not token: LOGGER.warning("Failed to authenticate") raise DenyConnection() self.user = token.user
def connect(self): headers = dict(self.scope["headers"]) if b"authorization" not in headers: LOGGER.warning("WS Request without authorization header") raise DenyConnection() raw_header = headers[b"authorization"] try: token = token_from_header(raw_header) # token is only None when no header was given, in which case we deny too if not token: raise DenyConnection() except AuthenticationFailed as exc: LOGGER.warning("Failed to authenticate", exc=exc) raise DenyConnection() self.user = token.user
def test_invalid_no_token(self): """Test invalid with no token""" auth = b64encode(":abc".encode()).decode() self.assertIsNone(token_from_header(f"Basic :{auth}".encode()))
def test_invalid_decode(self): """Test invalid bas64""" self.assertIsNone(token_from_header("Basic bar".encode()))
def test_invalid_empty_password(self): """Test invalid with empty password""" self.assertIsNone(token_from_header("Basic :".encode()))
def test_valid_bearer(self): """Test valid token""" token = Token.objects.create(intent=TokenIntents.INTENT_API, user=get_anonymous_user()) self.assertEqual(token_from_header(f"Bearer {token.key}".encode()), token)
def test_invalid_type(self): """Test invalid type""" self.assertIsNone(token_from_header("foo bar".encode()))
def test_valid_basic(self): """Test valid token""" token = Token.objects.create(intent=TokenIntents.INTENT_API, user=get_anonymous_user()) auth = b64encode(f":{token.key}".encode()).decode() self.assertEqual(token_from_header(f"Basic {auth}".encode()), token)
def test_invalid_no_token(self): """Test invalid with no token""" with self.assertRaises(AuthenticationFailed): auth = b64encode(":abc".encode()).decode() self.assertIsNone(token_from_header(f"Basic :{auth}".encode()))
def test_invalid_empty_password(self): """Test invalid with empty password""" with self.assertRaises(AuthenticationFailed): token_from_header("Basic :".encode())
def test_invalid_decode(self): """Test invalid bas64""" with self.assertRaises(AuthenticationFailed): token_from_header("Basic bar".encode())
def test_invalid_type(self): """Test invalid type""" with self.assertRaises(AuthenticationFailed): token_from_header("foo bar".encode())