mod.rs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // Copyright 2019-2021 Tauri Programme within The Commons Conservancy
  2. // SPDX-License-Identifier: Apache-2.0
  3. // SPDX-License-Identifier: MIT
  4. #![allow(unused_variables)]
  5. mod mock_runtime;
  6. pub use mock_runtime::*;
  7. #[cfg(shell_scope)]
  8. use std::collections::HashMap;
  9. use std::{borrow::Cow, sync::Arc};
  10. #[cfg(shell_scope)]
  11. use crate::ShellScopeConfig;
  12. use crate::{Manager, Pattern, WindowBuilder};
  13. use tauri_utils::{
  14. assets::{AssetKey, Assets, CspHash},
  15. config::{CliConfig, Config, PatternKind, TauriConfig, WindowUrl},
  16. };
  17. pub struct NoopAsset {
  18. csp_hashes: Vec<CspHash<'static>>,
  19. }
  20. impl Assets for NoopAsset {
  21. fn get(&self, key: &AssetKey) -> Option<Cow<'_, [u8]>> {
  22. None
  23. }
  24. fn csp_hashes(&self, html_path: &AssetKey) -> Box<dyn Iterator<Item = CspHash<'_>> + '_> {
  25. Box::new(self.csp_hashes.iter().copied())
  26. }
  27. }
  28. pub fn noop_assets() -> NoopAsset {
  29. NoopAsset {
  30. csp_hashes: Default::default(),
  31. }
  32. }
  33. pub fn mock_context<A: Assets>(assets: A) -> crate::Context<A> {
  34. crate::Context {
  35. config: Config {
  36. schema: None,
  37. package: Default::default(),
  38. tauri: TauriConfig {
  39. pattern: PatternKind::Brownfield,
  40. windows: Vec::new(),
  41. cli: Some(CliConfig {
  42. description: None,
  43. long_description: None,
  44. before_help: None,
  45. after_help: None,
  46. args: None,
  47. subcommands: None,
  48. }),
  49. bundle: Default::default(),
  50. allowlist: Default::default(),
  51. security: Default::default(),
  52. updater: Default::default(),
  53. system_tray: None,
  54. macos_private_api: false,
  55. ios: Default::default(),
  56. },
  57. build: Default::default(),
  58. plugins: Default::default(),
  59. },
  60. assets: Arc::new(assets),
  61. default_window_icon: None,
  62. app_icon: None,
  63. system_tray_icon: None,
  64. package_info: crate::PackageInfo {
  65. name: "test".into(),
  66. version: "0.1.0".parse().unwrap(),
  67. authors: "Tauri",
  68. description: "Tauri test",
  69. },
  70. _info_plist: (),
  71. pattern: Pattern::Brownfield(std::marker::PhantomData),
  72. #[cfg(shell_scope)]
  73. shell_scope: ShellScopeConfig {
  74. open: None,
  75. scopes: HashMap::new(),
  76. },
  77. }
  78. }
  79. pub fn mock_app() -> crate::App<MockRuntime> {
  80. let app = crate::Builder::<MockRuntime>::new()
  81. .build(mock_context(noop_assets()))
  82. .unwrap();
  83. WindowBuilder::new(&app, "main", WindowUrl::App("index.html".into()))
  84. .build()
  85. .unwrap();
  86. app
  87. }
  88. pub(crate) fn mock_invoke_context() -> crate::endpoints::InvokeContext<MockRuntime> {
  89. let app = mock_app();
  90. crate::endpoints::InvokeContext {
  91. window: app.get_window("main").unwrap(),
  92. config: app.config(),
  93. package_info: app.package_info().clone(),
  94. }
  95. }