diff --git a/nixos/tests/gitlab.nix b/nixos/tests/gitlab.nix index 16e0dd723ec..ac733461932 100644 --- a/nixos/tests/gitlab.nix +++ b/nixos/tests/gitlab.nix @@ -1,5 +1,8 @@ # This test runs gitlab and checks if it works +let + initialRootPassword = "notproduction"; +in import ./make-test.nix ({ pkgs, lib, ...} : with lib; { name = "gitlab"; meta = with pkgs.stdenv.lib.maintainers; { @@ -27,7 +30,7 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; { services.gitlab = { enable = true; databasePassword = "dbPassword"; - initialRootPassword = "notproduction"; + inherit initialRootPassword; smtp.enable = true; secrets = { secret = "secret"; @@ -69,7 +72,27 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; { }; }; - testScript = '' + testScript = + let + auth = pkgs.writeText "auth.json" (builtins.toJSON { + grant_type = "password"; + username = "root"; + password = initialRootPassword; + }); + + createProject = pkgs.writeText "create-project.json" (builtins.toJSON { + name = "test"; + }); + + putFile = pkgs.writeText "put-file.json" (builtins.toJSON { + branch = "master"; + author_email = "author@example.com"; + author_name = "Firstname Lastname"; + content = "some content"; + commit_message = "create a new file"; + }); + in + '' $gitlab->start(); $gitlab->waitForUnit("gitaly.service"); $gitlab->waitForUnit("gitlab-workhorse.service"); @@ -78,6 +101,13 @@ import ./make-test.nix ({ pkgs, lib, ...} : with lib; { $gitlab->waitForFile("/var/gitlab/state/tmp/sockets/gitlab.socket"); $gitlab->waitUntilSucceeds("curl -sSf http://gitlab/users/sign_in"); $gitlab->succeed("curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in"); - $gitlab->succeed("${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2") + $gitlab->succeed("${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2"); + $gitlab->succeed("echo \"Authorization: Bearer \$(curl -X POST -H 'Content-Type: application/json' -d @${auth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers"); + $gitlab->succeed("curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createProject} http://gitlab/api/v4/projects"); + $gitlab->succeed("curl -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${putFile} http://gitlab/api/v4/projects/1/repository/files/some-file.txt"); + $gitlab->succeed("curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.gz > /tmp/archive.tar.gz"); + $gitlab->succeed("curl -H @/tmp/headers http://gitlab/api/v4/projects/1/repository/archive.tar.bz2 > /tmp/archive.tar.bz2"); + $gitlab->succeed("test -s /tmp/archive.tar.gz"); + $gitlab->succeed("test -s /tmp/archive.tar.bz2"); ''; })