File size: 2,166 Bytes
287a0bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env bash

set -e

export CHROMA_PORT=8000

function cleanup {
  docker compose -f docker-compose.test.yml down --rmi local --volumes
  rm server.htpasswd .chroma_env
}

function setup_auth {
  local auth_type="$1"
  case "$auth_type" in
    basic)
      docker run --rm --entrypoint htpasswd httpd:2 -Bbn admin admin > server.htpasswd
      cat <<EOF > .chroma_env
CHROMA_SERVER_AUTH_CREDENTIALS_FILE="/chroma/server.htpasswd"
CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER="chromadb.auth.providers.HtpasswdFileServerAuthCredentialsProvider"
CHROMA_SERVER_AUTH_PROVIDER="chromadb.auth.basic.BasicAuthServerProvider"
EOF
      ;;
    token)
      cat <<EOF > .chroma_env
CHROMA_SERVER_AUTH_CREDENTIALS="test-token"
CHROMA_SERVER_AUTH_TOKEN_TRANSPORT_HEADER="AUTHORIZATION"
CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER="chromadb.auth.token.TokenConfigServerAuthCredentialsProvider"
CHROMA_SERVER_AUTH_PROVIDER="chromadb.auth.token.TokenAuthServerProvider"
EOF
      ;;
    xtoken)
          cat <<EOF > .chroma_env
CHROMA_SERVER_AUTH_CREDENTIALS="test-token"
CHROMA_SERVER_AUTH_TOKEN_TRANSPORT_HEADER="X_CHROMA_TOKEN"
CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER="chromadb.auth.token.TokenConfigServerAuthCredentialsProvider"
CHROMA_SERVER_AUTH_PROVIDER="chromadb.auth.token.TokenAuthServerProvider"
EOF
    ;;
    *)
      echo "Unknown auth type: $auth_type"
      exit 1
      ;;
  esac
}

trap cleanup EXIT

docker compose -f docker-compose.test.yml up --build -d

export CHROMA_INTEGRATION_TEST_ONLY=1
export CHROMA_API_IMPL=chromadb.api.fastapi.FastAPI
export CHROMA_SERVER_HOST=localhost
export CHROMA_SERVER_HTTP_PORT=8000
export CHROMA_SERVER_NOFILE=65535

echo testing: python -m pytest "$@"
python -m pytest "$@"

cd clients/js

# moved off of yarn to npm to fix issues with jackspeak/cliui/string-width versions #1314
npm install
npm run test:run

docker compose down
cd ../..
for auth_type in basic token xtoken; do
  echo "Testing $auth_type auth"
  setup_auth "$auth_type"
  cd clients/js
  docker compose --env-file ../../.chroma_env -f ../../docker-compose.test-auth.yml up --build -d
  yarn test:run-auth-"$auth_type"
  cd ../..
  docker compose down
done