Skip to content

Commit

Permalink
Merge branch 'main' of github.com:rpcpool/digital-asset-rpc-infrastru…
Browse files Browse the repository at this point in the history
…cture into triton-build
  • Loading branch information
kespinola committed Jun 12, 2024
2 parents 554b06b + 7c94c94 commit b23804b
Show file tree
Hide file tree
Showing 36 changed files with 1,492 additions and 152 deletions.
504 changes: 389 additions & 115 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ metrics = "0.20.1"
migration = { path = "migration" }
mime_guess = "2.0.4"
mpl-bubblegum = "1.2.0"
mpl-core = { version = "0.5.0", features = ["serde"] }
mpl-core = { version = "0.7.0", features = ["serde"] }
mpl-token-metadata = "4.1.1"
nft_ingester = { path = "nft_ingester" }
num-derive = "0.3.3"
Expand Down
2 changes: 2 additions & 0 deletions digital_asset_types/src/dao/extensions/asset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ impl Default for asset::Model {
mpl_core_collection_current_size: None,
mpl_core_collection_num_minted: None,
mpl_core_plugins_json_version: None,
mpl_core_external_plugins: None,
mpl_core_unknown_external_plugins: None,
}
}
}
6 changes: 6 additions & 0 deletions digital_asset_types/src/dao/generated/asset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ pub struct Model {
pub mpl_core_collection_num_minted: Option<i32>,
pub mpl_core_collection_current_size: Option<i32>,
pub mpl_core_plugins_json_version: Option<i32>,
pub mpl_core_external_plugins: Option<Json>,
pub mpl_core_unknown_external_plugins: Option<Json>,
}

#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)]
Expand Down Expand Up @@ -96,6 +98,8 @@ pub enum Column {
MplCoreCollectionNumMinted,
MplCoreCollectionCurrentSize,
MplCorePluginsJsonVersion,
MplCoreExternalPlugins,
MplCoreUnknownExternalPlugins,
}

#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)]
Expand Down Expand Up @@ -154,6 +158,8 @@ impl ColumnTrait for Column {
Self::MplCoreCollectionNumMinted => ColumnType::Integer.def().null(),
Self::MplCoreCollectionCurrentSize => ColumnType::Integer.def().null(),
Self::MplCorePluginsJsonVersion => ColumnType::Integer.def().null(),
Self::MplCoreExternalPlugins => ColumnType::JsonBinary.def().null(),
Self::MplCoreUnknownExternalPlugins => ColumnType::JsonBinary.def().null(),
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions digital_asset_types/src/dapi/common/asset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,8 @@ pub fn asset_to_rpc(asset: FullAsset, options: &Options) -> Result<RpcAsset, DbE
plugins: asset.mpl_core_plugins,
unknown_plugins: asset.mpl_core_unknown_plugins,
mpl_core_info,
external_plugins: asset.mpl_core_external_plugins,
unknown_external_plugins: asset.mpl_core_unknown_external_plugins,
})
}

Expand Down
4 changes: 4 additions & 0 deletions digital_asset_types/src/rpc/asset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -394,4 +394,8 @@ pub struct Asset {
pub unknown_plugins: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mpl_core_info: Option<MplCoreInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub external_plugins: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unknown_external_plugins: Option<Value>,
}
2 changes: 2 additions & 0 deletions digital_asset_types/tests/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,8 @@ pub fn create_asset(
mpl_core_collection_current_size: None,
mpl_core_collection_num_minted: None,
mpl_core_plugins_json_version: None,
mpl_core_external_plugins: None,
mpl_core_unknown_external_plugins: None,
},
)
}
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
213 changes: 213 additions & 0 deletions integration_tests/tests/integration_tests/mpl_core_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -244,3 +244,216 @@ async fn test_mpl_core_get_asset_with_pubkey_in_rule_set() {
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_asset_with_two_oracle_external_plugins() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts(["4aarnaiMVtGEp5nToRqBEUGtqY2F1gW2V8bBQe1rN5V9"]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"id": "4aarnaiMVtGEp5nToRqBEUGtqY2F1gW2V8bBQe1rN5V9"
}
"#;

let request: api::GetAsset = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_asset_with_oracle_external_plugin_on_collection() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts(["Hvdg2FjMEndC4jxF2MJgKCaj5omLLZ19LNfD4p9oXkpE"]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"id": "Hvdg2FjMEndC4jxF2MJgKCaj5omLLZ19LNfD4p9oXkpE"
}
"#;

let request: api::GetAsset = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_asset_with_oracle_multiple_lifecycle_events() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts(["3puHPHUHFXxhS7qPQa5YYTngzPbetoWbu7y2UxxB6xrF"]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"id": "3puHPHUHFXxhS7qPQa5YYTngzPbetoWbu7y2UxxB6xrF"
}
"#;

let request: api::GetAsset = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_asset_with_oracle_custom_offset_and_base_address_config() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts(["9v2H5sDBXKmYkGHebfaWwdgBWuMTBVWQom3QeEcV8oJj"]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"id": "9v2H5sDBXKmYkGHebfaWwdgBWuMTBVWQom3QeEcV8oJj"
}
"#;

let request: api::GetAsset = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_asset_with_oracle_no_offset() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts(["2TZpUiBiyMdwLFTKRshVMHK8anQK2W8XXbfUfyxR8yvc"]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"id": "2TZpUiBiyMdwLFTKRshVMHK8anQK2W8XXbfUfyxR8yvc"
}
"#;

let request: api::GetAsset = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_assets_by_group_with_oracle_and_custom_pda_all_seeds() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts([
"Do7rVGmVNa9wjsKNyjoa5phqriLER6HCqUQm5zyoTX3f",
"CWJDcrzxSDE7FeNRzMK1aSia7qoaUPrrGQ81E7vkQpq4",
]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"groupKey": "collection",
"groupValue": "Do7rVGmVNa9wjsKNyjoa5phqriLER6HCqUQm5zyoTX3f",
"sortBy": {
"sortBy": "updated",
"sortDirection": "asc"
},
"page": 1,
"limit": 50
}
"#;

let request: api::GetAssetsByGroup = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_assets_by_group(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}

#[tokio::test]
#[serial]
#[named]
async fn test_mpl_core_get_asset_with_multiple_internal_and_external_plugins() {
let name = trim_test_name(function_name!());
let setup = TestSetup::new_with_options(
name.clone(),
TestSetupOptions {
network: Some(Network::Devnet),
},
)
.await;

let seeds: Vec<SeedEvent> = seed_accounts(["Aw7KSaeRECbjLW7BYTUtMwGkaiAGhxrQxdLnpLYRnmbB"]);

apply_migrations_and_delete_data(setup.db.clone()).await;
index_seed_events(&setup, seeds.iter().collect_vec()).await;

let request = r#"
{
"id": "Aw7KSaeRECbjLW7BYTUtMwGkaiAGhxrQxdLnpLYRnmbB"
}
"#;

let request: api::GetAsset = serde_json::from_str(request).unwrap();
let response = setup.das_api.get_asset(request).await.unwrap();
insta::assert_json_snapshot!(name, response);
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,6 @@ expression: response
},
"mpl_core_info": {
"plugins_json_version": 1
}
},
"external_plugins": []
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,5 +69,6 @@ expression: response
},
"mpl_core_info": {
"plugins_json_version": 1
}
},
"external_plugins": []
}
Loading

0 comments on commit b23804b

Please sign in to comment.