Beispiel #1
0
    def test_create_apikey(self, client, initial_data, apikey_data, zone_data,
                           basic_auth_admin_headers):
        res = client.post("/api/v1/pdnsadmin/zones",
                          headers=basic_auth_admin_headers,
                          data=json.dumps(zone_data),
                          content_type="application/json")
        data = res.get_json(force=True)

        assert res.status_code == 201

        res = client.post("/api/v1/pdnsadmin/apikeys",
                          headers=basic_auth_admin_headers,
                          data=json.dumps(apikey_data),
                          content_type="application/json")
        data = res.get_json(force=True)

        validate_apikey(data)
        assert res.status_code == 201

        apikey_url_format = "/api/v1/pdnsadmin/apikeys/{0}"
        apikey_url = apikey_url_format.format(data[0]['id'])

        res = client.delete(apikey_url, headers=basic_auth_admin_headers)

        assert res.status_code == 204

        zone_url_format = "/api/v1/pdnsadmin/zones/{0}"
        zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
        res = client.delete(zone_url, headers=basic_auth_admin_headers)

        assert res.status_code == 204
Beispiel #2
0
    def test_users(
            self,
            client,
            initial_data,  # noqa: F811
            user1_data,  # noqa: F811
            basic_auth_admin_headers,
            basic_auth_user_headers):  # noqa: F811
        self.client = client
        self.basic_auth_admin_headers = basic_auth_admin_headers

        # Create user1 (should fail)
        res = client.post(
            "/api/v1/pdnsadmin/users",
            headers=basic_auth_user_headers,
            data=json.dumps(user1_data),
            content_type="application/json",
        )
        assert res.status_code == 401

        # Create user1 (as admin)
        res = client.post(
            "/api/v1/pdnsadmin/users",
            headers=basic_auth_admin_headers,
            data=json.dumps(user1_data),
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 201
        assert len(data) == 1

        # Check user
        user1 = self.check_user(user1_data, data[0])
        user1_id = user1["id"]

        # Update to defaults (should fail)
        res = client.put(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_user_headers,
            content_type="application/json",
        )
        assert res.status_code == 401

        # Delete user (should fail)
        res = client.delete(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_user_headers,
            content_type="application/json",
        )
        assert res.status_code == 401

        # Cleanup (delete user as admin)
        res = client.delete(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204
Beispiel #3
0
    def test_accounts(
            self,
            client,
            initial_data,  # noqa: F811
            account_data,  # noqa: F811
            basic_auth_admin_headers,
            basic_auth_user_headers):  # noqa: F811
        self.client = client
        self.basic_auth_admin_headers = basic_auth_admin_headers

        # Create account (should fail)
        res = client.post(
            "/api/v1/pdnsadmin/accounts",
            headers=basic_auth_user_headers,
            data=json.dumps(account_data),
            content_type="application/json",
        )
        assert res.status_code == 401

        # Create account (as admin)
        res = client.post(
            "/api/v1/pdnsadmin/accounts",
            headers=basic_auth_admin_headers,
            data=json.dumps(account_data),
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 201

        # Check account
        data = self.check_account(account_data)
        account_id = data["id"]

        # Update to defaults (should fail)
        res = client.put(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_user_headers,
            content_type="application/json",
        )
        assert res.status_code == 401

        # Delete account (should fail)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_user_headers,
            content_type="application/json",
        )
        assert res.status_code == 401

        # Cleanup (delete account as admin)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204
Beispiel #4
0
def test_delete_story(client: client):
    # delete story (without auth)
    response = client.delete("/api/story/{0}".format(
        VARS["story_public"]["id"]))
    assert_json_status(response, Unauthorized.code)

    # delete story (with auth)
    response = client.delete("/api/story/{0}".format(
        VARS["story_public"]["id"]),
                             headers=with_auth_headers())
    assert_json_status(response, OK_STATUS)

    # check if deleted story is really gone
    response = client.get("/api/story/{0}".format(VARS["story_public"]["id"]))
    assert_json_status(response, NotFound.code)
Beispiel #5
0
 def test_response_body(self, client):
     response_body = client.delete('/rulesets/test').get_json()
     assert response_body == {
         'status': 400,
         'field': 'session_id',
         'error': 'required'
     }
    def test_get_multiple_zones(self, client, initial_data, zone_data,
                                basic_auth_admin_headers):
        res = client.post("/api/v1/pdnsadmin/zones",
                          headers=basic_auth_admin_headers,
                          data=json.dumps(zone_data),
                          content_type="application/json")
        data = res.get_json(force=True)
        data['rrsets'] = []

        validate_zone(data)
        assert res.status_code == 201

        res = client.get("/api/v1/pdnsadmin/zones",
                         headers=basic_auth_admin_headers)
        data = res.get_json(force=True)
        fake_domain = namedtuple("Domain", data[0].keys())(*data[0].values())
        domain_schema = DomainSchema(many=True)

        json.dumps(domain_schema.dump([fake_domain]))
        assert res.status_code == 200

        zone_url_format = "/api/v1/pdnsadmin/zones/{0}"
        zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
        res = client.delete(zone_url, headers=basic_auth_admin_headers)

        assert res.status_code == 204
    def test_delete_zone(
        self,
        initial_apikey_data,
        client,
        zone_data,
        user_apikey_integration
    ):
        res = client.post(
            "/api/v1/servers/localhost/zones",
            headers=user_apikey_integration,
            data=json.dumps(zone_data),
            content_type="application/json"
        )
        data = res.get_json(force=True)
        data['rrsets'] = []

        validate_zone(data)
        assert res.status_code == 201

        zone_url_format = "/api/v1/servers/localhost/zones/{0}"
        zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
        res = client.delete(
            zone_url,
            headers=user_apikey_integration
        )

        assert res.status_code == 204
Beispiel #8
0
 def test_response_body(self, client):
     response = client.delete('/rulesets/test',
                              query_string={'session_id': None})
     assert response.get_json() == {
         'status': 400,
         'field': 'session_id',
         'error': 'required'
     }
Beispiel #9
0
 def test_response_body(self, client):
     response = client.delete('/rulesets/test',
                              query_string={'session_id': str(ObjectId())})
     assert response.get_json() == {
         'status': 404,
         'field': 'session_id',
         'error': 'unknown'
     }
Beispiel #10
0
    def test_get_multiple_apikey(self, client, initial_data, apikey_data,
                                 zone_data, basic_auth_admin_headers):
        res = client.post("/api/v1/pdnsadmin/zones",
                          headers=basic_auth_admin_headers,
                          data=json.dumps(zone_data),
                          content_type="application/json")
        data = res.get_json(force=True)

        assert res.status_code == 201

        res = client.post("/api/v1/pdnsadmin/apikeys",
                          headers=basic_auth_admin_headers,
                          data=json.dumps(apikey_data),
                          content_type="application/json")
        data = res.get_json(force=True)

        validate_apikey(data)
        assert res.status_code == 201

        res = client.get("/api/v1/pdnsadmin/apikeys",
                         headers=basic_auth_admin_headers)
        data = res.get_json(force=True)

        fake_role = namedtuple(
            "Role", data[0]['role'].keys())(*data[0]['role'].values())

        data[0]['domains'] = []
        data[0]['role'] = fake_role
        fake_apikey = namedtuple("ApiKey", data[0].keys())(*data[0].values())
        apikey_schema = ApiKeySchema(many=True)

        json.dumps(apikey_schema.dump([fake_apikey]))
        assert res.status_code == 200

        apikey_url_format = "/api/v1/pdnsadmin/apikeys/{0}"
        apikey_url = apikey_url_format.format(fake_apikey.id)
        res = client.delete(apikey_url, headers=basic_auth_admin_headers)

        assert res.status_code == 204

        zone_url_format = "/api/v1/pdnsadmin/zones/{0}"
        zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
        res = client.delete(zone_url, headers=basic_auth_admin_headers)

        assert res.status_code == 204
    def test_delete_zone(self, client, common_data_mock, zone_data,
                         admin_apikey):
        with patch('powerdnsadmin.lib.utils.requests.request') as mock_delete, \
             patch('powerdnsadmin.routes.api.Domain') as mock_domain:
            mock_domain.return_value.update.return_value = True
            mock_delete.return_value.status_code = 204
            mock_delete.return_value.content = ''

            zone_url_format = "/api/v1/servers/localhost/zones/{0}"
            zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
            res = client.delete(zone_url, headers=admin_apikey)

            assert res.status_code == 204
    def test_delete_zone(self, client, common_data_mock, zone_data,
                         basic_auth_admin_headers):
        with patch('app.lib.utils.requests.request') as mock_delete, \
             patch('app.blueprints.api.Domain') as mock_domain:
            mock_domain.return_value.update.return_value = True
            mock_domain.query.filter.return_value = True
            mock_delete.return_value.status_code = 204
            mock_delete.return_value.content = ''

            zone_url_format = "/api/v1/pdnsadmin/zones/{0}"
            zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
            res = client.delete(zone_url, headers=basic_auth_admin_headers)

            assert res.status_code == 204
Beispiel #13
0
    def test_delete_zone(self, client, common_data_mock, zone_data,
                         basic_auth_user_headers):
        with patch('powerdnsadmin.lib.utils.requests.request') as mock_delete, \
             patch('powerdnsadmin.routes.api.Domain') as mock_domain, \
             patch('powerdnsadmin.routes.api.get_user_domains') as mock_user_domains:
            test_domain = Domain(1, name=zone_data['name'].rstrip("."))

            mock_domain.return_value.update.return_value = True
            mock_user_domains.return_value = [test_domain]
            mock_delete.return_value.status_code = 204
            mock_delete.return_value.content = ''

            zone_url_format = "/api/v1/pdnsadmin/zones/{0}"
            zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
            res = client.delete(zone_url, headers=basic_auth_user_headers)

            assert res.status_code == 204
    def test_delete_zone(self, client, initial_data, zone_data,
                         basic_auth_admin_headers):
        res = client.post("/api/v1/pdnsadmin/zones",
                          headers=basic_auth_admin_headers,
                          data=json.dumps(zone_data),
                          content_type="application/json")
        data = res.get_json(force=True)
        data['rrsets'] = []

        validate_zone(data)
        assert res.status_code == 201

        zone_url_format = "/api/v1/pdnsadmin/zones/{0}"
        zone_url = zone_url_format.format(zone_data['name'].rstrip("."))
        res = client.delete(zone_url, headers=basic_auth_admin_headers)

        assert res.status_code == 204
Beispiel #15
0
def test_delete_should_be_successful(client, db):
    res = client.post(
        "/users",
        json=user1,
    )

    res = client.delete("/users/1")

    q = db.session.query(User).filter_by(id=1).first()

    assert res.status_code == 204
    assert q.firstname == ""
    assert q.lastname == ""
    assert q.fiscalcode == ""
    assert q.phonenumber == ""
    assert not q.birthdate
    assert q.email == "deleted"
Beispiel #16
0
 def test_status_code(self, client):
     assert client.delete('/rulesets/test').status_code == 400
Beispiel #17
0
 def test_status_code(self, client):
     response = client.delete('/rulesets/test',
                              query_string={'session_id': str(ObjectId())})
     assert response.status_code == 404
    def test_accounts(
            self,
            client,
            initial_data,  # noqa: F811
            account_data,  # noqa: F811
            basic_auth_admin_headers):  # noqa: F811
        account_name = account_data["name"]
        self.client = client
        self.basic_auth_admin_headers = basic_auth_admin_headers

        # Create account
        res = client.post(
            "/api/v1/pdnsadmin/accounts",
            headers=basic_auth_admin_headers,
            data=json.dumps(account_data),
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 201

        # Check account
        data = self.check_account(account_data)
        account_id = data["id"]

        updated = account_data.copy()
        # Update and check values
        for upd_key in ["description", "contact", "mail"]:
            upd_value = "upd-{}".format(account_data[upd_key])

            # Update
            data = {"name": account_name, upd_key: upd_value}
            res = client.put(
                "/api/v1/pdnsadmin/accounts/{}".format(account_id),
                data=json.dumps(data),
                headers=basic_auth_admin_headers,
                content_type="application/json",
            )
            assert res.status_code == 204
            updated[upd_key] = upd_value

            # Check
            data = self.check_account(updated)

        # Update to defaults
        res = client.put(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Check account
        res = client.get(
            "/api/v1/pdnsadmin/accounts/{}".format(account_name),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 200
        assert len(data) == 1
        data = data[0]
        account_id = data["id"]
        for key, value in account_data.items():
            assert data[key] == value

        # Cleanup (delete account)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Get non-existing account (should fail)
        data = self.get_account(account_name, status_code=404)

        # Update non-existing account (should fail)
        res = client.put(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 404

        # Delete non-existing account (should fail)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 404
Beispiel #19
0
def test_delete_should_not_be_successful(client):
    res = client.delete("/users/10")

    assert res.status_code == 404
Beispiel #20
0
 def delete(self, client):
     url = f"/rulesets/{str(self.id)}"
     query_string = {'session_id': pytest.session.token}
     return lambda: client.delete(url, query_string=query_string)
Beispiel #21
0
    def test_account_users(
            self,
            client,
            initial_data,  # noqa: F811
            account_data,
            user1_data,  # noqa: F811
            basic_auth_admin_headers,
            basic_auth_user_headers):  # noqa: F811
        self.client = client
        self.basic_auth_admin_headers = basic_auth_admin_headers

        # Create account
        res = client.post(
            "/api/v1/pdnsadmin/accounts",
            headers=basic_auth_admin_headers,
            data=json.dumps(account_data),
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 201

        # Check account
        data = self.check_account(account_data)
        account_id = data["id"]

        # Create user1
        res = client.post(
            "/api/v1/pdnsadmin/users",
            headers=basic_auth_admin_headers,
            data=json.dumps(user1_data),
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 201
        assert len(data) == 1

        # Check user
        user1 = self.check_user(user1_data, data[0])
        user1_id = user1["id"]

        # Assert test account has no users
        res = client.get(
            "/api/v1/pdnsadmin/accounts/users/{}".format(account_id),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 200
        assert data == []

        # Link user to account (as user, should fail)
        res = client.put(
            "/api/v1/pdnsadmin/accounts/users/{}/{}".format(
                account_id, user1_id),
            headers=basic_auth_user_headers,
            content_type="application/json",
        )
        assert res.status_code == 401

        # Link user to account (as admin)
        res = client.put(
            "/api/v1/pdnsadmin/accounts/users/{}/{}".format(
                account_id, user1_id),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Unlink user from account (as user, should fail)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/users/{}/{}".format(
                account_id, user1_id),
            headers=basic_auth_user_headers,
            content_type="application/json",
        )
        assert res.status_code == 401

        # Unlink user from account (as admin)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/users/{}/{}".format(
                account_id, user1_id),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Cleanup (delete user)
        res = client.delete(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Cleanup (delete account)
        res = client.delete(
            "/api/v1/pdnsadmin/accounts/{}".format(account_id),
            data=json.dumps(account_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204
    def test_users(
            self,
            client,
            initial_data,  # noqa: F811
            user1_data,  # noqa: F811
            basic_auth_admin_headers):  # noqa: F811
        user1name = user1_data["username"]
        self.client = client
        self.basic_auth_admin_headers = basic_auth_admin_headers

        # Create user (user1)
        res = client.post(
            "/api/v1/pdnsadmin/users",
            headers=basic_auth_admin_headers,
            data=json.dumps(user1_data),
            content_type="application/json",
        )
        data = res.get_json(force=True)
        assert res.status_code == 201
        assert len(data) == 1

        # Check user
        user1 = self.check_user(user1_data, data[0])
        user1_id = user1["id"]

        updated = user1_data.copy()
        # Update and check values
        for upd_key in ["firstname", "lastname", "email"]:
            upd_value = "upd-{}".format(user1_data[upd_key])

            # Update
            data = {"username": user1name, upd_key: upd_value}
            res = client.put(
                "/api/v1/pdnsadmin/users/{}".format(user1_id),
                data=json.dumps(data),
                headers=basic_auth_admin_headers,
                content_type="application/json",
            )
            assert res.status_code == 204
            updated[upd_key] = upd_value

            # Check
            data = self.check_user(updated)

        # Update to defaults
        res = client.put(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Check user
        self.check_user(user1_data)

        # Cleanup (delete user)
        res = client.delete(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 204

        # Get non-existing user (should fail)
        data = self.get_user(user1name, status_code=404)

        # Update non-existing user (should fail)
        res = client.put(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 404

        # Delete non-existing user (should fail)
        res = client.delete(
            "/api/v1/pdnsadmin/users/{}".format(user1_id),
            data=json.dumps(user1_data),
            headers=basic_auth_admin_headers,
            content_type="application/json",
        )
        assert res.status_code == 404