|
@@ -9,7 +9,6 @@ from sentry import audit_log, options
|
|
|
from sentry.api.client import ApiError
|
|
|
from sentry.integrations.discord.client import APPLICATION_COMMANDS_URL, GUILD_URL, DiscordClient
|
|
|
from sentry.integrations.discord.integration import COMMANDS, DiscordIntegrationProvider
|
|
|
-from sentry.integrations.discord.types import DiscordPermissions
|
|
|
from sentry.integrations.models.integration import Integration
|
|
|
from sentry.models.auditlogentry import AuditLogEntry
|
|
|
from sentry.shared_integrations.exceptions import IntegrationError
|
|
@@ -73,12 +72,6 @@ class DiscordSetupTestCase(IntegrationTestCase):
|
|
|
json=[] if command_response_empty else COMMANDS,
|
|
|
)
|
|
|
|
|
|
- responses.add(
|
|
|
- responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}/users/@me/guilds",
|
|
|
- json=[{"id": guild_id, "permissions": str(DiscordPermissions.MANAGE_GUILD.value)}],
|
|
|
- )
|
|
|
-
|
|
|
if command_response_empty:
|
|
|
for command in COMMANDS:
|
|
|
responses.add(
|
|
@@ -167,13 +160,6 @@ class DiscordSetupTestCase(IntegrationTestCase):
|
|
|
"access_token": "access_token",
|
|
|
},
|
|
|
)
|
|
|
-
|
|
|
- responses.add(
|
|
|
- responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}/users/@me/guilds",
|
|
|
- json=[{"id": guild_id, "permissions": str(DiscordPermissions.MANAGE_GUILD.value)}],
|
|
|
- )
|
|
|
-
|
|
|
responses.add(
|
|
|
responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": "user_1234"}
|
|
|
)
|
|
@@ -251,22 +237,19 @@ class DiscordSetupIntegrationTest(DiscordSetupTestCase):
|
|
|
|
|
|
|
|
|
class DiscordIntegrationTest(DiscordSetupTestCase):
|
|
|
- def setUp(self):
|
|
|
- super().setUp()
|
|
|
- self.user_id = "user1234"
|
|
|
- self.guild_id = "12345"
|
|
|
- self.guild_name = "guild_name"
|
|
|
-
|
|
|
@responses.activate
|
|
|
def test_get_guild_name(self):
|
|
|
provider = self.provider()
|
|
|
+ user_id = "user1234"
|
|
|
+ guild_id = "guild_id"
|
|
|
+ guild_name = "guild_name"
|
|
|
responses.add(
|
|
|
responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}{GUILD_URL.format(guild_id=self.guild_id)}",
|
|
|
+ url=f"{DiscordClient.base_url}{GUILD_URL.format(guild_id=guild_id)}",
|
|
|
match=[header_matcher({"Authorization": f"Bot {self.bot_token}"})],
|
|
|
json={
|
|
|
- "id": self.guild_id,
|
|
|
- "name": self.guild_name,
|
|
|
+ "id": guild_id,
|
|
|
+ "name": guild_name,
|
|
|
},
|
|
|
)
|
|
|
responses.add(
|
|
@@ -279,26 +262,21 @@ class DiscordIntegrationTest(DiscordSetupTestCase):
|
|
|
responses.add(
|
|
|
responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": "user_1234"}
|
|
|
)
|
|
|
-
|
|
|
- responses.add(
|
|
|
- responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}/users/@me/guilds",
|
|
|
- json=[{"id": self.guild_id, "permissions": str(DiscordPermissions.MANAGE_GUILD.value)}],
|
|
|
- )
|
|
|
-
|
|
|
- result = provider.build_integration({"guild_id": self.guild_id, "code": self.user_id})
|
|
|
- assert result["name"] == self.guild_name
|
|
|
+ result = provider.build_integration({"guild_id": "guild_id", "code": user_id})
|
|
|
+ assert result["name"] == guild_name
|
|
|
|
|
|
@responses.activate
|
|
|
def test_build_integration_no_code_in_state(self):
|
|
|
provider = self.provider()
|
|
|
+ guild_id = "guild_id"
|
|
|
+ guild_name = "guild_name"
|
|
|
responses.add(
|
|
|
responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}{GUILD_URL.format(guild_id=self.guild_id)}",
|
|
|
+ url=f"{DiscordClient.base_url}{GUILD_URL.format(guild_id=guild_id)}",
|
|
|
match=[header_matcher({"Authorization": f"Bot {self.bot_token}"})],
|
|
|
json={
|
|
|
- "id": self.guild_id,
|
|
|
- "name": self.guild_name,
|
|
|
+ "id": guild_id,
|
|
|
+ "name": guild_name,
|
|
|
},
|
|
|
)
|
|
|
with pytest.raises(IntegrationError):
|
|
@@ -307,40 +285,9 @@ class DiscordIntegrationTest(DiscordSetupTestCase):
|
|
|
@responses.activate
|
|
|
def test_get_guild_name_failure(self):
|
|
|
provider = self.provider()
|
|
|
-
|
|
|
- responses.add(responses.GET, "https://discord.com/api/v10/guilds/guild_name", status=500),
|
|
|
- responses.add(
|
|
|
- responses.POST,
|
|
|
- url="https://discord.com/api/v10/oauth2/token",
|
|
|
- json={
|
|
|
- "access_token": "access_token",
|
|
|
- },
|
|
|
- )
|
|
|
- responses.add(
|
|
|
- responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": self.user_id}
|
|
|
- )
|
|
|
- responses.add(
|
|
|
- responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}/users/@me/guilds",
|
|
|
- json=[{"id": self.guild_id, "permissions": str(DiscordPermissions.MANAGE_GUILD.value)}],
|
|
|
- )
|
|
|
-
|
|
|
- result = provider.build_integration({"guild_id": self.guild_id, "code": self.user_id})
|
|
|
- assert result["name"] == self.guild_id
|
|
|
-
|
|
|
- @responses.activate
|
|
|
- def test_get_user_insufficient_permission(self):
|
|
|
- provider = self.provider()
|
|
|
-
|
|
|
- responses.add(
|
|
|
- responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}{GUILD_URL.format(guild_id=self.guild_id)}",
|
|
|
- match=[header_matcher({"Authorization": f"Bot {self.bot_token}"})],
|
|
|
- json={
|
|
|
- "id": self.guild_id,
|
|
|
- "name": self.guild_name,
|
|
|
- },
|
|
|
- )
|
|
|
+ user_id = "user1234"
|
|
|
+ guild_id = "guild_id"
|
|
|
+ responses.add(responses.GET, "https://discord.com/api/v10/guilds/guild_name", status=500)
|
|
|
responses.add(
|
|
|
responses.POST,
|
|
|
url="https://discord.com/api/v10/oauth2/token",
|
|
@@ -349,20 +296,15 @@ class DiscordIntegrationTest(DiscordSetupTestCase):
|
|
|
},
|
|
|
)
|
|
|
responses.add(
|
|
|
- responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": self.user_id}
|
|
|
- )
|
|
|
- responses.add(
|
|
|
- responses.GET,
|
|
|
- url=f"{DiscordClient.base_url}/users/@me/guilds",
|
|
|
- json=[{"id": self.guild_id, "permissions": str(DiscordPermissions.VIEW_CHANNEL.value)}],
|
|
|
+ responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": user_id}
|
|
|
)
|
|
|
-
|
|
|
- with pytest.raises(IntegrationError):
|
|
|
- provider.build_integration({"guild_id": self.guild_id, "code": self.user_id})
|
|
|
+ result = provider.build_integration({"guild_id": guild_id, "code": user_id})
|
|
|
+ assert result["name"] == guild_id
|
|
|
|
|
|
@responses.activate
|
|
|
def test_get_discord_user_id(self):
|
|
|
provider = self.provider()
|
|
|
+ user_id = "user1234"
|
|
|
|
|
|
responses.add(
|
|
|
responses.POST,
|
|
@@ -372,12 +314,12 @@ class DiscordIntegrationTest(DiscordSetupTestCase):
|
|
|
},
|
|
|
)
|
|
|
responses.add(
|
|
|
- responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": self.user_id}
|
|
|
+ responses.GET, url=f"{DiscordClient.base_url}/users/@me", json={"id": user_id}
|
|
|
)
|
|
|
|
|
|
result = provider._get_discord_user_id("auth_code", "1")
|
|
|
|
|
|
- assert result == self.user_id
|
|
|
+ assert result == user_id
|
|
|
|
|
|
@responses.activate
|
|
|
def test_get_discord_user_id_oauth_failure(self):
|