Projet

Général

Profil

0001-cmis-add-a-test-that-mock-http-requests-39597.patch

Nicolas Roche, 10 février 2020 12:29

Télécharger (24,1 ko)

Voir les différences:

Subject: [PATCH] cmis: add a test that mock http requests (#39597)

 tests/data/cmis/cmis1.out.xml | 178 ++++++++++++++++++++++++++++++++++
 tests/data/cmis/cmis2.out.xml |  60 ++++++++++++
 tests/data/cmis/cmis3.in.xml  |  18 ++++
 tests/data/cmis/cmis3.out.xml |  91 +++++++++++++++++
 tests/test_cmis.py            |  48 +++++++++
 5 files changed, 395 insertions(+)
 create mode 100644 tests/data/cmis/cmis1.out.xml
 create mode 100644 tests/data/cmis/cmis2.out.xml
 create mode 100644 tests/data/cmis/cmis3.in.xml
 create mode 100644 tests/data/cmis/cmis3.out.xml
tests/data/cmis/cmis1.out.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<app:service xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" xmlns:app="http://www.w3.org/2007/app">
3
  <app:workspace>
4
    <atom:title>test</atom:title>
5
    <app:collection href="http://example.com/cmisatom/test/children?id=%40root%40">
6
      <cmisra:collectionType>root</cmisra:collectionType>
7
      <atom:title type="text">Root Collection</atom:title>
8
      <app:accept>application/atom+xml;type=entry</app:accept>
9
      <app:accept>application/cmisatom+xml</app:accept>
10
    </app:collection>
11
    <app:collection href="http://example.com/cmisatom/test/types">
12
      <cmisra:collectionType>types</cmisra:collectionType>
13
      <atom:title type="text">Types Collection</atom:title>
14
      <app:accept/>
15
    </app:collection>
16
    <app:collection href="http://example.com/cmisatom/test/checkedout">
17
      <cmisra:collectionType>checkedout</cmisra:collectionType>
18
      <atom:title type="text">Checked Out Collection</atom:title>
19
      <app:accept>application/cmisatom+xml</app:accept>
20
    </app:collection>
21
    <app:collection href="http://example.com/cmisatom/test/update">
22
      <cmisra:collectionType>update</cmisra:collectionType>
23
      <atom:title type="text">Bulk Update Collection</atom:title>
24
      <app:accept>application/cmisatom+xml</app:accept>
25
    </app:collection>
26
    <cmisra:repositoryInfo>
27
      <cmis:repositoryId>test</cmis:repositoryId>
28
      <cmis:repositoryName>test</cmis:repositoryName>
29
      <cmis:repositoryDescription>test</cmis:repositoryDescription>
30
      <cmis:vendorName>OpenCMIS</cmis:vendorName>
31
      <cmis:productName>OpenCMIS FileShare</cmis:productName>
32
      <cmis:productVersion>1.1.0</cmis:productVersion>
33
      <cmis:rootFolderId>@root@</cmis:rootFolderId>
34
      <cmis:capabilities>
35
        <cmis:capabilityACL>discover</cmis:capabilityACL>
36
        <cmis:capabilityAllVersionsSearchable>false</cmis:capabilityAllVersionsSearchable>
37
        <cmis:capabilityChanges>none</cmis:capabilityChanges>
38
        <cmis:capabilityContentStreamUpdatability>anytime</cmis:capabilityContentStreamUpdatability>
39
        <cmis:capabilityGetDescendants>true</cmis:capabilityGetDescendants>
40
        <cmis:capabilityGetFolderTree>true</cmis:capabilityGetFolderTree>
41
        <cmis:capabilityOrderBy>common</cmis:capabilityOrderBy>
42
        <cmis:capabilityMultifiling>false</cmis:capabilityMultifiling>
43
        <cmis:capabilityPWCSearchable>false</cmis:capabilityPWCSearchable>
44
        <cmis:capabilityPWCUpdatable>false</cmis:capabilityPWCUpdatable>
45
        <cmis:capabilityQuery>none</cmis:capabilityQuery>
46
        <cmis:capabilityRenditions>none</cmis:capabilityRenditions>
47
        <cmis:capabilityUnfiling>false</cmis:capabilityUnfiling>
48
        <cmis:capabilityVersionSpecificFiling>false</cmis:capabilityVersionSpecificFiling>
49
        <cmis:capabilityJoin>none</cmis:capabilityJoin>
50
        <cmis:capabilityCreatablePropertyTypes/>
51
        <cmis:capabilityNewTypeSettableAttributes>
52
          <cmis:id>false</cmis:id>
53
          <cmis:localName>false</cmis:localName>
54
          <cmis:localNamespace>false</cmis:localNamespace>
55
          <cmis:displayName>false</cmis:displayName>
56
          <cmis:queryName>false</cmis:queryName>
57
          <cmis:description>false</cmis:description>
58
          <cmis:creatable>false</cmis:creatable>
59
          <cmis:fileable>false</cmis:fileable>
60
          <cmis:queryable>false</cmis:queryable>
61
          <cmis:fulltextIndexed>false</cmis:fulltextIndexed>
62
          <cmis:includedInSupertypeQuery>false</cmis:includedInSupertypeQuery>
63
          <cmis:controllablePolicy>false</cmis:controllablePolicy>
64
          <cmis:controllableACL>false</cmis:controllableACL>
65
        </cmis:capabilityNewTypeSettableAttributes>
66
      </cmis:capabilities>
67
      <cmis:aclCapability>
68
        <cmis:supportedPermissions>basic</cmis:supportedPermissions>
69
        <cmis:propagation>objectonly</cmis:propagation>
70
        <cmis:permissions>
71
          <cmis:permission>cmis:read</cmis:permission>
72
          <cmis:description>Read</cmis:description>
73
        </cmis:permissions>
74
        <cmis:permissions>
75
          <cmis:permission>cmis:write</cmis:permission>
76
          <cmis:description>Write</cmis:description>
77
        </cmis:permissions>
78
        <cmis:permissions>
79
          <cmis:permission>cmis:all</cmis:permission>
80
          <cmis:description>All</cmis:description>
81
        </cmis:permissions>
82
        <cmis:mapping>
83
          <cmis:key>canCreateDocument.Folder</cmis:key>
84
          <cmis:permission>cmis:read</cmis:permission>
85
        </cmis:mapping>
86
        <cmis:mapping>
87
          <cmis:key>canCreateFolder.Folder</cmis:key>
88
          <cmis:permission>cmis:read</cmis:permission>
89
        </cmis:mapping>
90
        <cmis:mapping>
91
          <cmis:key>canDeleteContent.Document</cmis:key>
92
          <cmis:permission>cmis:write</cmis:permission>
93
        </cmis:mapping>
94
        <cmis:mapping>
95
          <cmis:key>canDelete.Object</cmis:key>
96
          <cmis:permission>cmis:all</cmis:permission>
97
        </cmis:mapping>
98
        <cmis:mapping>
99
          <cmis:key>canDeleteTree.Folder</cmis:key>
100
          <cmis:permission>cmis:all</cmis:permission>
101
        </cmis:mapping>
102
        <cmis:mapping>
103
          <cmis:key>canGetACL.Object</cmis:key>
104
          <cmis:permission>cmis:read</cmis:permission>
105
        </cmis:mapping>
106
        <cmis:mapping>
107
          <cmis:key>canGetAllVersions.VersionSeries</cmis:key>
108
          <cmis:permission>cmis:read</cmis:permission>
109
        </cmis:mapping>
110
        <cmis:mapping>
111
          <cmis:key>canGetChildren.Folder</cmis:key>
112
          <cmis:permission>cmis:read</cmis:permission>
113
        </cmis:mapping>
114
        <cmis:mapping>
115
          <cmis:key>canGetDescendents.Folder</cmis:key>
116
          <cmis:permission>cmis:read</cmis:permission>
117
        </cmis:mapping>
118
        <cmis:mapping>
119
          <cmis:key>canGetFolderParent.Object</cmis:key>
120
          <cmis:permission>cmis:read</cmis:permission>
121
        </cmis:mapping>
122
        <cmis:mapping>
123
          <cmis:key>canGetParents.Folder</cmis:key>
124
          <cmis:permission>cmis:read</cmis:permission>
125
        </cmis:mapping>
126
        <cmis:mapping>
127
          <cmis:key>canGetProperties.Object</cmis:key>
128
          <cmis:permission>cmis:read</cmis:permission>
129
        </cmis:mapping>
130
        <cmis:mapping>
131
          <cmis:key>canMove.Object</cmis:key>
132
          <cmis:permission>cmis:write</cmis:permission>
133
        </cmis:mapping>
134
        <cmis:mapping>
135
          <cmis:key>canMove.Source</cmis:key>
136
          <cmis:permission>cmis:read</cmis:permission>
137
        </cmis:mapping>
138
        <cmis:mapping>
139
          <cmis:key>canMove.Target</cmis:key>
140
          <cmis:permission>cmis:write</cmis:permission>
141
        </cmis:mapping>
142
        <cmis:mapping>
143
          <cmis:key>canSetContent.Document</cmis:key>
144
          <cmis:permission>cmis:write</cmis:permission>
145
        </cmis:mapping>
146
        <cmis:mapping>
147
          <cmis:key>canUpdateProperties.Object</cmis:key>
148
          <cmis:permission>cmis:write</cmis:permission>
149
        </cmis:mapping>
150
        <cmis:mapping>
151
          <cmis:key>canViewContent.Object</cmis:key>
152
          <cmis:permission>cmis:read</cmis:permission>
153
        </cmis:mapping>
154
      </cmis:aclCapability>
155
      <cmis:cmisVersionSupported>1.1</cmis:cmisVersionSupported>
156
      <cmis:thinClientURI/>
157
      <cmis:changesIncomplete>true</cmis:changesIncomplete>
158
    </cmisra:repositoryInfo>
159
    <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/typedescendants" href="http://example.com/cmisatom/test/typedesc" type="application/atom+xml;type=feed"/>
160
    <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://example.com/cmisatom/test/foldertree?id=%40root%40" type="application/cmistree+xml"/>
161
    <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/rootdescendants" href="http://example.com/cmisatom/test/descendants?id=%40root%40" type="application/cmistree+xml" cmisra:id="@root@"/>
162
    <cmisra:uritemplate>
163
      <cmisra:template>http://example.com/cmisatom/test/id?id={id}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;renditionFilter={renditionFilter}</cmisra:template>
164
      <cmisra:type>objectbyid</cmisra:type>
165
      <cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
166
    </cmisra:uritemplate>
167
    <cmisra:uritemplate>
168
      <cmisra:template>http://example.com/cmisatom/test/path?path={path}&amp;filter={filter}&amp;includeAllowableActions={includeAllowableActions}&amp;includeACL={includeACL}&amp;includePolicyIds={includePolicyIds}&amp;includeRelationships={includeRelationships}&amp;renditionFilter={renditionFilter}</cmisra:template>
169
      <cmisra:type>objectbypath</cmisra:type>
170
      <cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
171
    </cmisra:uritemplate>
172
    <cmisra:uritemplate>
173
      <cmisra:template>http://example.com/cmisatom/test/type?id={id}</cmisra:template>
174
      <cmisra:type>typebyid</cmisra:type>
175
      <cmisra:mediatype>application/atom+xml;type=entry</cmisra:mediatype>
176
    </cmisra:uritemplate>
177
  </app:workspace>
178
</app:service>
tests/data/cmis/cmis2.out.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" xmlns:app="http://www.w3.org/2007/app">
3
  <atom:author>
4
    <atom:name>cmisuser</atom:name>
5
  </atom:author>
6
  <atom:id>http://chemistry.apache.org/TDNSbGMzUXRaVzg9</atom:id>
7
  <atom:published>2020-02-05T17:11:28Z</atom:published>
8
  <atom:title>test-eo</atom:title>
9
  <app:edited>2020-02-08T18:55:44Z</app:edited>
10
  <atom:updated>2020-02-08T18:55:44Z</atom:updated>
11
  <cmisra:object>
12
    <cmis:properties>
13
      <cmis:propertyId propertyDefinitionId="cmis:objectId">
14
        <cmis:value>L3Rlc3QtZW8=</cmis:value>
15
      </cmis:propertyId>
16
      <cmis:propertyDateTime propertyDefinitionId="cmis:lastModificationDate">
17
        <cmis:value>2020-02-08T18:55:44Z</cmis:value>
18
      </cmis:propertyDateTime>
19
      <cmis:propertyString propertyDefinitionId="cmis:changeToken"/>
20
      <cmis:propertyString propertyDefinitionId="cmis:description"/>
21
      <cmis:propertyId propertyDefinitionId="cmis:secondaryObjectTypeIds"/>
22
      <cmis:propertyId propertyDefinitionId="cmis:baseTypeId">
23
        <cmis:value>cmis:folder</cmis:value>
24
      </cmis:propertyId>
25
      <cmis:propertyString propertyDefinitionId="cmis:path">
26
        <cmis:value>/test-eo</cmis:value>
27
      </cmis:propertyString>
28
      <cmis:propertyId propertyDefinitionId="cmis:parentId">
29
        <cmis:value>@root@</cmis:value>
30
      </cmis:propertyId>
31
      <cmis:propertyId propertyDefinitionId="cmis:allowedChildObjectTypeIds"/>
32
      <cmis:propertyString propertyDefinitionId="cmis:name">
33
        <cmis:value>test-eo</cmis:value>
34
      </cmis:propertyString>
35
      <cmis:propertyId propertyDefinitionId="cmis:objectTypeId">
36
        <cmis:value>cmis:folder</cmis:value>
37
      </cmis:propertyId>
38
      <cmis:propertyString propertyDefinitionId="cmis:createdBy">
39
        <cmis:value>cmisuser</cmis:value>
40
      </cmis:propertyString>
41
      <cmis:propertyString propertyDefinitionId="cmis:lastModifiedBy">
42
        <cmis:value>cmisuser</cmis:value>
43
      </cmis:propertyString>
44
      <cmis:propertyDateTime propertyDefinitionId="cmis:creationDate">
45
        <cmis:value>2020-02-05T17:11:28Z</cmis:value>
46
      </cmis:propertyDateTime>
47
    </cmis:properties>
48
  </cmisra:object>
49
  <atom:link rel="service" href="http://example.com/cmisatom/test?repositoryId=test" type="application/atomsvc+xml"/>
50
  <atom:link rel="self" href="http://example.com/cmisatom/test/entry?id=L3Rlc3QtZW8%3D" type="application/atom+xml;type=entry" cmisra:id="L3Rlc3QtZW8="/>
51
  <atom:link rel="enclosure" href="http://example.com/cmisatom/test/entry?id=L3Rlc3QtZW8%3D" type="application/atom+xml;type=entry"/>
52
  <atom:link rel="edit" href="http://example.com/cmisatom/test/entry?id=L3Rlc3QtZW8%3D" type="application/atom+xml;type=entry"/>
53
  <atom:link rel="describedby" href="http://example.com/cmisatom/test/type?id=cmis%3Afolder" type="application/atom+xml;type=entry"/>
54
  <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://example.com/cmisatom/test/allowableactions?id=L3Rlc3QtZW8%3D" type="application/cmisallowableactions+xml"/>
55
  <atom:link rel="up" href="http://example.com/cmisatom/test/parent?id=L3Rlc3QtZW8%3D" type="application/atom+xml;type=entry"/>
56
  <atom:link rel="down" href="http://example.com/cmisatom/test/children?id=L3Rlc3QtZW8%3D" type="application/atom+xml;type=feed"/>
57
  <atom:link rel="down" href="http://example.com/cmisatom/test/descendants?id=L3Rlc3QtZW8%3D" type="application/cmistree+xml"/>
58
  <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/foldertree" href="http://example.com/cmisatom/test/foldertree?id=L3Rlc3QtZW8%3D" type="application/atom+xml;type=feed"/>
59
  <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://example.com/cmisatom/test/acl?id=L3Rlc3QtZW8%3D" type="application/cmisacl+xml"/>
60
</atom:entry>
tests/data/cmis/cmis3.in.xml
1
<?xml version="1.0" encoding="utf-8"?>
2
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/">
3
  <cmisra:content>
4
    <cmisra:mediatype>application/binary</cmisra:mediatype>
5
    <cmisra:base64>c2FsdXQK</cmisra:base64>
6
  </cmisra:content>
7
  <cmisra:object xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/">
8
    <cmis:properties>
9
      <cmis:propertyString propertyDefinitionId="cmis:name">
10
        <cmis:value>test2</cmis:value>
11
      </cmis:propertyString>
12
      <cmis:propertyId propertyDefinitionId="cmis:objectTypeId">
13
        <cmis:value>cmis:document</cmis:value>
14
      </cmis:propertyId>
15
    </cmis:properties>
16
  </cmisra:object>
17
  <title>test2</title>
18
</entry>
tests/data/cmis/cmis3.out.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/" xmlns:app="http://www.w3.org/2007/app">
3
  <atom:author>
4
    <atom:name>cmisuser</atom:name>
5
  </atom:author>
6
  <atom:id>http://chemistry.apache.org/TDNSbGMzUXRaVzh2ZEdWemREST0=</atom:id>
7
  <atom:published>2020-02-08T19:17:10Z</atom:published>
8
  <atom:title>test2</atom:title>
9
  <app:edited>2020-02-08T19:17:10Z</app:edited>
10
  <atom:updated>2020-02-08T19:17:10Z</atom:updated>
11
  <atom:content src="http://example.com/cmisatom/test/content/test2?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/octet-stream"/>
12
  <cmisra:object>
13
    <cmis:properties>
14
      <cmis:propertyId propertyDefinitionId="cmis:objectId">
15
        <cmis:value>L3Rlc3QtZW8vdGVzdDI=</cmis:value>
16
      </cmis:propertyId>
17
      <cmis:propertyDateTime propertyDefinitionId="cmis:lastModificationDate">
18
        <cmis:value>2020-02-08T19:17:10Z</cmis:value>
19
      </cmis:propertyDateTime>
20
      <cmis:propertyString propertyDefinitionId="cmis:changeToken"/>
21
      <cmis:propertyString propertyDefinitionId="cmis:description"/>
22
      <cmis:propertyId propertyDefinitionId="cmis:secondaryObjectTypeIds"/>
23
      <cmis:propertyId propertyDefinitionId="cmis:baseTypeId">
24
        <cmis:value>cmis:document</cmis:value>
25
      </cmis:propertyId>
26
      <cmis:propertyBoolean propertyDefinitionId="cmis:isImmutable">
27
        <cmis:value>false</cmis:value>
28
      </cmis:propertyBoolean>
29
      <cmis:propertyBoolean propertyDefinitionId="cmis:isLatestVersion">
30
        <cmis:value>true</cmis:value>
31
      </cmis:propertyBoolean>
32
      <cmis:propertyBoolean propertyDefinitionId="cmis:isMajorVersion">
33
        <cmis:value>true</cmis:value>
34
      </cmis:propertyBoolean>
35
      <cmis:propertyBoolean propertyDefinitionId="cmis:isLatestMajorVersion">
36
        <cmis:value>true</cmis:value>
37
      </cmis:propertyBoolean>
38
      <cmis:propertyString propertyDefinitionId="cmis:versionLabel">
39
        <cmis:value>test2</cmis:value>
40
      </cmis:propertyString>
41
      <cmis:propertyId propertyDefinitionId="cmis:versionSeriesId">
42
        <cmis:value>L3Rlc3QtZW8vdGVzdDI=</cmis:value>
43
      </cmis:propertyId>
44
      <cmis:propertyBoolean propertyDefinitionId="cmis:isVersionSeriesCheckedOut">
45
        <cmis:value>false</cmis:value>
46
      </cmis:propertyBoolean>
47
      <cmis:propertyString propertyDefinitionId="cmis:versionSeriesCheckedOutBy"/>
48
      <cmis:propertyString propertyDefinitionId="cmis:versionSeriesCheckedOutId"/>
49
      <cmis:propertyString propertyDefinitionId="cmis:checkinComment">
50
        <cmis:value/>
51
      </cmis:propertyString>
52
      <cmis:propertyBoolean propertyDefinitionId="cmis:isPrivateWorkingCopy">
53
        <cmis:value>false</cmis:value>
54
      </cmis:propertyBoolean>
55
      <cmis:propertyInteger propertyDefinitionId="cmis:contentStreamLength">
56
        <cmis:value>6</cmis:value>
57
      </cmis:propertyInteger>
58
      <cmis:propertyString propertyDefinitionId="cmis:contentStreamMimeType">
59
        <cmis:value>application/octet-stream</cmis:value>
60
      </cmis:propertyString>
61
      <cmis:propertyString propertyDefinitionId="cmis:contentStreamFileName">
62
        <cmis:value>test2</cmis:value>
63
      </cmis:propertyString>
64
      <cmis:propertyId propertyDefinitionId="cmis:contentStreamId"/>
65
      <cmis:propertyString propertyDefinitionId="cmis:name">
66
        <cmis:value>test2</cmis:value>
67
      </cmis:propertyString>
68
      <cmis:propertyId propertyDefinitionId="cmis:objectTypeId">
69
        <cmis:value>cmis:document</cmis:value>
70
      </cmis:propertyId>
71
      <cmis:propertyString propertyDefinitionId="cmis:createdBy">
72
        <cmis:value>cmisuser</cmis:value>
73
      </cmis:propertyString>
74
      <cmis:propertyString propertyDefinitionId="cmis:lastModifiedBy">
75
        <cmis:value>cmisuser</cmis:value>
76
      </cmis:propertyString>
77
      <cmis:propertyDateTime propertyDefinitionId="cmis:creationDate">
78
        <cmis:value>2020-02-08T19:17:10Z</cmis:value>
79
      </cmis:propertyDateTime>
80
    </cmis:properties>
81
  </cmisra:object>
82
  <atom:link rel="service" href="http://example.com/cmisatom/test?repositoryId=test" type="application/atomsvc+xml"/>
83
  <atom:link rel="self" href="http://example.com/cmisatom/test/entry?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/atom+xml;type=entry" cmisra:id="L3Rlc3QtZW8vdGVzdDI="/>
84
  <atom:link rel="enclosure" href="http://example.com/cmisatom/test/entry?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/atom+xml;type=entry"/>
85
  <atom:link rel="edit" href="http://example.com/cmisatom/test/entry?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/atom+xml;type=entry"/>
86
  <atom:link rel="describedby" href="http://example.com/cmisatom/test/type?id=cmis%3Adocument" type="application/atom+xml;type=entry"/>
87
  <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/allowableactions" href="http://example.com/cmisatom/test/allowableactions?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/cmisallowableactions+xml"/>
88
  <atom:link rel="up" href="http://example.com/cmisatom/test/parents?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/atom+xml;type=feed"/>
89
  <atom:link rel="edit-media" href="http://example.com/cmisatom/test/content?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/octet-stream"/>
90
  <atom:link rel="http://docs.oasis-open.org/ns/cmis/link/200908/acl" href="http://example.com/cmisatom/test/acl?id=L3Rlc3QtZW8vdGVzdDI%3D" type="application/cmisacl+xml"/>
91
</atom:entry>
tests/test_cmis.py
1 1
import base64
2 2
import httplib2
3
from lxml import etree
4
import mock
5
import os
3 6
import re
7
import sys
4 8

  
5 9
from cmislib import CmisClient
6 10
from cmislib.exceptions import CmisException
......
8 12
from cmislib.exceptions import PermissionDeniedException
9 13
from cmislib.exceptions import UpdateConflictException
10 14
from django.contrib.contenttypes.models import ContentType
15
from django.core.urlresolvers import reverse
11 16
from django.utils.encoding import force_bytes, force_text
12 17
from django.utils.six.moves.urllib import error as urllib2
13 18
from mock import call, Mock
......
351 356
    RE_FILE_NAME = re.compile(FILE_NAME_PATTERN)
352 357
    assert RE_FILE_NAME.match('toto.tata')
353 358
    assert RE_FILE_NAME.match('TOTO.TATA')
359

  
360

  
361
@mock.patch('httplib2.Http.request')
362
def test_raw_uploadfile(mocked_request, app, setup):
363
    """ Simulate the bellow bash query :
364
    $ http https://passerelle.dev.publik.love/cmis/ged/uploadfile \
365
           file:='{"filename": "test2", "content": "c2FsdXQK"}' path=/test-eo
366
    """
367
    file_name = "test2"
368
    file_content = 'salut\n'
369
    path = "/test-eo"
370
    url = reverse('generic-endpoint', kwargs={'connector': 'cmis',
371
                  'endpoint': 'uploadfile', 'slug': setup.slug})
372

  
373
    def cmis_mocked_request(uri, method="GET", body=None, **kwargs):
374
        """simulate the 3 (ordered) HTTP queries involved"""
375
        response = {'status': '200'}
376
        if method == 'GET' and uri == 'http://example.com/cmisatom':
377
            content = open('%s/tests/data/cmis/cmis1.out.xml' % os.getcwd(), 'rb').read()
378
        elif method == 'GET' and uri == 'http://example.com/cmisatom/test/path?path=/test-eo&filter=&includeAllowableActions=false&includeACL=false&includePolicyIds=false&includeRelationships=&renditionFilter=':
379
            content = open('%s/tests/data/cmis/cmis2.out.xml' % os.getcwd(), 'rb').read()
380
        elif method == 'POST' and uri == 'http://example.com/cmisatom/test/children?id=L3Rlc3QtZW8%3D':
381
            if sys.version_info >= (3, 7):
382
                expected_input = open('%s/tests/data/cmis/cmis3.in.xml' % os.getcwd(), 'rb').read()
383
                input1 = etree.tostring(etree.fromstring(expected_input), pretty_print=True)
384
                input2 = etree.tostring(etree.fromstring(body), pretty_print=True)
385
                assert input1 == input2
386
            content = open('%s/tests/data/cmis/cmis3.out.xml' % os.getcwd(), 'rb').read()
387
        else:
388
            raise Exception('my fault error, url is not yet mocked: %s' % uri)
389
        return (response, content)
390

  
391
    mocked_request.side_effect = cmis_mocked_request
392
    params = {
393
        "path": path,
394
        "file": {"filename": file_name,
395
                 "content": b64encode(file_content),
396
                 "content_type": "image/jpeg"}}
397
    response = app.post_json(url, params=params)
398
    json_result = response.json
399
    assert json_result['err'] == 0
400
    assert json_result['data']['properties']['cmis:objectTypeId'] == "cmis:document"
401
    assert json_result['data']['properties']['cmis:name'] == file_name
354
-