예제 #1
0
 def test_nothing_happens_when_status_is_not_to_sign(self):
     evt = mock.MagicMock(payload={"action": "update", "bucket_id": "a", "collection_id": "b"},
                          impacted_objects=[{
                              "new": {"id": "b", "status": "signed"}}])
     sign_collection_data(evt, resources=utils.parse_resources("a/b -> c/d"),
                          to_review_enabled=True)
     assert not self.updater_mocked.sign_and_update_destination.called
예제 #2
0
    def test_updater_is_called_when_resource_and_status_matches(self):
        evt = mock.MagicMock(payload={
            "bucket_id": "a",
            "collection_id": "b"
        },
                             impacted_records=[{
                                 "new": {
                                     "id": "b",
                                     "status": "to-sign"
                                 }
                             }])
        evt.request.registry.storage = mock.sentinel.storage
        evt.request.registry.permission = mock.sentinel.permission
        evt.request.registry.signers = {
            "/buckets/a/collections/b": mock.sentinel.signer
        }
        evt.request.route_path.return_value = "/v1/buckets/a/collections/b"
        sign_collection_data(evt, resources=utils.parse_resources("a/b;c/d"))
        self.updater_mocked.assert_called_with(
            signer=mock.sentinel.signer,
            storage=mock.sentinel.storage,
            permission=mock.sentinel.permission,
            source={
                "bucket": "a",
                "collection": "b"
            },
            destination={
                "bucket": "c",
                "collection": "d"
            })

        mocked = self.updater_mocked.return_value
        assert mocked.sign_and_update_destination.called
예제 #3
0
 def test_kinto_attachment_property_is_set_to_allow_metadata_updates(self):
     evt = mock.MagicMock(payload={"action": "update", "bucket_id": "a", "collection_id": "b"},
                          impacted_objects=[{
                              "new": {"id": "b", "status": "to-sign"}}])
     evt.request.registry.storage = mock.sentinel.storage
     evt.request.registry.permission = mock.sentinel.permission
     evt.request.registry.signers = {
         "/buckets/a/collections/b": mock.sentinel.signer
     }
     evt.request.route_path.return_value = "/v1/buckets/a/collections/b"
     sign_collection_data(evt, resources=utils.parse_resources("a/b -> c/d"),
                          to_review_enabled=True)
     assert evt.request._attachment_auto_save is True
예제 #4
0
 def test_nothing_happens_when_status_is_not_to_sign(self):
     evt = mock.MagicMock(payload={
         "bucket_id": "a",
         "collection_id": "b"
     },
                          impacted_records=[{
                              "new": {
                                  "id": "b",
                                  "status": "signed"
                              }
                          }])
     sign_collection_data(evt, resources=utils.parse_resources("a/b;c/d"))
     assert not self.updater_mocked.sign_and_update_destination.called
예제 #5
0
 def test_kinto_attachment_property_is_set_to_allow_metadata_updates(self):
     evt = mock.MagicMock(payload={
         "bucket_id": "a",
         "collection_id": "b"
     },
                          impacted_records=[{
                              "new": {
                                  "id": "b",
                                  "status": "to-sign"
                              }
                          }])
     evt.request.registry.storage = mock.sentinel.storage
     evt.request.registry.permission = mock.sentinel.permission
     evt.request.registry.signers = {
         "/buckets/a/collections/b": mock.sentinel.signer
     }
     evt.request.route_path.return_value = "/v1/buckets/a/collections/b"
     sign_collection_data(evt, resources=utils.parse_resources("a/b;c/d"))
     assert evt.request._attachment_auto_save is True
예제 #6
0
    def test_updater_is_called_when_resource_and_status_matches(self):
        evt = mock.MagicMock(payload={"bucket_id": "a", "collection_id": "b"},
                             impacted_records=[{
                                 "new": {"id": "b", "status": "to-sign"}}])
        evt.request.registry.storage = mock.sentinel.storage
        evt.request.registry.permission = mock.sentinel.permission
        evt.request.registry.signers = {
            "/buckets/a/collections/b": mock.sentinel.signer
        }
        evt.request.route_path.return_value = "/v1/buckets/a/collections/b"
        sign_collection_data(evt, resources=utils.parse_resources("a/b;c/d"))
        self.updater_mocked.assert_called_with(
            signer=mock.sentinel.signer,
            storage=mock.sentinel.storage,
            permission=mock.sentinel.permission,
            source={"bucket": "a", "collection": "b"},
            destination={"bucket": "c", "collection": "d"})

        mocked = self.updater_mocked.return_value
        assert mocked.sign_and_update_destination.called
예제 #7
0
 def test_updater_does_not_fail_when_payload_is_inconsistent(self):
     # This happens with events on default bucket for kinto < 3.3
     evt = mock.MagicMock(payload={"action": "update", "subpath": "collections/boom"})
     sign_collection_data(evt, resources=utils.parse_resources("a/b -> c/d"),
                          to_review_enabled=True)
예제 #8
0
 def test_nothing_happens_when_resource_is_not_configured(self):
     evt = mock.MagicMock(payload={"action": "update", "bucket_id": "a", "collection_id": "b"})
     sign_collection_data(evt, resources=utils.parse_resources("c/d -> e/f"),
                          to_review_enabled=True)
     assert not self.updater_mocked.called
예제 #9
0
 def test_updater_does_not_fail_when_payload_is_inconsistent(self):
     # This happens with events on default bucket for kinto < 3.3
     evt = mock.MagicMock(payload={"subpath": "collections/boom"})
     sign_collection_data(evt, resources=utils.parse_resources("a/b;c/d"))
예제 #10
0
 def test_nothing_happens_when_resource_is_not_configured(self):
     evt = mock.MagicMock(payload={"bucket_id": "a", "collection_id": "b"})
     sign_collection_data(evt, resources=utils.parse_resources("c/d;e/f"))
     assert not self.updater_mocked.called