Page Menu
Home
Search
Configure Global Search
Log In
Files
F14246240
test_attract.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
4 KB
Subscribers
None
test_attract.py
View Options
import
os
import
json
import
unittest
from
pymongo
import
MongoClient
from
bson
import
ObjectId
from
datetime
import
datetime
import
base64
class
AttractTestCase
(
unittest
.
TestCase
):
def
encodeUsrPass
(
self
,
user
,
password
):
usrPass
=
"{0}:{1}"
.
format
(
user
,
password
)
b64Val
=
base64
.
b64encode
(
usrPass
)
return
b64Val
def
addUser
(
self
,
first_name
,
last_name
,
role
):
return
self
.
app
.
post
(
'/users'
,
data
=
dict
(
first_name
=
first_name
,
last_name
=
last_name
,
role
=
role
,
),
follow_redirects
=
True
)
def
addNodeType
(
self
,
name
,
schema
):
data
=
{
'name'
:
name
,
'dyn_schema'
:
schema
,
}
headers
=
{
'content-type'
:
'application/json'
,
'Authorization'
:
'Basic QU5MR05TSUVaSjoxMjM0'
}
return
self
.
app
.
post
(
'/node_types'
,
data
=
json
.
dumps
(
data
),
headers
=
headers
,
follow_redirects
=
True
)
def
addNode
(
self
,
name
,
nodeType
,
properties
):
data
=
{
'name'
:
name
,
'node_type'
:
nodeType
,
'properties'
:
properties
}
headers
=
{
'content-type'
:
'application/json'
,
'Authorization'
:
'Basic QU5MR05TSUVaSjoxMjM0'
,
}
return
self
.
app
.
post
(
'/nodes'
,
data
=
json
.
dumps
(
data
),
headers
=
headers
,
follow_redirects
=
True
)
def
login
(
self
,
username
,
password
):
headers
=
{
'content-type'
:
'application/json'
,
'Authorization'
:
'Basic {0}'
.
format
(
self
.
encodeUsrPass
(
username
,
password
))
}
data
=
{
'username'
:
username
,
}
return
self
.
app
.
post
(
'/tokens'
,
data
=
json
.
dumps
(
data
),
headers
=
headers
,
follow_redirects
=
True
)
def
logout
(
self
):
return
self
.
app
.
get
(
'/logout'
,
follow_redirects
=
True
)
# Tests
def
test_add_user
(
self
):
rv
=
self
.
addUser
(
'admin'
,
'default'
,
'author'
)
assert
201
==
rv
.
status_code
def
test_add_node_type
(
self
):
schema
=
{
'frame_start'
:
{
'type'
:
'integer'
,
}
}
rv
=
self
.
addNodeType
(
'NodeName'
,
schema
)
assert
201
==
rv
.
status_code
def
test_add_node
(
self
):
properties
=
{
'frame_start'
:
123
}
rv
=
self
.
addNode
(
'Shot01'
,
'55016a52135d32466fc800be'
,
properties
)
assert
201
==
rv
.
status_code
def
test_login
(
self
):
rv
=
self
.
login
(
'admin'
,
'secret'
)
#print (rv.data)
assert
201
==
rv
.
status_code
def
test_empty_db
(
self
):
rv
=
self
.
app
.
get
(
'/'
)
assert
401
==
rv
.
status_code
# Test Setup
def
setUp
(
self
):
# Setup DB
client
=
MongoClient
()
db
=
client
.
attract_test
for
col
in
db
.
collection_names
():
try
:
db
[
col
]
.
remove
({})
except
:
pass
test_user
=
{
"_id"
:
ObjectId
(
"550171c8135d3248e477f288"
),
"_updated"
:
datetime
.
now
(),
"firs_tname"
:
"TestFirstname"
,
"last_name"
:
"TestLastname"
,
"role"
:
"author"
,
"_created"
:
datetime
.
now
(),
"_etag"
:
"302236e27f51d2e26041ae9de49505d77332b260"
}
test_node_type
=
{
"_id"
:
ObjectId
(
"55016a52135d32466fc800be"
),
"_updated"
:
datetime
.
now
(),
"name"
:
"NodeName"
,
"dyn_schema"
:
{
"frame_start"
:
{
"type"
:
"integer"
}},
"_created"
:
datetime
.
now
(),
"_etag"
:
"0ea3c4f684a0cda85525184d5606c4f4ce6ac5f5"
}
test_token
=
{
"-id"
:
ObjectId
(
"5502f289135d3274cb658ba7"
),
"username"
:
"TestFirstname"
,
"token"
:
"ANLGNSIEZJ"
,
"_etag"
:
"1e96ed46b133b7ede5ce6ef0d6d4fc53edd9f2ba"
}
db
.
users
.
insert
(
test_user
)
db
.
node_types
.
insert
(
test_node_type
)
db
.
tokens
.
insert
(
test_token
)
# Initialize Attract
os
.
environ
[
'TEST_ATTRACT'
]
=
'1'
import
application
application
.
app
.
config
[
'TESTING'
]
=
True
self
.
app
=
application
.
app
.
test_client
()
def
tearDown
(
self
):
pass
if
__name__
==
'__main__'
:
unittest
.
main
()
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Tue, Feb 7, 8:14 AM (2 d)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
f5/5e/6cd2da92934ad4025e95a0cfa899
Attached To
rPS Pillar
Event Timeline
Log In to Comment