Unverified Commit 84bbdc74 authored by Guanran Wang's avatar Guanran Wang
Browse files

nixos/mihomo: add tests

parent a5d09a41
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -528,6 +528,7 @@ in {
  memcached = handleTest ./memcached.nix {};
  merecat = handleTest ./merecat.nix {};
  metabase = handleTest ./metabase.nix {};
  mihomo = handleTest ./mihomo.nix {};
  mindustry = handleTest ./mindustry.nix {};
  minecraft = handleTest ./minecraft.nix {};
  minecraft-server = handleTest ./minecraft-server.nix {};

nixos/tests/mihomo.nix

0 → 100644
+44 −0
Original line number Diff line number Diff line
import ./make-test-python.nix ({ pkgs, ... }: {
  name = "mihomo";
  meta.maintainers = with pkgs.lib.maintainers; [ Guanran928 ];

  nodes.machine = {
    environment.systemPackages = [ pkgs.curl ];

    services.nginx = {
      enable = true;
      statusPage = true;
    };

    services.mihomo = {
      enable = true;
      configFile = pkgs.writeTextFile {
        name = "config.yaml";
        text = ''
          mixed-port: 7890
          external-controller: 127.0.0.1:9090
          authentication:
          - "user:supersecret"
        '';
      };
    };
  };

  testScript = ''
    # Wait until it starts
    machine.wait_for_unit("nginx.service")
    machine.wait_for_unit("mihomo.service")
    machine.wait_for_open_port(80)
    machine.wait_for_open_port(7890)
    machine.wait_for_open_port(9090)

    # Proxy
    machine.succeed("curl --fail --max-time 10 --proxy http://user:supersecret@localhost:7890 http://localhost")
    machine.succeed("curl --fail --max-time 10 --proxy socks5://user:supersecret@localhost:7890 http://localhost")
    machine.fail("curl --fail --max-time 10 --proxy http://user:supervillain@localhost:7890 http://localhost")
    machine.fail("curl --fail --max-time 10 --proxy socks5://user:supervillain@localhost:7890 http://localhost")

    # Web UI
    machine.succeed("curl --fail http://localhost:9090") == '{"hello":"clash"}'
  '';
})
+6 −0
Original line number Diff line number Diff line
{ lib
, fetchFromGitHub
, buildGoModule
, nixosTests
}:

buildGoModule rec {
@@ -31,6 +32,11 @@ buildGoModule rec {
  # network required
  doCheck = false;


  passthru.tests = {
    mihomo = nixosTests.mihomo;
  };

  meta = with lib; {
    description = "A rule-based tunnel in Go";
    homepage = "https://github.com/MetaCubeX/mihomo";