Skip to content

Commit

Permalink
Merge pull request #133 from saidone75/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
saidone75 authored Mar 30, 2024
2 parents 2ac2fae + b51297e commit dc8e1f5
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 51 deletions.
17 changes: 16 additions & 1 deletion src/cral/alfresco/core/shared_links.clj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
[cral.utils.utils :as utils])
(:import (clojure.lang PersistentHashMap)
(cral.alfresco.model.auth Ticket)
(cral.alfresco.model.core CreateSharedLinkBody CreateSharedLinkQueryParams)))
(cral.alfresco.model.core CreateSharedLinkBody CreateSharedLinkQueryParams ListSharedLinksQueryParams)))

(defn create-shared-link
"Create a shared link to the file **node-id** in the request body. Also, an optional expiry date could be set,
Expand All @@ -23,4 +23,19 @@
{:body (json/write-str (utils/camel-case-stringify-keys body))
:query-params query-params
:content-type :json}
opts)))

(defn list-shared-links
"Get a list of links that the current user has read permission on source node.
The list is ordered in descending modified order.
**Note:** The list of links is eventually consistent so newly created shared links may not appear immediately.
More info [here](https://api-explorer.alfresco.com/api-explorer/?urls.primaryName=Core%20API#/shared-links/listSharedLinks)."
([^Ticket ticket]
(list-shared-links ticket nil))
([^Ticket ticket ^ListSharedLinksQueryParams query-params & [^PersistentHashMap opts]]
(utils/call-rest
client/get
(format "%s/shared-links" (config/get-url 'core))
ticket
{:query-params query-params}
opts)))
4 changes: 2 additions & 2 deletions src/cral/alfresco/core/sites.clj
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
(defn create-site
"Creates a default site with the given details. Unless explicitly specified, the site id will be generated from the site title.
The site id must be unique and only contain alphanumeric and/or dash characters.
Note: the id of a site cannot be updated once the site has been created.
**Note:** the id of a site cannot be updated once the site has been created.
More info [here](https://api-explorer.alfresco.com/api-explorer/?urls.primaryName=Core%20API#/sites/createSite)."
([^Ticket ticket ^CreateSiteBody body]
(create-site ticket body nil))
Expand Down Expand Up @@ -81,7 +81,7 @@

(defn update-site
"Update the details for the given site **site-id**. Site Manager or otherwise a (site) admin can update title, description or visibility.
Note: the id of a site cannot be updated once the site has been created.
**Note:** the id of a site cannot be updated once the site has been created.
More info [here](https://api-explorer.alfresco.com/api-explorer/?urls.primaryName=Core%20API#/sites/updateSite)."
([^Ticket ticket ^String site-id ^UpdateSiteBody body]
(update-site ticket site-id body nil))
Expand Down
9 changes: 7 additions & 2 deletions src/cral/alfresco/model/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,6 @@
^String assoc-type])

;; people

(defrecord CreatePersonQueryParams
[^PersistentVector fields])

Expand Down Expand Up @@ -316,6 +315,13 @@
[^PersistentVector include
^PersistentVector fields])

(defrecord ListSharedLinksQueryParams
[^Integer skip-count
^Integer max-items
^String where
^PersistentVector include
^PersistentVector fields])

;; sites
(defrecord ListSiteMembershipRequestsQueryParams
[^Integer skip-count
Expand Down Expand Up @@ -357,7 +363,6 @@
^String visibility])

;; tags

(defrecord ListNodeTagsQueryParams
[^Integer skip-count
^Integer max-items
Expand Down
16 changes: 8 additions & 8 deletions test/cral/auth_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
(defonce password "admin")

(deftest create-ticket
(let [ticket-response (auth/create-ticket user password)]
(is (= 201 (:status ticket-response)))
(is (= "admin" (get-in ticket-response [:body :entry :user-id])))
(is (not (nil? (get-in ticket-response [:body :entry :id]))))))
(let [response (auth/create-ticket user password)]
(is (= 201 (:status response)))
(is (= "admin" (get-in response [:body :entry :user-id])))
(is (not (nil? (get-in response [:body :entry :id]))))))

(deftest validate-ticket
(let [ticket-response (auth/create-ticket user password)]
(is (= 200 (:status (auth/validate-ticket (get-in ticket-response [:body :entry])))))))
(let [response (auth/create-ticket user password)]
(is (= 200 (:status (auth/validate-ticket (get-in response [:body :entry])))))))

(deftest delete-ticket
(let [ticket-response (auth/create-ticket user password)]
(is (= 204 (:status (auth/delete-ticket (get-in ticket-response [:body :entry])))))))
(let [response (auth/create-ticket user password)]
(is (= 204 (:status (auth/delete-ticket (get-in response [:body :entry])))))))
2 changes: 1 addition & 1 deletion test/cral/favorites_test.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns cral.favorites_test
(ns cral.favorites-test
(:require [clojure.test :refer :all]
[cral.alfresco.auth :as auth]
[cral.alfresco.core.favorites :as favorites]
Expand Down
69 changes: 33 additions & 36 deletions test/cral/nodes_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@
;; update node with the new name
(nodes/update-node ticket node-id (model/map->UpdateNodeBody {:name new-name}))
;; check if name has been updated
(is (= new-name (get-in (nodes/get-node ticket node-id) [:body :entry :name])))
(is (= (get-in (nodes/get-node ticket node-id) [:body :entry :name]) new-name))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket node-id))))))
(is (= (:status (nodes/delete-node ticket node-id)) 204))))

(deftest list-node-children
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
company-home-id (get-in (nodes/get-node ticket "-root-") [:body :entry :id])
list-node-children-response (nodes/list-node-children ticket company-home-id)]
(is (= 200 (:status list-node-children-response)))
(is (= (:status list-node-children-response) 200))
(is (not (nil? (some #(= "Data Dictionary" (:name %)) (map :entry (get-in list-node-children-response [:body :list :entries]))))))
(is (not (nil? (some #(= "Sites" (:name %)) (map :entry (get-in list-node-children-response [:body :list :entries]))))))))

Expand All @@ -52,9 +52,9 @@
;; create a node
create-node-body (model/map->CreateNodeBody {:name (.toString (UUID/randomUUID)) :node-type "cm:content"})
create-node-response (nodes/create-node ticket parent-id create-node-body)]
(is (= 201 (:status create-node-response)))
(is (= (:status create-node-response) 201))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket (get-in create-node-response [:body :entry :id])))))))
(is (= (:status (nodes/delete-node ticket (get-in create-node-response [:body :entry :id]))) 204))))

(deftest copy-node
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
Expand All @@ -69,8 +69,8 @@
;; check if node has been copied
(is (= (get-in copy-node-response [:body :entry :parent-id]) new-parent-id))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket created-node-id))))
(is (= 204 (:status (nodes/delete-node ticket new-parent-id))))))
(is (= (:status (nodes/delete-node ticket created-node-id)) 204))
(is (= (:status (nodes/delete-node ticket new-parent-id)) 204))))

(deftest lock-then-unlock-node
(let
Expand All @@ -82,17 +82,17 @@
lock-node-body (model/map->LockNodeBody {:time-to-expire 0
:type "ALLOW_OWNER_CHANGES"
:lifetime "PERSISTENT"})]
(is (= 200 (:status (nodes/lock-node ticket node-id lock-node-body))))
(is (= (:status (nodes/lock-node ticket node-id lock-node-body)) 200))
(let [properties (get-in (nodes/get-node ticket node-id) [:body :entry :properties])]
;; check if the node is locked
(is (every? true? (map (partial contains? properties) [:cm:lock-type :cm:lock-owner :cm:lock-lifetime]))))
;; unlock the node
(is (= 200 (:status (nodes/unlock-node ticket node-id))))
(is (= (:status (nodes/unlock-node ticket node-id)) 200))
(let [properties (get-in (nodes/get-node ticket node-id) [:body :entry :properties])]
;; check if the node is unlocked
(is (every? false? (map (partial contains? properties) [:cm:lock-type :cm:lock-owner :cm:lock-lifetime]))))
;; clean up
(is (= 204) (:status (nodes/delete-node ticket node-id)))))
(is (= (:status (nodes/delete-node ticket node-id)) 204))))

(deftest move-node
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
Expand All @@ -107,7 +107,7 @@
;; check if the node has been moved
(is (= (get-in move-node-response [:body :entry :parent-id]) new-parent-id))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket new-parent-id))))))
(is (= (:status (nodes/delete-node ticket new-parent-id)) 204))))

(deftest get-node-content
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
Expand All @@ -130,9 +130,9 @@
(.write w (bytes (:body response)))
%)))]
;; check if the content is the same of the uploaded file
(is (= (slurp (.getPath downloaded-file)) (apply str (map char (:body (nodes/get-node-content ticket node-id))))))
(is (= (apply str (map char (:body (nodes/get-node-content ticket node-id)))) (slurp (.getPath downloaded-file))))
;;clean up
(is (= 204 (:status (nodes/delete-node ticket node-id))))
(is (= (:status (nodes/delete-node ticket node-id)) 204))
(io/delete-file file-to-be-uploaded)
(io/delete-file downloaded-file))))

Expand All @@ -148,12 +148,11 @@
;; update the node content
(nodes/update-node-content ticket node-id file-to-be-uploaded)
;; check if the content is the same previously spit to the file
(is (= file-content (apply str (map char (:body (nodes/get-node-content ticket node-id))))))
(is (= (apply str (map char (:body (nodes/get-node-content ticket node-id)))) file-content))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket node-id))))
(is (= (:status (nodes/delete-node ticket node-id)) 204))
(io/delete-file file-to-be-uploaded)))

;; incomplete: missing list and delete secondary child/children
(deftest create-then-list-secondary-child
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
parent-id (:id (tu/get-guest-home ticket))
Expand All @@ -163,22 +162,20 @@
target-node-id (get-in (nodes/create-node ticket parent-id (model/map->CreateNodeBody {:name (.toString (UUID/randomUUID)) :node-type "cm:content"})) [:body :entry :id])]
;; create association
(let [response (nodes/create-secondary-child ticket source-node-id [(model/map->CreateSecondaryChildBody {:child-id target-node-id :assoc-type "rn:rendition"})])]
;; FIXME check response return code
;; list secondary children
(let [response (nodes/list-secondary-children ticket source-node-id)]
(is (= 200 (:status response)))
(is (= (:status response) 200))
;; check for target-node-id

)
(is (= (get-in (first (get-in response [:body :list :entries])) [:entry :id]) target-node-id)))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket source-node-id))))
(is (= 204 (:status (nodes/delete-node ticket target-node-id))))
(is (= (:status (nodes/delete-node ticket source-node-id)) 204))
(is (= (:status (nodes/delete-node ticket target-node-id)) 204))
response)))

(deftest list-parents
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
node-id (:id (tu/get-guest-home ticket))]
(is (= "Company Home" (get-in (first (get-in (nodes/list-parents ticket node-id) [:body :list :entries])) [:entry :name])))))
(is (= (get-in (first (get-in (nodes/list-parents ticket node-id) [:body :list :entries])) [:entry :name]) "Company Home"))))

(deftest create-then-list-then-delete-node-assocs
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
Expand All @@ -188,21 +185,21 @@
;; create the target node
target-node-id (get-in (nodes/create-node ticket parent-id (model/map->CreateNodeBody {:name (.toString (UUID/randomUUID)) :node-type "cm:content"})) [:body :entry :id])]
;; create an association between source and target
(is (= 201 (:status (nodes/create-node-assocs ticket source-node-id [(model/map->CreateNodeAssocsBody {:target-id target-node-id :assoc-type "cm:references"})]))))
(is (= (:status (nodes/create-node-assocs ticket source-node-id [(model/map->CreateNodeAssocsBody {:target-id target-node-id :assoc-type "cm:references"})])) 201))
;; list associations
(let [response (nodes/list-target-assocs ticket source-node-id (model/map->ListTargetAssocsQueryParams {:where "(assocType='cm:references')"}))
entry (:entry (first (get-in response [:body :list :entries])))]
(is (= 200 (:status response)))
(is (= (:status response) 200))
(is (= "cm:references") (get-in entry [:association :assoc-type])))
;; delete the association
(is (= 204 (:status (nodes/delete-node-assocs ticket source-node-id target-node-id))))
(is (= (:status (nodes/delete-node-assocs ticket source-node-id target-node-id)) 204))
;; check if association has been deleted
(let [response (nodes/list-target-assocs ticket source-node-id (model/map->ListTargetAssocsQueryParams {:where "(assocType='cm:references')"}))]
(is (= 200 (:status response)))
(is (= (:status response) 200))
(is (empty? (get-in response [:body :list :pagination :entries]))))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket source-node-id))))
(is (= 204 (:status (nodes/delete-node ticket target-node-id))))))
(is (= (:status (nodes/delete-node ticket source-node-id)) 204))
(is (= (:status (nodes/delete-node ticket target-node-id)) 204))))

(deftest create-then-list-then-delete-source-assocs
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
Expand All @@ -212,18 +209,18 @@
;; create the target node
target-node-id (get-in (nodes/create-node ticket parent-id (model/map->CreateNodeBody {:name (.toString (UUID/randomUUID)) :node-type "cm:content"})) [:body :entry :id])]
;; create association
(is (= 201 (:status (nodes/create-node-assocs ticket source-node-id [(model/map->CreateNodeAssocsBody {:target-id target-node-id :assoc-type "cm:references"})]))))
(is (= (:status (nodes/create-node-assocs ticket source-node-id [(model/map->CreateNodeAssocsBody {:target-id target-node-id :assoc-type "cm:references"})])) 201))
;; list associations
(let [response (nodes/list-source-assocs ticket target-node-id (model/map->ListSourceAssocsQueryParams {:where "(assocType='cm:references')"}))
entry (:entry (first (get-in response [:body :list :entries])))]
(is (= 200 (:status response)))
(is (= "cm:references") (get-in entry [:association :assoc-type])))
(is (= (:status response) 200))
(is (= (get-in entry [:association :assoc-type]) "cm:references")))
;; delete association
(is (= 204 (:status (nodes/delete-node-assocs ticket source-node-id target-node-id))))
(is (= (:status (nodes/delete-node-assocs ticket source-node-id target-node-id)) 204))
;; check if association has been deleted
(let [response (nodes/list-source-assocs ticket source-node-id (model/map->ListSourceAssocsQueryParams {:where "(assocType='cm:references')"}))]
(is (= 200 (:status response)))
(is (= (:status response) 200))
(is (empty? (get-in response [:body :list :pagination :entries]))))
;; clean up
(is (= 204 (:status (nodes/delete-node ticket source-node-id))))
(is (= 204 (:status (nodes/delete-node ticket target-node-id))))))
(is (= (:status (nodes/delete-node ticket source-node-id)) 204))
(is (= (:status (nodes/delete-node ticket target-node-id)) 204))))
7 changes: 6 additions & 1 deletion test/cral/shared_links_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
(def user "admin")
(def password "admin")

(deftest create-shared-link
(deftest create-then-list-shared-link
(let [ticket (get-in (auth/create-ticket user password) [:body :entry])
parent-id (:id (tu/get-guest-home ticket))
;; create a node
Expand All @@ -23,5 +23,10 @@
;; create a shared link
create-shared-link-response (shared-links/create-shared-link ticket create-shared-link-body)]
(= (:status create-shared-link-response) 200))
;; list shared links
(loop [list-shared-link-response (shared-links/list-shared-links ticket)]
(when-not (some #(= (get-in create-node-response [:body :entry :id]) %) (map #(get-in % [:entry :node-id]) (get-in list-shared-link-response [:body :list :entries])))
(Thread/sleep 1000)
(recur (shared-links/list-shared-links ticket))))
;; clean up
(is (= (:status (nodes/delete-node ticket (get-in create-node-response [:body :entry :id]))) 204))))

0 comments on commit dc8e1f5

Please sign in to comment.