TEST_FIXTURE(table_service_test_base, table_name_unicode) { utility::string_t table_name(_XPLATSTR("表格1")); azure::storage::cloud_table_client client = get_table_client(); azure::storage::cloud_table table = client.get_table_reference(table_name); CHECK(false == table.exists()); CHECK_STORAGE_EXCEPTION(table.create(), error_bad_request); }
wa::storage::cloud_table get_table(bool create) { wa::storage::cloud_table_client client = get_table_client(); utility::string_t table_name = get_table_name(); wa::storage::cloud_table table = client.get_table_reference(table_name); if (create) { table.create_if_not_exists(); } return table; }
TEST_FIXTURE(table_service_test_base, storage_extended_error_verify_json_with_details) { utility::string_t table_name = get_table_name(); azure::storage::cloud_table_client client = get_table_client(); azure::storage::cloud_table table = client.get_table_reference(table_name); azure::storage::table_request_options options; azure::storage::operation_context context; try { table.delete_table(options, context); CHECK(false); } catch (const azure::storage::storage_exception& e) { CHECK(e.result().extended_error().code().compare(U("ResourceNotFound")) == 0); CHECK(!e.result().extended_error().message().empty()); } }
TEST_FIXTURE(table_service_test_base, ListTabled_SharedKeyLite) { const int TABLE_COUNT = 5; azure::storage::cloud_table tables[TABLE_COUNT]; for (int i = 0; i < TABLE_COUNT; ++i) { tables[i] = get_table(); } azure::storage::cloud_table_client client = get_table_client(); client.set_authentication_scheme(azure::storage::authentication_scheme::shared_key_lite); utility::string_t prefix = object_name_prefix; azure::storage::table_request_options options; azure::storage::operation_context context; std::vector<azure::storage::cloud_table> results = list_all_tables(client, prefix, options, context); CHECK(results.size() >= TABLE_COUNT); for (int i = 0; i < TABLE_COUNT; ++i) { tables[i].delete_table(); } }
TEST_FIXTURE(table_service_test_base, ListTables_Segmented) { const int TABLE_COUNT = 5; azure::storage::cloud_table tables[TABLE_COUNT]; bool is_found[TABLE_COUNT]; for (int i = 0; i < TABLE_COUNT; ++i) { tables[i] = get_table(); is_found[i] = false; } azure::storage::cloud_table_client client = get_table_client(); utility::string_t prefix; int max_results; azure::storage::continuation_token token; azure::storage::table_request_options options; azure::storage::operation_context context; prefix = object_name_prefix; max_results = 3; size_t segment_count = 0; azure::storage::table_result_segment result_segment; do { result_segment = client.list_tables_segmented(prefix, max_results, token, options, context); std::vector<azure::storage::cloud_table> results = result_segment.results(); CHECK((int)results.size() <= max_results); for (std::vector<azure::storage::cloud_table>::const_iterator itr = results.cbegin(); itr != results.cend(); ++itr) { azure::storage::cloud_table table = *itr; for (int i = 0; i < TABLE_COUNT; ++i) { if (table.name().compare(tables[i].name()) == 0) { CHECK(!table.service_client().base_uri().primary_uri().is_empty()); CHECK(table.service_client().credentials().is_shared_key()); CHECK(!table.name().empty()); CHECK(!table.uri().primary_uri().is_empty()); is_found[i] = true; } } } CHECK(!context.client_request_id().empty()); CHECK(context.start_time().is_initialized()); CHECK(context.end_time().is_initialized()); CHECK_EQUAL(segment_count + 1, context.request_results().size()); CHECK(context.request_results()[segment_count].is_response_available()); CHECK(context.request_results()[segment_count].start_time().is_initialized()); CHECK(context.request_results()[segment_count].end_time().is_initialized()); CHECK(context.request_results()[segment_count].target_location() != azure::storage::storage_location::unspecified); CHECK_EQUAL(web::http::status_codes::OK, context.request_results()[segment_count].http_status_code()); CHECK(!context.request_results()[segment_count].service_request_id().empty()); CHECK(context.request_results()[segment_count].request_date().is_initialized()); CHECK(context.request_results()[segment_count].content_md5().empty()); CHECK(context.request_results()[segment_count].etag().empty()); CHECK(context.request_results()[segment_count].extended_error().code().empty()); CHECK(context.request_results()[segment_count].extended_error().message().empty()); CHECK(context.request_results()[segment_count].extended_error().details().empty()); ++segment_count; token = result_segment.continuation_token(); } while (!token.empty()); CHECK(segment_count > 1); for (int i = 0; i < TABLE_COUNT; ++i) { CHECK(is_found[i]); } for (int i = 0; i < TABLE_COUNT; ++i) { tables[i].delete_table(); } }
TEST_FIXTURE(table_service_test_base, ListTables_Normal) { const int TABLE_COUNT = 5; azure::storage::cloud_table tables[TABLE_COUNT]; bool is_found[TABLE_COUNT]; for (int i = 0; i < TABLE_COUNT; ++i) { tables[i] = get_table(); is_found[i] = false; } azure::storage::cloud_table_client client = get_table_client(); utility::string_t prefix; azure::storage::table_request_options options; azure::storage::operation_context context; prefix = object_name_prefix; std::vector<azure::storage::cloud_table> results = list_all_tables(client, prefix, options, context); CHECK(results.size() >= TABLE_COUNT); for (std::vector<azure::storage::cloud_table>::const_iterator itr = results.cbegin(); itr != results.cend(); ++itr) { azure::storage::cloud_table table = *itr; for (int i = 0; i < TABLE_COUNT; ++i) { if (table.name().compare(tables[i].name()) == 0) { CHECK(!table.service_client().base_uri().primary_uri().is_empty()); CHECK(table.service_client().credentials().is_shared_key()); CHECK(!table.name().empty()); CHECK(!table.uri().primary_uri().is_empty()); is_found[i] = true; } } } CHECK(!context.client_request_id().empty()); CHECK(context.start_time().is_initialized()); CHECK(context.end_time().is_initialized()); CHECK_EQUAL(1U, context.request_results().size()); CHECK(context.request_results()[0].is_response_available()); CHECK(context.request_results()[0].start_time().is_initialized()); CHECK(context.request_results()[0].end_time().is_initialized()); CHECK(context.request_results()[0].target_location() != azure::storage::storage_location::unspecified); CHECK_EQUAL(web::http::status_codes::OK, context.request_results()[0].http_status_code()); CHECK(!context.request_results()[0].service_request_id().empty()); CHECK(context.request_results()[0].request_date().is_initialized()); CHECK(context.request_results()[0].content_md5().empty()); CHECK(context.request_results()[0].etag().empty()); CHECK(context.request_results()[0].extended_error().code().empty()); CHECK(context.request_results()[0].extended_error().message().empty()); CHECK(context.request_results()[0].extended_error().details().empty()); for (int i = 0; i < TABLE_COUNT; ++i) { CHECK(is_found[i]); } for (int i = 0; i < TABLE_COUNT; ++i) { tables[i].delete_table(); } }