nixos/tests/glitchtip: test sourcemap uploads
This commit is contained in:
@@ -42,62 +42,73 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript =
|
||||||
import json
|
{ nodes, ... }: # python
|
||||||
import re
|
''
|
||||||
import time
|
import json
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
machine.wait_for_unit("glitchtip.service")
|
machine.wait_for_unit("glitchtip.service")
|
||||||
machine.wait_for_unit("glitchtip-worker.service")
|
machine.wait_for_unit("glitchtip-worker.service")
|
||||||
machine.wait_for_open_port(8000)
|
machine.wait_for_open_port(8000)
|
||||||
|
|
||||||
origin_url = "${domain}"
|
origin_url = "${domain}"
|
||||||
cookie_jar_path = "/tmp/cookies.txt"
|
cookie_jar_path = "/tmp/cookies.txt"
|
||||||
curl = f"curl -b {cookie_jar_path} -c {cookie_jar_path} -fS -H 'Origin: {origin_url}'"
|
curl = f"curl -b {cookie_jar_path} -c {cookie_jar_path} -fS -H 'Origin: {origin_url}'"
|
||||||
|
|
||||||
# create superuser account
|
# create superuser account
|
||||||
machine.succeed("DJANGO_SUPERUSER_PASSWORD=password glitchtip-manage createsuperuser --no-input --email=admin@example.com")
|
machine.succeed("DJANGO_SUPERUSER_PASSWORD=password glitchtip-manage createsuperuser --no-input --email=admin@example.com")
|
||||||
|
|
||||||
# login
|
# login
|
||||||
machine.fail(f"{curl} -s {origin_url}/_allauth/browser/v1/auth/session") # get the csrf token, returns a 401
|
machine.fail(f"{curl} -s {origin_url}/_allauth/browser/v1/auth/session") # get the csrf token, returns a 401
|
||||||
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
||||||
machine.succeed(f"{curl} {origin_url}/_allauth/browser/v1/auth/login -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"email\": \"admin@example.com\", \"password\": \"password\"}}'")
|
machine.succeed(f"{curl} {origin_url}/_allauth/browser/v1/auth/login -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"email\": \"admin@example.com\", \"password\": \"password\"}}'")
|
||||||
|
|
||||||
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/users/me/"))
|
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/users/me/"))
|
||||||
assert resp["email"] == "admin@example.com"
|
assert resp["email"] == "admin@example.com"
|
||||||
assert resp["isSuperuser"] is True
|
assert resp["isSuperuser"] is True
|
||||||
|
|
||||||
# create organization
|
# create organization
|
||||||
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
||||||
machine.succeed(f"{curl} {origin_url}/api/0/organizations/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"name\": \"main\"}}'")
|
machine.succeed(f"{curl} {origin_url}/api/0/organizations/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"name\": \"main\"}}'")
|
||||||
|
|
||||||
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/organizations/"))
|
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/organizations/"))
|
||||||
assert len(resp) == 1
|
assert len(resp) == 1
|
||||||
assert resp[0]["name"] == "main"
|
assert resp[0]["name"] == "main"
|
||||||
assert resp[0]["slug"] == "main"
|
assert resp[0]["slug"] == "main"
|
||||||
|
|
||||||
# create team
|
# create team
|
||||||
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
||||||
machine.succeed(f"{curl} {origin_url}/api/0/organizations/main/teams/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"slug\": \"test\"}}'")
|
machine.succeed(f"{curl} {origin_url}/api/0/organizations/main/teams/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"slug\": \"test\"}}'")
|
||||||
|
|
||||||
# create project
|
# create project
|
||||||
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
||||||
machine.succeed(f"{curl} {origin_url}/api/0/teams/main/test/projects/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"name\": \"test\"}}'")
|
machine.succeed(f"{curl} {origin_url}/api/0/teams/main/test/projects/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"name\": \"test\"}}'")
|
||||||
|
|
||||||
# fetch dsn
|
# fetch dsn
|
||||||
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/projects/main/test/keys/"))
|
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/projects/main/test/keys/"))
|
||||||
assert len(resp) == 1
|
assert len(resp) == 1
|
||||||
assert re.match(r"^http://[\da-f]+@glitchtip\.local:8000/\d+$", dsn := resp[0]["dsn"]["public"])
|
assert re.match(r"^http://[\da-f]+@glitchtip\.local:8000/\d+$", dsn := resp[0]["dsn"]["public"])
|
||||||
|
|
||||||
# send event
|
# send event
|
||||||
machine.succeed(f"SENTRY_DSN={dsn} sentry-cli send-event -m 'hello world'")
|
machine.succeed(f"SENTRY_DSN={dsn} sentry-cli send-event -m 'hello world'")
|
||||||
|
|
||||||
for _ in range(20):
|
for _ in range(20):
|
||||||
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/organizations/main/issues/?query=is:unresolved"))
|
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/organizations/main/issues/?query=is:unresolved"))
|
||||||
if len(resp) != 0: break
|
if len(resp) != 0: break
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
assert len(resp) == 1
|
assert len(resp) == 1
|
||||||
assert resp[0]["title"] == "hello world"
|
assert resp[0]["title"] == "hello world"
|
||||||
assert int(resp[0]["count"]) == 1
|
assert int(resp[0]["count"]) == 1
|
||||||
'';
|
|
||||||
|
# create api token
|
||||||
|
csrf_token = machine.succeed(f"grep csrftoken {cookie_jar_path} | cut -f7").rstrip()
|
||||||
|
resp = json.loads(machine.succeed(f"{curl} {origin_url}/api/0/api-tokens/ -s -H 'X-Csrftoken: {csrf_token}' -H 'Content-Type: application/json' -d '{{\"label\":\"token\",\"scopes\":[\"project:write\"]}}'"))
|
||||||
|
token = resp["token"]
|
||||||
|
|
||||||
|
# upload sourcemaps
|
||||||
|
machine.succeed(f"sentry-cli --url {origin_url} --auth-token {token} sourcemaps upload --org main --project test ${nodes.machine.services.glitchtip.package.frontend}/*.map")
|
||||||
|
assert machine.succeed("ls /var/lib/glitchtip/uploads/file_blobs/").strip()
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user