mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-28 09:55:53 +00:00
93 lines
No EOL
2.9 KiB
Docker
93 lines
No EOL
2.9 KiB
Docker
# Test VibeTunnel npm package installation and functionality
|
|
ARG NODE_VERSION=22
|
|
FROM node:${NODE_VERSION}-slim
|
|
|
|
# Install dependencies for terminal functionality and building native modules
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
procps \
|
|
python3 \
|
|
build-essential \
|
|
libpam0g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Accept package version as build arg (defaults to latest)
|
|
ARG PACKAGE_VERSION=latest
|
|
|
|
# Install vibetunnel globally as root
|
|
RUN npm install -g vibetunnel@${PACKAGE_VERSION}
|
|
|
|
# Create a test user
|
|
RUN useradd -m -s /bin/bash testuser
|
|
|
|
# Switch to test user
|
|
USER testuser
|
|
WORKDIR /home/testuser
|
|
|
|
# Create a comprehensive test script
|
|
RUN echo '#!/bin/bash\n\
|
|
set -e\n\
|
|
\n\
|
|
echo "=== VibeTunnel npm Package Test ==="\n\
|
|
echo "Node version: $(node --version)"\n\
|
|
echo "npm version: $(npm --version)"\n\
|
|
echo ""\n\
|
|
\n\
|
|
echo "=== Installation Check ==="\n\
|
|
which vibetunnel && echo "✅ vibetunnel command found" || echo "❌ vibetunnel command not found"\n\
|
|
which vt && echo "✅ vt command found" || echo "❌ vt command not found"\n\
|
|
echo ""\n\
|
|
\n\
|
|
echo "=== Version Check ==="\n\
|
|
vibetunnel --version || echo "Note: Version check failed"\n\
|
|
echo ""\n\
|
|
\n\
|
|
echo "=== Native Module Check ==="\n\
|
|
echo "Checking node-pty installation..."\n\
|
|
ls -la /usr/local/lib/node_modules/vibetunnel/node-pty/build/Release/pty.node 2>/dev/null && \\\n\
|
|
echo "✅ node-pty native module found" || echo "❌ node-pty native module not found"\n\
|
|
echo ""\n\
|
|
echo "Checking authenticate-pam installation..."\n\
|
|
if [ -f /usr/local/lib/node_modules/vibetunnel/optional-modules/authenticate-pam/build/Release/authenticate_pam.node ]; then\n\
|
|
echo "✅ authenticate-pam found in optional-modules"\n\
|
|
elif [ -f /usr/local/lib/node_modules/vibetunnel/node_modules/authenticate-pam/build/Release/authenticate_pam.node ]; then\n\
|
|
echo "✅ authenticate-pam found in node_modules"\n\
|
|
else\n\
|
|
echo "⚠️ authenticate-pam not found (optional dependency)"\n\
|
|
fi\n\
|
|
echo ""\n\
|
|
\n\
|
|
echo "=== Server Start Test ==="\n\
|
|
echo "Starting VibeTunnel server on port 4021..."\n\
|
|
timeout 10 vibetunnel --port 4021 --no-auth &\n\
|
|
SERVER_PID=$!\n\
|
|
sleep 3\n\
|
|
\n\
|
|
echo "Testing if server is running..."\n\
|
|
if curl -s http://localhost:4021 > /dev/null; then\n\
|
|
echo "✅ Server is responding on port 4021"\n\
|
|
\n\
|
|
# Test API endpoint\n\
|
|
echo ""\n\
|
|
echo "=== API Test ==="\n\
|
|
STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:4021/api/status)\n\
|
|
if [ "$STATUS" = "200" ]; then\n\
|
|
echo "✅ API status endpoint returned 200"\n\
|
|
else\n\
|
|
echo "❌ API status endpoint returned $STATUS"\n\
|
|
fi\n\
|
|
else\n\
|
|
echo "❌ Server not responding"\n\
|
|
fi\n\
|
|
\n\
|
|
echo ""\n\
|
|
echo "Stopping server..."\n\
|
|
kill $SERVER_PID 2>/dev/null || true\n\
|
|
wait $SERVER_PID 2>/dev/null || true\n\
|
|
\n\
|
|
echo ""\n\
|
|
echo "=== Test Summary ==="\n\
|
|
echo "All tests completed. Check results above for any failures."\n\
|
|
' > test.sh && chmod +x test.sh
|
|
|
|
CMD ["./test.sh"] |