Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
preetwinder
jio
Commits
c9fc030f
Commit
c9fc030f
authored
Sep 03, 2018
by
Romain Courteaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[erp5storage] add access token support
parent
c865b62d
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
741 additions
and
47 deletions
+741
-47
src/jio.storage/erp5storage.js
src/jio.storage/erp5storage.js
+38
-30
test/jio.storage/erp5storage.tests.js
test/jio.storage/erp5storage.tests.js
+703
-17
No files found.
src/jio.storage/erp5storage.js
View file @
c9fc030f
...
...
@@ -31,15 +31,32 @@
SimpleQuery
,
ComplexQuery
)
{
"
use strict
"
;
function
ajax
(
storage
,
options
)
{
if
(
options
===
undefined
)
{
options
=
{};
}
if
(
options
.
xhrFields
===
undefined
)
{
options
.
xhrFields
=
{};
}
if
(
storage
.
_access_token
!==
undefined
)
{
if
(
options
.
headers
===
undefined
)
{
options
.
headers
=
{};
}
options
.
headers
[
'
X-ACCESS-TOKEN
'
]
=
storage
.
_access_token
;
options
.
xhrFields
.
withCredentials
=
false
;
}
else
{
options
.
xhrFields
.
withCredentials
=
true
;
}
return
jIO
.
util
.
ajax
(
options
);
}
function
getSiteDocument
(
storage
)
{
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
(
{
return
ajax
(
storage
,
{
"
type
"
:
"
GET
"
,
"
url
"
:
storage
.
_url
,
"
xhrFields
"
:
{
withCredentials
:
true
}
"
url
"
:
storage
.
_url
});
})
.
push
(
function
(
event
)
{
...
...
@@ -56,16 +73,13 @@
// XXX need to get modified metadata
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
jIO
.
util
.
ajax
(
{
return
ajax
(
storage
,
{
"
type
"
:
"
GET
"
,
"
url
"
:
UriTemplate
.
parse
(
site_hal
.
_links
.
traverse
.
href
)
.
expand
({
relative_url
:
id
,
view
:
options
.
_view
}),
"
xhrFields
"
:
{
withCredentials
:
true
}
})
});
})
.
push
(
undefined
,
function
(
error
)
{
...
...
@@ -160,6 +174,9 @@
}
this
.
_url
=
spec
.
url
;
this
.
_default_view_reference
=
spec
.
default_view_reference
;
if
(
spec
.
hasOwnProperty
(
'
access_token
'
))
{
this
.
_access_token
=
spec
.
access_token
;
}
}
function
convertJSONToGet
(
json
)
{
...
...
@@ -192,13 +209,10 @@
var
form_data
=
new
FormData
();
form_data
.
append
(
"
portal_type
"
,
data
.
portal_type
);
form_data
.
append
(
"
parent_relative_url
"
,
data
.
parent_relative_url
);
return
jIO
.
util
.
ajax
(
{
return
ajax
(
context
,
{
type
:
"
POST
"
,
url
:
site_hal
.
_actions
.
add
.
href
,
data
:
form_data
,
xhrFields
:
{
withCredentials
:
true
}
data
:
form_data
});
})
.
push
(
function
(
evt
)
{
...
...
@@ -273,6 +287,7 @@
};
ERP5Storage
.
prototype
.
getAttachment
=
function
(
id
,
action
,
options
)
{
var
storage
=
this
;
if
(
options
===
undefined
)
{
options
=
{};
}
...
...
@@ -317,10 +332,7 @@
request_options
=
{
"
type
"
:
"
GET
"
,
"
dataType
"
:
"
blob
"
,
"
url
"
:
action
,
"
xhrFields
"
:
{
withCredentials
:
true
}
"
url
"
:
action
};
if
(
options
.
start
!==
undefined
||
options
.
end
!==
undefined
)
{
start
=
options
.
start
||
0
;
...
...
@@ -342,7 +354,7 @@
}
request_options
.
headers
=
{
Range
:
range
};
}
return
jIO
.
util
.
ajax
(
request_options
);
return
ajax
(
storage
,
request_options
);
})
.
push
(
function
(
evt
)
{
if
(
evt
.
target
.
response
===
undefined
)
{
...
...
@@ -359,6 +371,7 @@
};
ERP5Storage
.
prototype
.
putAttachment
=
function
(
id
,
name
,
blob
)
{
var
storage
=
this
;
// Assert we use a callable on a document from the ERP5 site
if
(
name
.
indexOf
(
this
.
_url
)
!==
0
)
{
throw
new
jIO
.
util
.
jIOError
(
"
Can not store outside ERP5:
"
+
...
...
@@ -394,14 +407,11 @@
}
}
}
return
jIO
.
util
.
ajax
(
{
return
ajax
(
storage
,
{
"
type
"
:
"
POST
"
,
"
url
"
:
name
,
"
data
"
:
data
,
"
dataType
"
:
"
blob
"
,
"
xhrFields
"
:
{
withCredentials
:
true
}
"
dataType
"
:
"
blob
"
});
});
};
...
...
@@ -460,6 +470,7 @@
}
ERP5Storage
.
prototype
.
buildQuery
=
function
(
options
)
{
var
storage
=
this
;
// if (typeof options.query !== "string") {
// options.query = (options.query ?
// jIO.Query.objectToSearchText(options.query) :
...
...
@@ -552,7 +563,7 @@
selection_domain
=
JSON
.
stringify
(
selection_domain
);
}
return
jIO
.
util
.
ajax
(
{
return
ajax
(
storage
,
{
"
type
"
:
"
GET
"
,
"
url
"
:
UriTemplate
.
parse
(
site_hal
.
_links
.
raw_search
.
href
)
.
expand
({
...
...
@@ -563,10 +574,7 @@
sort_on
:
sort_list
,
local_roles
:
local_roles
,
selection_domain
:
selection_domain
}),
"
xhrFields
"
:
{
withCredentials
:
true
}
})
});
})
.
push
(
function
(
response
)
{
...
...
test/jio.storage/erp5storage.tests.js
View file @
c9fc030f
...
...
@@ -67,6 +67,21 @@
equal
(
jio
.
__type
,
"
erp5
"
);
deepEqual
(
jio
.
__storage
.
_url
,
domain
);
deepEqual
(
jio
.
__storage
.
_default_view_reference
,
"
bar_view
"
);
equal
(
jio
.
__storage
.
_access_token
,
undefined
);
});
test
(
"
Storage store access_token
"
,
function
()
{
var
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
default_view_reference
:
"
bar_view
"
,
access_token
:
'
foo
'
});
equal
(
jio
.
__type
,
"
erp5
"
);
deepEqual
(
jio
.
__storage
.
_url
,
domain
);
deepEqual
(
jio
.
__storage
.
_default_view_reference
,
"
bar_view
"
);
equal
(
jio
.
__storage
.
_access_token
,
'
foo
'
);
});
/////////////////////////////////////////////////////////////////
...
...
@@ -120,6 +135,75 @@
});
});
test
(
"
get ERP5 document with access token
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
encodeURIComponent
(
id
)
+
"
&view=bar_view
"
,
document_hateoas
=
JSON
.
stringify
({
// Kept property
"
title
"
:
"
foo
"
,
// Remove all _ properties
"
_bar
"
:
"
john doo
"
,
"
_links
"
:
{
type
:
{
name
:
"
Person
"
}
},
"
_embedded
"
:
{
"
_view
"
:
{
form_id
:
{
key
:
"
form_id
"
,
"
default
"
:
"
Base_view
"
}
}
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
traverse_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
document_hateoas
]);
stop
();
expect
(
12
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
default_view_reference
:
"
bar_view
"
,
access_token
:
'
footoken
'
});
this
.
jio
.
get
(
id
)
.
then
(
function
(
result
)
{
deepEqual
(
result
,
{
portal_type
:
"
Person
"
},
"
Check document
"
);
equal
(
server
.
requests
.
length
,
2
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
get ERP5 document with empty form
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
...
...
@@ -153,7 +237,7 @@
},
document_hateoas
]);
stop
();
expect
(
1
0
);
expect
(
1
2
);
this
.
jio
.
get
(
id
)
.
then
(
function
(
result
)
{
...
...
@@ -165,10 +249,12 @@
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
...
...
@@ -335,6 +421,66 @@
});
});
test
(
"
allAttachments ERP5 document with access token
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
encodeURIComponent
(
id
),
document_hateoas
=
JSON
.
stringify
({
// Kept property
"
title
"
:
"
foo
"
,
// Remove all _ properties
"
_bar
"
:
"
john doo
"
,
"
_links
"
:
{
type
:
{
name
:
"
Person
"
}
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
traverse_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
document_hateoas
]);
stop
();
expect
(
12
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
access_token
:
'
footoken
'
});
this
.
jio
.
allAttachments
(
id
)
.
then
(
function
(
result
)
{
deepEqual
(
result
,
{
links
:
{}
},
"
Check document
"
);
equal
(
server
.
requests
.
length
,
2
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
allAttachments ERP5 document
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
...
...
@@ -360,7 +506,7 @@
},
document_hateoas
]);
stop
();
expect
(
1
0
);
expect
(
1
2
);
this
.
jio
.
allAttachments
(
id
)
.
then
(
function
(
result
)
{
...
...
@@ -372,10 +518,12 @@
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
...
...
@@ -489,6 +637,65 @@
});
});
test
(
"
putAttachment submit ERP5 form with access token
"
,
function
()
{
var
submit_url
=
domain
+
"
/Form_view/Base_edit
"
,
id
=
"
fake
"
,
form_json
=
{
"
my_title
"
:
"
fooé
"
,
"
your_reference
"
:
"
barè
"
// XXX Check FileUpload
},
context
=
this
,
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
POST
"
,
submit_url
,
[
204
,
{
"
Content-Type
"
:
"
text/xml
"
},
""
]);
stop
();
expect
(
13
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
access_token
:
'
footoken
'
});
this
.
jio
.
putAttachment
(
id
,
submit_url
,
new
Blob
([
JSON
.
stringify
(
form_json
)])
)
.
then
(
function
()
{
equal
(
server
.
requests
.
length
,
1
);
equal
(
server
.
requests
[
0
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
0
].
url
,
submit_url
);
equal
(
server
.
requests
[
0
].
status
,
204
);
equal
(
server
.
requests
[
0
].
responseType
,
"
blob
"
);
ok
(
server
.
requests
[
0
].
requestBody
instanceof
FormData
);
ok
(
context
.
spy
.
calledTwice
,
"
FormData.append count
"
+
context
.
spy
.
callCount
);
equal
(
context
.
spy
.
firstCall
.
args
[
0
],
"
my_title
"
,
"
First append call
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
1
],
"
fooé
"
,
"
First append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
0
],
"
your_reference
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
1
],
"
barè
"
,
"
Second append call
"
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
,
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
putAttachment submit ERP5 form
"
,
function
()
{
var
submit_url
=
domain
+
"
/Form_view/Base_edit
"
,
id
=
"
fake
"
,
...
...
@@ -505,7 +712,7 @@
},
""
]);
stop
();
expect
(
1
2
);
expect
(
1
3
);
this
.
jio
.
putAttachment
(
id
,
...
...
@@ -529,6 +736,8 @@
equal
(
context
.
spy
.
secondCall
.
args
[
1
],
"
barè
"
,
"
Second append call
"
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
...
...
@@ -712,6 +921,72 @@
});
});
test
(
"
getAttachment: view uses default form with access token
"
,
function
()
{
var
id
=
"
person_module/1
"
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
encodeURIComponent
(
id
)
+
"
&view=foo_view
"
,
document_hateoas
=
JSON
.
stringify
({
"
title
"
:
"
foo
"
,
"
_bar
"
:
"
john doo
"
,
"
_embedded
"
:
"
youhou
"
,
"
_links
"
:
{
type
:
{
name
:
"
Person
"
}
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
traverse_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
document_hateoas
]);
stop
();
expect
(
14
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
default_view_reference
:
"
foo_view
"
,
access_token
:
'
footoken
'
});
this
.
jio
.
getAttachment
(
id
,
"
view
"
)
.
then
(
function
(
result
)
{
equal
(
server
.
requests
.
length
,
2
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
ok
(
result
instanceof
Blob
,
"
Data is Blob
"
);
deepEqual
(
result
.
type
,
"
application/hal+json
"
,
"
Check mimetype
"
);
return
jIO
.
util
.
readBlobAsText
(
result
);
})
.
then
(
function
(
result
)
{
var
expected
=
JSON
.
parse
(
document_hateoas
);
deepEqual
(
JSON
.
parse
(
result
.
target
.
result
),
expected
,
"
Attachment correctly fetched
"
);
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
getAttachment: view uses default form
"
,
function
()
{
var
id
=
"
person_module/1
"
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
...
...
@@ -736,7 +1011,7 @@
},
document_hateoas
]);
stop
();
expect
(
1
2
);
expect
(
1
4
);
this
.
jio
.
getAttachment
(
id
,
"
view
"
)
.
then
(
function
(
result
)
{
...
...
@@ -745,10 +1020,12 @@
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{});
ok
(
result
instanceof
Blob
,
"
Data is Blob
"
);
deepEqual
(
result
.
type
,
"
application/hal+json
"
,
"
Check mimetype
"
);
...
...
@@ -1035,7 +1312,8 @@
}
});
test
(
"
get all documents
"
,
function
()
{
test
(
"
get all documents with access token
"
,
function
()
{
var
search_url
=
domain
+
"
?mode=search&select_list=title
"
+
"
&select_list=reference
"
,
search_hateoas
=
JSON
.
stringify
({
...
...
@@ -1072,7 +1350,13 @@
},
search_hateoas
]);
stop
();
expect
(
10
);
expect
(
12
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
access_token
:
'
footoken
'
});
this
.
jio
.
allDocs
()
.
then
(
function
(
result
)
{
...
...
@@ -1097,11 +1381,15 @@
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
search_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
equal
(
server
.
requests
[
1
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
...
...
@@ -1111,13 +1399,91 @@
});
});
test
(
"
filter documents
"
,
function
()
{
var
search_url
=
domain
+
"
?mode=search&query=title%3A%20%22two%22&
"
+
"
select_list=destination&select_list=source&limit=5&
"
+
"
sort_on=%5B%22title%22%2C%22descending%22%5D&
"
+
"
sort_on=%5B%22id%22%2C%22descending%22%5D
"
,
search_hateoas
=
JSON
.
stringify
({
test
(
"
get all documents
"
,
function
()
{
var
search_url
=
domain
+
"
?mode=search&select_list=title
"
+
"
&select_list=reference
"
,
search_hateoas
=
JSON
.
stringify
({
"
_embedded
"
:
{
"
contents
"
:
[
{
"
_links
"
:
{
"
self
"
:
{
"
href
"
:
"
urn:jio:get:person_module/2
"
}
},
"
reference
"
:
"
foo2
"
,
"
title
"
:
"
bar2
"
},
{
"
_links
"
:
{
"
self
"
:
{
"
href
"
:
"
urn:jio:get:organisation_module/3
"
}
},
"
title
"
:
"
bar3
"
}
]
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
search_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
search_hateoas
]);
stop
();
expect
(
12
);
this
.
jio
.
allDocs
()
.
then
(
function
(
result
)
{
deepEqual
(
result
,
{
data
:
{
rows
:
[{
id
:
"
person_module/2
"
,
value
:
{
reference
:
"
foo2
"
,
title
:
"
bar2
"
}
},
{
id
:
"
organisation_module/3
"
,
value
:
{
title
:
"
bar3
"
}
}],
total_rows
:
2
}
},
"
Check document
"
);
equal
(
server
.
requests
.
length
,
2
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
search_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{});
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
filter documents
"
,
function
()
{
var
search_url
=
domain
+
"
?mode=search&query=title%3A%20%22two%22&
"
+
"
select_list=destination&select_list=source&limit=5&
"
+
"
sort_on=%5B%22title%22%2C%22descending%22%5D&
"
+
"
sort_on=%5B%22id%22%2C%22descending%22%5D
"
,
search_hateoas
=
JSON
.
stringify
({
"
_embedded
"
:
{
"
contents
"
:
[
{
...
...
@@ -1723,6 +2089,145 @@
});
});
test
(
"
put ERP5 document with access token
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
context
=
this
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
encodeURIComponent
(
id
)
+
"
&view=bar_view
"
,
put_url
=
domain
+
"
azertytrea?f=g
"
,
document_hateoas
=
JSON
.
stringify
({
// Kept property
"
title
"
:
"
foo
"
,
// Remove all _ properties
"
_bar
"
:
"
john doo
"
,
"
_links
"
:
{
type
:
{
name
:
"
Person
"
}
},
"
_embedded
"
:
{
"
_view
"
:
{
form_id
:
{
key
:
"
form_id
"
,
"
default
"
:
"
Base_view
"
},
my_title
:
{
key
:
"
field_my_title
"
,
"
default
"
:
"
foo
"
,
editable
:
true
,
type
:
"
StringField
"
},
my_id
:
{
key
:
"
field_my_id
"
,
"
default
"
:
""
,
editable
:
true
,
type
:
"
StringField
"
},
my_title_non_editable
:
{
key
:
"
field_my_title_non_editable
"
,
"
default
"
:
"
foo
"
,
editable
:
false
,
type
:
"
StringField
"
},
my_start_date
:
{
key
:
"
field_my_start_date
"
,
"
default
"
:
"
foo
"
,
editable
:
true
,
type
:
"
DateTimeField
"
},
your_reference
:
{
key
:
"
field_your_reference
"
,
"
default
"
:
"
bar
"
,
editable
:
true
,
type
:
"
StringField
"
},
your_reference_non_editable
:
{
key
:
"
field_your_reference_non_editable
"
,
"
default
"
:
"
bar
"
,
editable
:
false
,
type
:
"
StringField
"
},
sort_index
:
{
key
:
"
field_sort_index
"
,
"
default
"
:
"
foobar
"
,
editable
:
true
,
type
:
"
StringField
"
},
"
_actions
"
:
{
put
:
{
href
:
put_url
}
}
}
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
traverse_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
document_hateoas
]);
this
.
server
.
respondWith
(
"
POST
"
,
put_url
,
[
204
,
{
"
Content-Type
"
:
"
text/html
"
},
""
]);
stop
();
expect
(
26
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
default_view_reference
:
"
bar_view
"
,
access_token
:
'
footoken
'
});
this
.
jio
.
put
(
id
,
{
title
:
"
barè
"
,
id
:
"
foo
"
,
reference
:
"
bar2
"
})
.
then
(
function
(
result
)
{
equal
(
result
,
id
);
equal
(
server
.
requests
.
length
,
3
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
2
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
2
].
url
,
put_url
);
ok
(
server
.
requests
[
2
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
2
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
2
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
,
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
equal
(
context
.
spy
.
callCount
,
4
,
"
FormData.append count
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
0
],
"
form_id
"
,
"
First append call
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
1
],
"
Base_view
"
,
"
First append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
0
],
"
field_my_title
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
1
],
"
barè
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
thirdCall
.
args
[
0
],
"
field_my_id
"
,
"
Third append call
"
);
equal
(
context
.
spy
.
thirdCall
.
args
[
1
],
"
foo
"
,
"
Third append call
"
);
equal
(
context
.
spy
.
getCall
(
3
).
args
[
0
],
"
field_your_reference
"
,
"
Fourth append call
"
);
equal
(
context
.
spy
.
getCall
(
3
).
args
[
1
],
"
bar2
"
,
"
Fourth append call
"
);
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
put ERP5 document
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
context
=
this
,
...
...
@@ -1808,7 +2313,7 @@
},
""
]);
stop
();
expect
(
2
3
);
expect
(
2
6
);
this
.
jio
.
put
(
id
,
{
title
:
"
barè
"
,
id
:
"
foo
"
,
reference
:
"
bar2
"
})
.
then
(
function
(
result
)
{
...
...
@@ -1818,14 +2323,18 @@
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{});
equal
(
server
.
requests
[
1
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
1
].
url
,
traverse_url
);
equal
(
server
.
requests
[
1
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{});
equal
(
server
.
requests
[
2
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
2
].
url
,
put_url
);
ok
(
server
.
requests
[
2
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
2
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
2
].
requestHeaders
,
{
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
equal
(
context
.
spy
.
callCount
,
4
,
"
FormData.append count
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
0
],
"
form_id
"
,
"
First append call
"
);
...
...
@@ -2042,6 +2551,176 @@
}
});
test
(
"
post ERP5 document with access token
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
context
=
this
,
traverse_url
=
domain
+
"
?mode=traverse&relative_url=
"
+
encodeURIComponent
(
id
)
+
"
&view=bar_view
"
,
put_url
=
domain
+
"
azertytrea?f=g
"
,
document_hateoas
=
JSON
.
stringify
({
// Kept property
"
title
"
:
"
foo
"
,
// Remove all _ properties
"
_bar
"
:
"
john doo
"
,
"
_links
"
:
{
type
:
{
name
:
"
Person
"
}
},
"
_embedded
"
:
{
"
_view
"
:
{
form_id
:
{
key
:
"
form_id
"
,
"
default
"
:
"
Base_view
"
},
my_title
:
{
key
:
"
field_my_title
"
,
"
default
"
:
"
foo
"
,
editable
:
true
,
type
:
"
StringField
"
},
my_id
:
{
key
:
"
field_my_id
"
,
"
default
"
:
""
,
editable
:
true
,
type
:
"
StringField
"
},
my_title_non_editable
:
{
key
:
"
field_my_title_non_editable
"
,
"
default
"
:
"
foo
"
,
editable
:
false
,
type
:
"
StringField
"
},
my_start_date
:
{
key
:
"
field_my_start_date
"
,
"
default
"
:
"
foo
"
,
editable
:
true
,
type
:
"
DateTimeField
"
},
your_reference
:
{
key
:
"
field_your_reference
"
,
"
default
"
:
"
bar
"
,
editable
:
true
,
type
:
"
StringField
"
},
sort_index
:
{
key
:
"
field_sort_index
"
,
"
default
"
:
"
foobar
"
,
editable
:
true
,
type
:
"
StringField
"
},
"
_actions
"
:
{
put
:
{
href
:
put_url
}
}
}
}
}),
server
=
this
.
server
;
this
.
server
.
respondWith
(
"
GET
"
,
domain
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
root_hateoas
]);
this
.
server
.
respondWith
(
"
GET
"
,
traverse_url
,
[
200
,
{
"
Content-Type
"
:
"
application/hal+json
"
},
document_hateoas
]);
this
.
server
.
respondWith
(
"
POST
"
,
put_url
,
[
204
,
{
"
Content-Type
"
:
"
text/html
"
},
""
]);
this
.
server
.
respondWith
(
"
POST
"
,
add_url
,
[
201
,
{
"
Content-Type
"
:
"
text/html
"
,
"
X-Location
"
:
"
urn:jio:get:
"
+
id
},
""
]);
stop
();
expect
(
40
);
this
.
jio
=
jIO
.
createJIO
({
type
:
"
erp5
"
,
url
:
domain
,
default_view_reference
:
"
bar_view
"
,
access_token
:
'
footoken
'
});
this
.
jio
.
post
({
title
:
"
barè
"
,
id
:
"
foo
"
,
portal_type
:
"
Foo
"
,
parent_relative_url
:
"
foo_module
"
,
reference
:
"
bar2
"
})
.
then
(
function
(
result
)
{
equal
(
result
,
id
);
equal
(
server
.
requests
.
length
,
5
);
equal
(
server
.
requests
[
0
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
1
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
1
].
url
,
add_url
);
ok
(
server
.
requests
[
1
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
1
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
,
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
equal
(
server
.
requests
[
2
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
2
].
url
,
domain
);
equal
(
server
.
requests
[
2
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
2
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
2
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
3
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
3
].
url
,
traverse_url
);
equal
(
server
.
requests
[
3
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
3
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
3
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
});
equal
(
server
.
requests
[
4
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
4
].
url
,
put_url
);
ok
(
server
.
requests
[
4
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
4
].
withCredentials
,
false
);
deepEqual
(
server
.
requests
[
4
].
requestHeaders
,
{
'
X-ACCESS-TOKEN
'
:
'
footoken
'
,
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
equal
(
context
.
spy
.
callCount
,
6
,
"
FormData.append count
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
0
],
"
portal_type
"
,
"
First append call
"
);
equal
(
context
.
spy
.
firstCall
.
args
[
1
],
"
Foo
"
,
"
First append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
0
],
"
parent_relative_url
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
secondCall
.
args
[
1
],
"
foo_module
"
,
"
Second append call
"
);
equal
(
context
.
spy
.
thirdCall
.
args
[
0
],
"
form_id
"
,
"
Third append call
"
);
equal
(
context
.
spy
.
thirdCall
.
args
[
1
],
"
Base_view
"
,
"
Third append call
"
);
equal
(
context
.
spy
.
getCall
(
3
).
args
[
0
],
"
field_my_title
"
,
"
Fourthappend call
"
);
equal
(
context
.
spy
.
getCall
(
3
).
args
[
1
],
"
barè
"
,
"
Fourth append call
"
);
equal
(
context
.
spy
.
getCall
(
4
).
args
[
0
],
"
field_my_id
"
,
"
Fifth append call
"
);
equal
(
context
.
spy
.
getCall
(
4
).
args
[
1
],
"
foo
"
,
"
Fifth append call
"
);
equal
(
context
.
spy
.
getCall
(
5
).
args
[
0
],
"
field_your_reference
"
,
"
Sixth append call
"
);
equal
(
context
.
spy
.
getCall
(
5
).
args
[
1
],
"
bar2
"
,
"
Sixth append call
"
);
})
.
fail
(
function
(
error
)
{
ok
(
false
,
error
);
})
.
always
(
function
()
{
start
();
});
});
test
(
"
post ERP5 document
"
,
function
()
{
var
id
=
"
person_module/20150119_azerty
"
,
context
=
this
,
...
...
@@ -2125,7 +2804,7 @@
},
""
]);
stop
();
expect
(
35
);
expect
(
40
);
this
.
jio
.
post
({
title
:
"
barè
"
,
...
...
@@ -2142,26 +2821,33 @@
equal
(
server
.
requests
[
0
].
url
,
domain
);
equal
(
server
.
requests
[
0
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
0
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
0
].
requestHeaders
,
{});
equal
(
server
.
requests
[
1
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
1
].
url
,
add_url
);
ok
(
server
.
requests
[
1
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
1
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
1
].
requestHeaders
,
{
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
equal
(
server
.
requests
[
2
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
2
].
url
,
domain
);
equal
(
server
.
requests
[
2
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
2
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
2
].
requestHeaders
,
{});
equal
(
server
.
requests
[
3
].
method
,
"
GET
"
);
equal
(
server
.
requests
[
3
].
url
,
traverse_url
);
equal
(
server
.
requests
[
3
].
requestBody
,
undefined
);
equal
(
server
.
requests
[
3
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
3
].
requestHeaders
,
{});
equal
(
server
.
requests
[
4
].
method
,
"
POST
"
);
equal
(
server
.
requests
[
4
].
url
,
put_url
);
ok
(
server
.
requests
[
4
].
requestBody
instanceof
FormData
);
equal
(
server
.
requests
[
4
].
withCredentials
,
true
);
deepEqual
(
server
.
requests
[
4
].
requestHeaders
,
{
'
Content-Type
'
:
'
text/plain;charset=utf-8
'
});
equal
(
context
.
spy
.
callCount
,
6
,
"
FormData.append count
"
);
...
...
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