Skip to content

Commit

Permalink
Merge pull request #231 from joie/yinonov/issue226
Browse files Browse the repository at this point in the history
session tests coverage
  • Loading branch information
yinonov committed Nov 12, 2020
2 parents f3644b9 + 43c034f commit 75d89ac
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 5 deletions.
36 changes: 32 additions & 4 deletions firestore.rules
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,29 @@ service cloud.firestore {
function isPublic() {
return 'status' in resource.data && resource.data.status == 'public';
}

function updatesToPublic() {
return 'status' in request.resource.data && request.resource.data.status == 'public';
}

function priceValid(data) {
return 'price' in data && data.price.keys().hasAll(['currency', 'display']);
// return 'price' in request.resource.data;
}

function jointResourcesCheckout(requiredFields){
return resource.data.keys()
.concat(request.resource.data.keys())
.hasAll(requiredFields);
}

function isStatusRequest() { return 'status' in request.resource.data }
function isPublishRequest() { return request.resource.data.status == 'public' }
function isValidPublishRequest() {
return
jointResourcesCheckout(['title', 'description', 'owner', 'price'])
&& (priceValid(resource.data) || priceValid(request.resource.data));
}
// //////////////////

match /sessions/{session} {
Expand All @@ -49,11 +72,16 @@ service cloud.firestore {
['title', 'owner'],
['description', 'type', 'format', 'thumbRef', 'level', 'price', 'activities', 'pillar', 'promo', 'relatedSessions', 'duration', 'when', 'eventId', 'resourceId']
);
allow update: if isOwner(resource.data.owner.uid)

allow update: if
isOwner(resource.data.owner.uid)
&& (
!isPublic() ||
editOnlyChangesFields(['title', 'description', 'thumbRef', 'level', 'price', 'activities', 'pillar', 'promo', 'relatedSessions', 'duration', 'entryId'])
);
!isStatusRequest()
|| !isPublishRequest()
|| isValidPublishRequest()
)
&& editOnlyChangesFields(['title', 'description', 'thumbRef', 'level', 'price', 'activities', 'pillar', 'promo', 'relatedSessions', 'duration', 'entryId', 'status']);

allow delete: if isOwner(resource.data.owner.uid) && !isPublic();
}

Expand Down
2 changes: 1 addition & 1 deletion functions/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
!.eslintrc.js

# Except the test files
test/**/*.js
test/*.js

# TypeScript v1 declaration files
typings/
Expand Down
1 change: 1 addition & 0 deletions functions/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log",
"test": "mocha --exit",
"test:dev": "mocha --watch",
"_comment": "use the 'getCustomConfig' to retrieve config which will also includes stripe token",
"getCustomConfig": "firebase functions:config:get > .runtimeconfig.json"
},
Expand Down

0 comments on commit 75d89ac

Please sign in to comment.