Skip to content

Commit

Permalink
Fix registered provider being overwrite issue
Browse files Browse the repository at this point in the history
  • Loading branch information
carmenlau committed Aug 31, 2018
2 parents aaadeba + 6a9c9fd commit f757a63
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 3 deletions.
16 changes: 16 additions & 0 deletions Dockerfile-test
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM python:3.6

RUN pip install --upgrade pip && \
pip install --upgrade setuptools

COPY requirements.txt test_requirements.txt /tmp/py-skygear/
RUN \
pip install --no-cache-dir -r /tmp/py-skygear/requirements.txt && \
pip install --no-cache-dir -r /tmp/py-skygear/test_requirements.txt

COPY . /usr/src/app
WORKDIR /usr/src/app
RUN python setup.py develop

ENV PYTHONUNBUFFERED 0
CMD ["py-skygear"]
27 changes: 27 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ else
SED := sed -i""
endif

DOCKER_COMPOSE_CMD_TEST := docker-compose \
-f docker-compose.test.yml

DOCKER_RUN_TEST := ${DOCKER_COMPOSE_CMD_TEST} run --rm test-app

.PHONY: build
build:
python setup.py bdist_wheel
Expand All @@ -18,6 +23,28 @@ build:
clean:
-rm -rf $(DIST_DIR)

.PHONY: before-docker-test
before-docker-test:
${DOCKER_COMPOSE_CMD_TEST} up -d test-db
sleep 20
${DOCKER_COMPOSE_CMD_TEST} exec test-db \
psql -c 'CREATE DATABASE skygear_test;' -U postgres
${DOCKER_COMPOSE_CMD_TEST} exec test-db \
psql -c 'CREATE EXTENSION postgis;' -U postgres -d skygear_test

.PHONY: docker-just-test
docker-just-test:
${DOCKER_RUN_TEST} pylama skygear
${DOCKER_RUN_TEST} coverage run --source skygear setup.py test
${DOCKER_RUN_TEST} coverage report -m --omit '*tests*'

.PHONY: after-docker-test
after-docker-test:
${DOCKER_COMPOSE_CMD_TEST} down -v

.PHONY: docker-test
docker-test: before-docker-test docker-just-test after-docker-test

.PHONY: docker-build
docker-build: build
cp skygear-server scripts/release/
Expand Down
23 changes: 23 additions & 0 deletions docker-compose.test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
version: '2'

services:
test-db:
image: mdillon/postgis:9.5
volumes:
- test_db_data:/var/lib/postgresql/data
ports:
- 5432:5432

test-app:
build:
context: .
dockerfile: Dockerfile-test
command: py-skygear --http
volumes:
- .:/usr/src/app
environment:
DATABASE_URL: postgres://postgres@test-db/postgres?sslmode=disable

volumes:
test_db_data:
driver: local
3 changes: 3 additions & 0 deletions skygear/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,9 @@ def register_provider(self, provider_type, provider_id, provider,
kwargs['type'] = provider_type
kwargs['id'] = provider_id

if kwargs.get('name') is None:
kwargs['name'] = provider_id

if provider_id in self.providers:
log.warning("Replacing previously registered provider '%s'.",
provider_id)
Expand Down
27 changes: 24 additions & 3 deletions skygear/tests/test_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,6 @@ def fn2():
assert param_map[0]['name'] == 'timer_name'

def test_register_provider(self):
def fn():
pass

class Provider():
pass

Expand All @@ -262,6 +259,30 @@ class Provider():
assert len(param_map) == 1
assert param_map[0]['type'] == 'example'
assert param_map[0]['id'] == 'com.example'
assert param_map[0]['name'] == 'com.example'

def test_register_multiple_providers(self):
class Provider():
pass

provider1 = Provider()
provider2 = Provider()
registry = Registry()
registry.register_provider('example', 'com.example.1', provider1)
registry.register_provider('example', 'com.example.2', provider2)

assert len(registry.providers) == 2
assert registry.providers['com.example.1'] == provider1
assert registry.providers['com.example.2'] == provider2

param_map = registry.param_map['provider']
assert len(param_map) == 2
assert param_map[0]['type'] == 'example'
assert param_map[0]['id'] == 'com.example.1'
assert param_map[0]['name'] == 'com.example.1'
assert param_map[1]['type'] == 'example'
assert param_map[1]['id'] == 'com.example.2'
assert param_map[1]['name'] == 'com.example.2'

def test_register_static_assets(self):
def fn():
Expand Down

0 comments on commit f757a63

Please sign in to comment.