Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
docker-py
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
docker-py
Commits
e8a86e40
Kaydet (Commit)
e8a86e40
authored
Şub 10, 2017
tarafından
Joffrey F
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Add tests for secret API implementation
Signed-off-by:
Joffrey F
<
joffrey@docker.com
>
üst
d1038c42
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
154 additions
and
4 deletions
+154
-4
secret.py
docker/api/secret.py
+4
-0
api_secret_test.py
tests/integration/api_secret_test.py
+69
-0
api_service_test.py
tests/integration/api_service_test.py
+70
-0
base.py
tests/integration/base.py
+7
-0
api_container_test.py
tests/unit/api_container_test.py
+3
-3
api_image_test.py
tests/unit/api_image_test.py
+1
-1
No files found.
docker/api/secret.py
Dosyayı görüntüle @
e8a86e40
import
base64
import
base64
import
six
from
..
import
utils
from
..
import
utils
...
@@ -20,6 +22,8 @@ class SecretApiMixin(object):
...
@@ -20,6 +22,8 @@ class SecretApiMixin(object):
data
=
data
.
encode
(
'utf-8'
)
data
=
data
.
encode
(
'utf-8'
)
data
=
base64
.
b64encode
(
data
)
data
=
base64
.
b64encode
(
data
)
if
six
.
PY3
:
data
=
data
.
decode
(
'ascii'
)
body
=
{
body
=
{
'Data'
:
data
,
'Data'
:
data
,
'Name'
:
name
,
'Name'
:
name
,
...
...
tests/integration/api_secret_test.py
0 → 100644
Dosyayı görüntüle @
e8a86e40
# -*- coding: utf-8 -*-
import
docker
import
pytest
from
..helpers
import
force_leave_swarm
,
requires_api_version
from
.base
import
BaseAPIIntegrationTest
@requires_api_version
(
'1.25'
)
class
SecretAPITest
(
BaseAPIIntegrationTest
):
def
setUp
(
self
):
super
(
SecretAPITest
,
self
)
.
setUp
()
self
.
init_swarm
()
def
tearDown
(
self
):
super
(
SecretAPITest
,
self
)
.
tearDown
()
force_leave_swarm
(
self
.
client
)
def
test_create_secret
(
self
):
secret_id
=
self
.
client
.
create_secret
(
'favorite_character'
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
assert
'ID'
in
secret_id
data
=
self
.
client
.
inspect_secret
(
secret_id
)
assert
data
[
'Spec'
][
'Name'
]
==
'favorite_character'
def
test_create_secret_unicode_data
(
self
):
secret_id
=
self
.
client
.
create_secret
(
'favorite_character'
,
u'いざよいさくや'
)
self
.
tmp_secrets
.
append
(
secret_id
)
assert
'ID'
in
secret_id
data
=
self
.
client
.
inspect_secret
(
secret_id
)
assert
data
[
'Spec'
][
'Name'
]
==
'favorite_character'
def
test_inspect_secret
(
self
):
secret_name
=
'favorite_character'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
data
=
self
.
client
.
inspect_secret
(
secret_id
)
assert
data
[
'Spec'
][
'Name'
]
==
secret_name
assert
'ID'
in
data
assert
'Version'
in
data
def
test_remove_secret
(
self
):
secret_name
=
'favorite_character'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
assert
self
.
client
.
remove_secret
(
secret_id
)
with
pytest
.
raises
(
docker
.
errors
.
NotFound
):
self
.
client
.
inspect_secret
(
secret_id
)
def
test_list_secrets
(
self
):
secret_name
=
'favorite_character'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
'sakuya izayoi'
)
self
.
tmp_secrets
.
append
(
secret_id
)
data
=
self
.
client
.
secrets
(
filters
=
{
'names'
:
[
'favorite_character'
]})
assert
len
(
data
)
==
1
assert
data
[
0
][
'ID'
]
==
secret_id
[
'ID'
]
tests/integration/api_service_test.py
Dosyayı görüntüle @
e8a86e40
# -*- coding: utf-8 -*-
import
random
import
random
import
time
import
docker
import
docker
...
@@ -24,6 +27,21 @@ class ServiceTest(BaseAPIIntegrationTest):
...
@@ -24,6 +27,21 @@ class ServiceTest(BaseAPIIntegrationTest):
def
get_service_name
(
self
):
def
get_service_name
(
self
):
return
'dockerpytest_{0:x}'
.
format
(
random
.
getrandbits
(
64
))
return
'dockerpytest_{0:x}'
.
format
(
random
.
getrandbits
(
64
))
def
get_service_container
(
self
,
service_name
,
attempts
=
20
,
interval
=
0.5
):
# There is some delay between the service's creation and the creation
# of the service's containers. This method deals with the uncertainty
# when trying to retrieve the container associated with a service.
while
True
:
containers
=
self
.
client
.
containers
(
filters
=
{
'name'
:
[
service_name
]},
quiet
=
True
)
if
len
(
containers
)
>
0
:
return
containers
[
0
]
attempts
-=
1
if
attempts
<=
0
:
return
None
time
.
sleep
(
interval
)
def
create_simple_service
(
self
,
name
=
None
):
def
create_simple_service
(
self
,
name
=
None
):
if
name
:
if
name
:
name
=
'dockerpytest_{0}'
.
format
(
name
)
name
=
'dockerpytest_{0}'
.
format
(
name
)
...
@@ -317,3 +335,55 @@ class ServiceTest(BaseAPIIntegrationTest):
...
@@ -317,3 +335,55 @@ class ServiceTest(BaseAPIIntegrationTest):
new_index
=
svc_info
[
'Version'
][
'Index'
]
new_index
=
svc_info
[
'Version'
][
'Index'
]
assert
new_index
>
version_index
assert
new_index
>
version_index
assert
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ForceUpdate'
]
==
10
assert
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ForceUpdate'
]
==
10
@requires_api_version
(
'1.25'
)
def
test_create_service_with_secret
(
self
):
secret_name
=
'favorite_touhou'
secret_data
=
b
'phantasmagoria of flower view'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
secret_data
)
self
.
tmp_secrets
.
append
(
secret_id
)
secret_ref
=
docker
.
types
.
SecretReference
(
secret_id
,
secret_name
)
container_spec
=
docker
.
types
.
ContainerSpec
(
'busybox'
,
[
'top'
],
secrets
=
[
secret_ref
]
)
task_tmpl
=
docker
.
types
.
TaskTemplate
(
container_spec
)
name
=
self
.
get_service_name
()
svc_id
=
self
.
client
.
create_service
(
task_tmpl
,
name
=
name
)
svc_info
=
self
.
client
.
inspect_service
(
svc_id
)
assert
'Secrets'
in
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
]
secrets
=
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
][
'Secrets'
]
assert
secrets
[
0
]
==
secret_ref
container
=
self
.
get_service_container
(
name
)
assert
container
is
not
None
exec_id
=
self
.
client
.
exec_create
(
container
,
'cat /run/secrets/{0}'
.
format
(
secret_name
)
)
assert
self
.
client
.
exec_start
(
exec_id
)
==
secret_data
@requires_api_version
(
'1.25'
)
def
test_create_service_with_unicode_secret
(
self
):
secret_name
=
'favorite_touhou'
secret_data
=
u'東方花映塚'
secret_id
=
self
.
client
.
create_secret
(
secret_name
,
secret_data
)
self
.
tmp_secrets
.
append
(
secret_id
)
secret_ref
=
docker
.
types
.
SecretReference
(
secret_id
,
secret_name
)
container_spec
=
docker
.
types
.
ContainerSpec
(
'busybox'
,
[
'top'
],
secrets
=
[
secret_ref
]
)
task_tmpl
=
docker
.
types
.
TaskTemplate
(
container_spec
)
name
=
self
.
get_service_name
()
svc_id
=
self
.
client
.
create_service
(
task_tmpl
,
name
=
name
)
svc_info
=
self
.
client
.
inspect_service
(
svc_id
)
assert
'Secrets'
in
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
]
secrets
=
svc_info
[
'Spec'
][
'TaskTemplate'
][
'ContainerSpec'
][
'Secrets'
]
assert
secrets
[
0
]
==
secret_ref
container
=
self
.
get_service_container
(
name
)
assert
container
is
not
None
exec_id
=
self
.
client
.
exec_create
(
container
,
'cat /run/secrets/{0}'
.
format
(
secret_name
)
)
container_secret
=
self
.
client
.
exec_start
(
exec_id
)
container_secret
=
container_secret
.
decode
(
'utf-8'
)
assert
container_secret
==
secret_data
tests/integration/base.py
Dosyayı görüntüle @
e8a86e40
...
@@ -28,6 +28,7 @@ class BaseIntegrationTest(unittest.TestCase):
...
@@ -28,6 +28,7 @@ class BaseIntegrationTest(unittest.TestCase):
self
.
tmp_volumes
=
[]
self
.
tmp_volumes
=
[]
self
.
tmp_networks
=
[]
self
.
tmp_networks
=
[]
self
.
tmp_plugins
=
[]
self
.
tmp_plugins
=
[]
self
.
tmp_secrets
=
[]
def
tearDown
(
self
):
def
tearDown
(
self
):
client
=
docker
.
from_env
(
version
=
TEST_API_VERSION
)
client
=
docker
.
from_env
(
version
=
TEST_API_VERSION
)
...
@@ -52,6 +53,12 @@ class BaseIntegrationTest(unittest.TestCase):
...
@@ -52,6 +53,12 @@ class BaseIntegrationTest(unittest.TestCase):
except
docker
.
errors
.
APIError
:
except
docker
.
errors
.
APIError
:
pass
pass
for
secret
in
self
.
tmp_secrets
:
try
:
client
.
api
.
remove_secret
(
secret
)
except
docker
.
errors
.
APIError
:
pass
for
folder
in
self
.
tmp_folders
:
for
folder
in
self
.
tmp_folders
:
shutil
.
rmtree
(
folder
)
shutil
.
rmtree
(
folder
)
...
...
tests/unit/api_container_test.py
Dosyayı görüntüle @
e8a86e40
...
@@ -45,7 +45,7 @@ class StartContainerTest(BaseAPIClientTest):
...
@@ -45,7 +45,7 @@ class StartContainerTest(BaseAPIClientTest):
self
.
assertEqual
(
self
.
assertEqual
(
str
(
excinfo
.
value
),
str
(
excinfo
.
value
),
'
image or container param is undefin
ed'
,
'
Resource ID was not provid
ed'
,
)
)
with
pytest
.
raises
(
ValueError
)
as
excinfo
:
with
pytest
.
raises
(
ValueError
)
as
excinfo
:
...
@@ -53,7 +53,7 @@ class StartContainerTest(BaseAPIClientTest):
...
@@ -53,7 +53,7 @@ class StartContainerTest(BaseAPIClientTest):
self
.
assertEqual
(
self
.
assertEqual
(
str
(
excinfo
.
value
),
str
(
excinfo
.
value
),
'
image or container param is undefin
ed'
,
'
Resource ID was not provid
ed'
,
)
)
def
test_start_container_regression_573
(
self
):
def
test_start_container_regression_573
(
self
):
...
@@ -1559,7 +1559,7 @@ class ContainerTest(BaseAPIClientTest):
...
@@ -1559,7 +1559,7 @@ class ContainerTest(BaseAPIClientTest):
self
.
client
.
inspect_container
(
arg
)
self
.
client
.
inspect_container
(
arg
)
self
.
assertEqual
(
self
.
assertEqual
(
excinfo
.
value
.
args
[
0
],
'
image or container param is undefin
ed'
excinfo
.
value
.
args
[
0
],
'
Resource ID was not provid
ed'
)
)
def
test_container_stats
(
self
):
def
test_container_stats
(
self
):
...
...
tests/unit/api_image_test.py
Dosyayı görüntüle @
e8a86e40
...
@@ -204,7 +204,7 @@ class ImageTest(BaseAPIClientTest):
...
@@ -204,7 +204,7 @@ class ImageTest(BaseAPIClientTest):
self
.
client
.
inspect_image
(
arg
)
self
.
client
.
inspect_image
(
arg
)
self
.
assertEqual
(
self
.
assertEqual
(
excinfo
.
value
.
args
[
0
],
'
image or container param is undefin
ed'
excinfo
.
value
.
args
[
0
],
'
Resource ID was not provid
ed'
)
)
def
test_insert_image
(
self
):
def
test_insert_image
(
self
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment