Skip to content

Commit

Permalink
Merge pull request #353 from mmd-osm/patch/emptysel
Browse files Browse the repository at this point in the history
Empty_data_Selection: remove some boilerplate code
  • Loading branch information
mmd-osm committed Dec 19, 2023
2 parents fc7a042 + c550205 commit 9f270a0
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 139 deletions.
56 changes: 6 additions & 50 deletions test/test_apidb_backend_oauth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "test_formatter.hpp"
#include "test_database.hpp"
#include "test_request.hpp"
#include "test_empty_selection.hpp"


/***********************************************************************************
Expand Down Expand Up @@ -258,63 +259,18 @@ void test_get_user_id_for_token(test_database &tdb) {
"non-existent token does not belong to anyone");
}

class empty_data_selection : public data_selection {
class oauth_data_selection : public empty_data_selection {
public:

~empty_data_selection() override = default;

void write_nodes(output_formatter &formatter) override {}
void write_ways(output_formatter &formatter) override {}
void write_relations(output_formatter &formatter) override {}
void write_changesets(output_formatter &formatter,
const std::chrono::system_clock::time_point &now) override {}

visibility_t check_node_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_way_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_relation_visibility(osm_nwr_id_t id) override { return non_exist; }

int select_nodes(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_ways(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_relations(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_nodes_from_bbox(const bbox &bounds, int max_nodes) override { return 0; }
void select_nodes_from_relations() override {}
void select_ways_from_nodes() override {}
void select_ways_from_relations() override {}
void select_relations_from_ways() override {}
void select_nodes_from_way_nodes() override {}
void select_relations_from_nodes() override {}
void select_relations_from_relations(bool drop_relations = false) override {}
void select_relations_members_of_relations() override {}
int select_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }
void select_changeset_discussions() override {}
void drop_nodes() override {}
void drop_ways() override {}
void drop_relations() override {}

bool supports_user_details() const override { return false; }
bool is_user_blocked(const osm_user_id_t) override { return true; }
bool get_user_id_pass(const std::string&, osm_user_id_t &, std::string &, std::string &) override { return false; };
std::set<osm_user_role_t> get_roles_for_user(osm_user_id_t id) override { return {}; }
std::optional< osm_user_id_t > get_user_id_for_oauth2_token(
const std::string &token_id, bool &expired, bool &revoked,
bool &allow_api_write) override { return {}; }
bool is_user_active(const osm_user_id_t id) override { return (id != 1000); }

int select_historical_nodes(const std::vector<osm_edition_t> &) override { return 0; }
int select_nodes_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_ways(const std::vector<osm_edition_t> &) override { return 0; }
int select_ways_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_relations(const std::vector<osm_edition_t> &) override { return 0; }
int select_relations_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
void set_redactions_visible(bool) override {}
int select_historical_by_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }
~oauth_data_selection() override = default;

bool is_user_active(const osm_user_id_t id) override { return (id != 1000); }

struct factory : public data_selection::factory {
~factory() override = default;

std::unique_ptr<data_selection> make_selection(Transaction_Owner_Base&) const override {
return std::make_unique<empty_data_selection>();
return std::make_unique<oauth_data_selection>();
}
std::unique_ptr<Transaction_Owner_Base> get_default_transaction() override {
return std::make_unique<Transaction_Owner_Void>();
Expand Down Expand Up @@ -368,7 +324,7 @@ void test_oauth_end_to_end(test_database &tdb) {
recording_rate_limiter limiter;
std::string generator("test_apidb_backend.cpp");
routes route;
auto factory = std::make_unique<empty_data_selection::factory>();
auto factory = std::make_unique<oauth_data_selection::factory>();

test_request req;
req.set_header("SCRIPT_URL", "/api/0.6/relation/165475/full");
Expand Down
47 changes: 2 additions & 45 deletions test/test_basicauth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "cgimap/basicauth.hpp"
#include "cgimap/options.hpp"
#include "test_request.hpp"
#include "test_empty_selection.hpp"

#include "cgimap/backend/apidb/transaction_manager.hpp"

Expand All @@ -24,46 +25,11 @@

namespace {

class basicauth_test_data_selection : public data_selection {
class basicauth_test_data_selection : public empty_data_selection {
public:

~basicauth_test_data_selection() override = default;

void write_nodes(output_formatter &formatter) override {}
void write_ways(output_formatter &formatter) override {}
void write_relations(output_formatter &formatter) override {}
void write_changesets(output_formatter &formatter,
const std::chrono::system_clock::time_point &now) override {}

visibility_t check_node_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_way_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_relation_visibility(osm_nwr_id_t id) override { return non_exist; }

int select_nodes(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_ways(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_relations(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_nodes_from_bbox(const bbox &bounds, int max_nodes) override { return 0; }
void select_nodes_from_relations() override {}
void select_ways_from_nodes() override {}
void select_ways_from_relations() override {}
void select_relations_from_ways() override {}
void select_nodes_from_way_nodes() override {}
void select_relations_from_nodes() override {}
void select_relations_from_relations(bool drop_relations = false) override {}
void select_relations_members_of_relations() override {}
int select_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }
void select_changeset_discussions() override {}
void drop_nodes() override {}
void drop_ways() override {}
void drop_relations() override {}

bool supports_user_details() const override { return false; }
bool is_user_blocked(const osm_user_id_t) override { return true; }
std::set<osm_user_role_t> get_roles_for_user(osm_user_id_t id) override { return {}; }
std::optional< osm_user_id_t > get_user_id_for_oauth2_token(
const std::string &token_id, bool &expired, bool &revoked,
bool &allow_api_write) override { return {}; }
bool is_user_active(const osm_user_id_t) override { return false; }
bool get_user_id_pass(const std::string& user_name, osm_user_id_t & user_id,
std::string & pass_crypt, std::string & pass_salt) override {

Expand All @@ -84,15 +50,6 @@ class basicauth_test_data_selection : public data_selection {
return false;
}

int select_historical_nodes(const std::vector<osm_edition_t> &) override { return 0; }
int select_nodes_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_ways(const std::vector<osm_edition_t> &) override { return 0; }
int select_ways_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_relations(const std::vector<osm_edition_t> &) override { return 0; }
int select_relations_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
void set_redactions_visible(bool) override {}
int select_historical_by_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }

struct factory : public data_selection::factory {
~factory() override = default;
std::unique_ptr<data_selection> make_selection(Transaction_Owner_Base&) const override {
Expand Down
85 changes: 85 additions & 0 deletions test/test_empty_selection.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/**
* SPDX-License-Identifier: GPL-2.0-only
*
* This file is part of openstreetmap-cgimap (https://github.com/zerebubuth/openstreetmap-cgimap/).
*
* Copyright (C) 2006-2023 by the CGImap developer community.
* For a full list of authors see the git log.
*/


#ifndef TEST_EMPTY_SELECTION
#define TEST_EMPTY_SELECTION

#include <memory>

#include "cgimap/data_selection.hpp"
#include "cgimap/backend/apidb/transaction_manager.hpp"


class empty_data_selection : public data_selection {
public:

~empty_data_selection() override = default;

void write_nodes(output_formatter &formatter) override {}
void write_ways(output_formatter &formatter) override {}
void write_relations(output_formatter &formatter) override {}
void write_changesets(output_formatter &formatter,
const std::chrono::system_clock::time_point &now) override {}

visibility_t check_node_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_way_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_relation_visibility(osm_nwr_id_t id) override { return non_exist; }

int select_nodes(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_ways(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_relations(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_nodes_from_bbox(const bbox &bounds, int max_nodes) override { return 0; }
void select_nodes_from_relations() override {}
void select_ways_from_nodes() override {}
void select_ways_from_relations() override {}
void select_relations_from_ways() override {}
void select_nodes_from_way_nodes() override {}
void select_relations_from_nodes() override {}
void select_relations_from_relations(bool drop_relations = false) override {}
void select_relations_members_of_relations() override {}
int select_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }
void select_changeset_discussions() override {}
void drop_nodes() override {}
void drop_ways() override {}
void drop_relations() override {}

bool supports_user_details() const override { return false; }
bool is_user_blocked(const osm_user_id_t) override { return true; }
bool get_user_id_pass(const std::string&, osm_user_id_t &, std::string &, std::string &) override { return false; };
std::set<osm_user_role_t> get_roles_for_user(osm_user_id_t id) override { return {}; }
std::optional< osm_user_id_t > get_user_id_for_oauth2_token(
const std::string &token_id, bool &expired, bool &revoked,
bool &allow_api_write) override { return {}; }
bool is_user_active(const osm_user_id_t id) override { return false; }

int select_historical_nodes(const std::vector<osm_edition_t> &) override { return 0; }
int select_nodes_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_ways(const std::vector<osm_edition_t> &) override { return 0; }
int select_ways_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_relations(const std::vector<osm_edition_t> &) override { return 0; }
int select_relations_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
void set_redactions_visible(bool) override {}
int select_historical_by_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }


struct factory : public data_selection::factory {
~factory() override = default;

std::unique_ptr<data_selection> make_selection(Transaction_Owner_Base&) const override {
return std::make_unique<empty_data_selection>();
}
std::unique_ptr<Transaction_Owner_Base> get_default_transaction() override {
return std::make_unique<Transaction_Owner_Void>();
}
};
};


#endif
46 changes: 2 additions & 44 deletions test/test_oauth2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#include "cgimap/oauth2.hpp"
#include "test_request.hpp"
#include "test_empty_selection.hpp"
#include "cgimap/backend/apidb/transaction_manager.hpp"

#define CATCH_CONFIG_MAIN
Expand All @@ -22,45 +23,11 @@
namespace {


class oauth2_test_data_selection : public data_selection {
class oauth2_test_data_selection : public empty_data_selection {
public:

~oauth2_test_data_selection() override = default;

void write_nodes(output_formatter &formatter) override {}
void write_ways(output_formatter &formatter) override {}
void write_relations(output_formatter &formatter) override {}
void write_changesets(output_formatter &formatter,
const std::chrono::system_clock::time_point &now) override {}

visibility_t check_node_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_way_visibility(osm_nwr_id_t id) override { return non_exist; }
visibility_t check_relation_visibility(osm_nwr_id_t id) override { return non_exist; }

int select_nodes(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_ways(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_relations(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_nodes_from_bbox(const bbox &bounds, int max_nodes) override { return 0; }
void select_nodes_from_relations() override {}
void select_ways_from_nodes() override {}
void select_ways_from_relations() override {}
void select_relations_from_ways() override {}
void select_nodes_from_way_nodes() override {}
void select_relations_from_nodes() override {}
void select_relations_from_relations(bool drop_relations = false) override {}
void select_relations_members_of_relations() override {}
int select_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }
void select_changeset_discussions() override {}
void drop_nodes() override {}
void drop_ways() override {}
void drop_relations() override {}

bool supports_user_details() const override { return false; }
bool is_user_blocked(const osm_user_id_t) override { return true; }
bool is_user_active(const osm_user_id_t) override { return false; }
bool get_user_id_pass(const std::string& user_name, osm_user_id_t & user_id,
std::string & pass_crypt, std::string & pass_salt) override { return false; }

std::optional<osm_user_id_t> get_user_id_for_oauth2_token(const std::string &token_id,
bool& expired,
bool& revoked,
Expand Down Expand Up @@ -119,15 +86,6 @@ class oauth2_test_data_selection : public data_selection {
return {};
}

int select_historical_nodes(const std::vector<osm_edition_t> &) override { return 0; }
int select_nodes_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_ways(const std::vector<osm_edition_t> &) override { return 0; }
int select_ways_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
int select_historical_relations(const std::vector<osm_edition_t> &) override { return 0; }
int select_relations_with_history(const std::vector<osm_nwr_id_t> &) override { return 0; }
void set_redactions_visible(bool) override {}
int select_historical_by_changesets(const std::vector<osm_changeset_id_t> &) override { return 0; }

struct factory : public data_selection::factory {
~factory() override = default;
std::unique_ptr<data_selection> make_selection(Transaction_Owner_Base&) const override {
Expand Down

0 comments on commit 9f270a0

Please sign in to comment.