Fix tests and use concrete versions of azure_core and azure_identity

This commit is contained in:
AsafMah 2022-06-26 09:39:46 +03:00
Родитель 9e45fff548
Коммит be8f78b097
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: AD0D1680EEE7A4FF
10 изменённых файлов: 20 добавлений и 13 удалений

2
.gitignore поставляемый
Просмотреть файл

@ -108,3 +108,5 @@ Cargo.lock
# End of https://www.toptal.com/developers/gitignore/api/intellij+iml,rust # End of https://www.toptal.com/developers/gitignore/api/intellij+iml,rust
.env .env
.vscode .vscode
.idea

Просмотреть файл

@ -13,11 +13,11 @@ categories = ["api-bindings"]
[dependencies] [dependencies]
arrow = { version = "15.0.0", optional = true } arrow = { version = "15.0.0", optional = true }
azure_core = { git = "https://github.com/Azure/azure-sdk-for-rust", rev = "8586a66b20fba463c39156f0390e583ec305ab2d", features = [ azure_core = { version = "0.3.0", features = [
"enable_reqwest", "enable_reqwest",
"enable_reqwest_gzip", "enable_reqwest_gzip",
] } ] }
azure_identity = { git = "https://github.com/Azure/azure-sdk-for-rust", rev = "8586a66b20fba463c39156f0390e583ec305ab2d" } azure_identity = "0.4.0"
async-trait = "0.1.56" async-trait = "0.1.56"
async-convert = "1.0.0" async-convert = "1.0.0"
bytes = "1.1.0" bytes = "1.1.0"

Просмотреть файл

@ -45,7 +45,9 @@ impl Policy for AuthorizationPolicy {
let token = self.credential.get_token(&self.resource).await?; let token = self.credential.get_token(&self.resource).await?;
let auth_header_value = format!("Bearer {}", token.token.secret()); let auth_header_value = format!("Bearer {}", token.token.secret());
request.insert_header(AUTHORIZATION, HeaderValue::from(auth_header_value)); request
.headers_mut()
.insert(AUTHORIZATION, HeaderValue::from(auth_header_value));
next[0].send(ctx, request, &next[1..]).await next[0].send(ctx, request, &next[1..]).await
} }

Просмотреть файл

@ -12,9 +12,10 @@ use arrow::record_batch::RecordBatch;
use async_convert::TryFrom; use async_convert::TryFrom;
use azure_core::error::Error as CoreError; use azure_core::error::Error as CoreError;
use azure_core::prelude::*; use azure_core::prelude::*;
use azure_core::{collect_pinned_stream, Request, Response as HttpResponse, Url}; use azure_core::{collect_pinned_stream, Request, Response as HttpResponse};
use futures::future::BoxFuture; use futures::future::BoxFuture;
use futures::TryFutureExt; use futures::TryFutureExt;
use http::Uri;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::collections::HashMap; use std::collections::HashMap;
@ -238,7 +239,7 @@ impl TryFrom<HttpResponse> for KustoResponseDataSetV1 {
// } // }
// } // }
pub fn prepare_request(uri: Url, http_method: http::Method) -> Request { pub fn prepare_request(uri: Uri, http_method: http::Method) -> Request {
const API_VERSION: &str = "2019-02-13"; const API_VERSION: &str = "2019-02-13";
let mut request = Request::new(uri, http_method); let mut request = Request::new(uri, http_method);

Просмотреть файл

@ -1,9 +1,10 @@
#![cfg(feature = "mock_transport_framework")] #![cfg(feature = "mock_transport_framework")]
use azure_core::auth::{AccessToken, TokenCredential, TokenResponse}; use azure_core::auth::{TokenCredential, TokenResponse};
use azure_core::error::Error as CoreError; use azure_core::error::Error as CoreError;
use azure_kusto_data::prelude::*; use azure_kusto_data::prelude::*;
use chrono::Utc; use chrono::Utc;
use dotenv::dotenv; use dotenv::dotenv;
use oauth2::AccessToken;
use std::path::Path; use std::path::Path;
use std::sync::Arc; use std::sync::Arc;
@ -19,6 +20,7 @@ impl TokenCredential for DummyCredential {
} }
} }
#[must_use]
pub fn create_kusto_client(transaction_name: &str) -> (KustoClient, String) { pub fn create_kusto_client(transaction_name: &str) -> (KustoClient, String) {
let transaction_path = Path::new(&workspace_root().expect("Failed to get workspace root")) let transaction_path = Path::new(&workspace_root().expect("Failed to get workspace root"))
.join(format!("test/transactions/{}", transaction_name)); .join(format!("test/transactions/{}", transaction_name));
@ -57,7 +59,7 @@ pub fn create_kusto_client(transaction_name: &str) -> (KustoClient, String) {
let credential = Arc::new(DummyCredential {}); let credential = Arc::new(DummyCredential {});
let database = String::from_utf8_lossy( let database = String::from_utf8_lossy(
&std::fs::read(&db_path) &std::fs::read(&db_path)
.expect(&format!("Could not read db path {}", db_path.display())), .unwrap_or_else(|_| panic!("Could not read db path {}", db_path.display())),
) )
.to_string(); .to_string();
(String::new(), credential, database) (String::new(), credential, database)

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1 +1 @@
{"status":200,"headers":{"content-type":"application/json","date":"Wed, 08 Jun 2022 05:46:30 GMT","server":"Kestrel","strict-transport-security":"max-age=2592000; includeSubDomains","transfer-encoding":"chunked","vary":"Accept-Encoding","x-ms-activity-id":"29b1ada2-8503-4fa7-becc-50bb336aa168","x-ms-client-request-id":"unspecified;b3626d7f-93bf-4271-9737-b158838c2309"},"body":"eyJUYWJsZXMiOlt7IlRhYmxlTmFtZSI6IlRhYmxlXzAiLCJDb2x1bW5zIjpbeyJDb2x1bW5OYW1lIjoiRXh0ZW50SWQiLCJEYXRhVHlwZSI6Ikd1aWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6Ik9yaWdpbmFsU2l6ZSIsIkRhdGFUeXBlIjoiRG91YmxlIiwiQ29sdW1uVHlwZSI6InJlYWwifSx7IkNvbHVtbk5hbWUiOiJFeHRlbnRTaXplIiwiRGF0YVR5cGUiOiJEb3VibGUiLCJDb2x1bW5UeXBlIjoicmVhbCJ9LHsiQ29sdW1uTmFtZSI6IkNvbXByZXNzZWRTaXplIiwiRGF0YVR5cGUiOiJEb3VibGUiLCJDb2x1bW5UeXBlIjoicmVhbCJ9LHsiQ29sdW1uTmFtZSI6IkluZGV4U2l6ZSIsIkRhdGFUeXBlIjoiRG91YmxlIiwiQ29sdW1uVHlwZSI6InJlYWwifSx7IkNvbHVtbk5hbWUiOiJSb3dDb3VudCIsIkRhdGFUeXBlIjoiSW50NjQiLCJDb2x1bW5UeXBlIjoibG9uZyJ9XSwiUm93cyI6W1siZDFiODY5NzktNDg4YS00MDQyLTg1MmQtNDM2NWU4NDBmYWI2IiwyMS4wLDgwMC4wLDI0Ni4wLDU1NC4wLDFdXX1dfQ=="} {"status":200,"headers":{"content-type":"application/json","date":"Sun, 26 Jun 2022 06:34:11 GMT","server":"Kestrel","strict-transport-security":"max-age=2592000; includeSubDomains","transfer-encoding":"chunked","vary":"Accept-Encoding","x-ms-activity-id":"bd151318-120e-4ae4-984c-82c7e1b685ad","x-ms-client-request-id":"unspecified;e46efcbf-a8fe-49f0-90c6-9aa3155a8ad3"},"body":"eyJUYWJsZXMiOlt7IlRhYmxlTmFtZSI6IlRhYmxlXzAiLCJDb2x1bW5zIjpbeyJDb2x1bW5OYW1lIjoiRXh0ZW50SWQiLCJEYXRhVHlwZSI6Ikd1aWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6Ik9yaWdpbmFsU2l6ZSIsIkRhdGFUeXBlIjoiRG91YmxlIiwiQ29sdW1uVHlwZSI6InJlYWwifSx7IkNvbHVtbk5hbWUiOiJFeHRlbnRTaXplIiwiRGF0YVR5cGUiOiJEb3VibGUiLCJDb2x1bW5UeXBlIjoicmVhbCJ9LHsiQ29sdW1uTmFtZSI6IkNvbXByZXNzZWRTaXplIiwiRGF0YVR5cGUiOiJEb3VibGUiLCJDb2x1bW5UeXBlIjoicmVhbCJ9LHsiQ29sdW1uTmFtZSI6IkluZGV4U2l6ZSIsIkRhdGFUeXBlIjoiRG91YmxlIiwiQ29sdW1uVHlwZSI6InJlYWwifSx7IkNvbHVtbk5hbWUiOiJSb3dDb3VudCIsIkRhdGFUeXBlIjoiSW50NjQiLCJDb2x1bW5UeXBlIjoibG9uZyJ9XSwiUm93cyI6W1siN2EwZmNlZDUtNTU0My00YjQyLWE3OGUtMmVjODFkZGM4MDA1IiwyMS4wLDgwMC4wLDI0Ni4wLDU1NC4wLDFdXX1dfQ=="}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -1 +1 @@
{"status":200,"headers":{"content-type":"application/json","date":"Wed, 08 Jun 2022 05:46:34 GMT","server":"Kestrel","strict-transport-security":"max-age=2592000; includeSubDomains","transfer-encoding":"chunked","vary":"Accept-Encoding","x-ms-activity-id":"dda8f0b6-958b-4613-b039-216fec5f6bd2","x-ms-client-request-id":"unspecified;4229e206-7b2b-47f1-ae75-b57e5c537ccf"},"body":"W3siRnJhbWVUeXBlIjoiRGF0YVNldEhlYWRlciIsIklzUHJvZ3Jlc3NpdmUiOmZhbHNlLCJWZXJzaW9uIjoidjIuMCJ9LHsiRnJhbWVUeXBlIjoiRGF0YVRhYmxlIiwiVGFibGVJZCI6MCwiVGFibGVLaW5kIjoiUXVlcnlQcm9wZXJ0aWVzIiwiVGFibGVOYW1lIjoiQEV4dGVuZGVkUHJvcGVydGllcyIsIkNvbHVtbnMiOlt7IkNvbHVtbk5hbWUiOiJUYWJsZUlkIiwiQ29sdW1uVHlwZSI6ImludCJ9LHsiQ29sdW1uTmFtZSI6IktleSIsIkNvbHVtblR5cGUiOiJzdHJpbmcifSx7IkNvbHVtbk5hbWUiOiJWYWx1ZSIsIkNvbHVtblR5cGUiOiJkeW5hbWljIn1dLCJSb3dzIjpbWzEsIlZpc3VhbGl6YXRpb24iLCJ7XCJWaXN1YWxpemF0aW9uXCI6bnVsbCxcIlRpdGxlXCI6bnVsbCxcIlhDb2x1bW5cIjpudWxsLFwiU2VyaWVzXCI6bnVsbCxcIllDb2x1bW5zXCI6bnVsbCxcIkFub21hbHlDb2x1bW5zXCI6bnVsbCxcIlhUaXRsZVwiOm51bGwsXCJZVGl0bGVcIjpudWxsLFwiWEF4aXNcIjpudWxsLFwiWUF4aXNcIjpudWxsLFwiTGVnZW5kXCI6bnVsbCxcIllTcGxpdFwiOm51bGwsXCJBY2N1bXVsYXRlXCI6ZmFsc2UsXCJJc1F1ZXJ5U29ydGVkXCI6ZmFsc2UsXCJLaW5kXCI6bnVsbCxcIlltaW5cIjpcIk5hTlwiLFwiWW1heFwiOlwiTmFOXCIsXCJYbWluXCI6bnVsbCxcIlhtYXhcIjpudWxsfSJdXX0seyJGcmFtZVR5cGUiOiJEYXRhVGFibGUiLCJUYWJsZUlkIjoxLCJUYWJsZUtpbmQiOiJQcmltYXJ5UmVzdWx0IiwiVGFibGVOYW1lIjoiUHJpbWFyeVJlc3VsdCIsIkNvbHVtbnMiOlt7IkNvbHVtbk5hbWUiOiJzdHIiLCJDb2x1bW5UeXBlIjoic3RyaW5nIn1dLCJSb3dzIjpbWyJIZWxsbywgV29ybGQhIl1dfSx7IkZyYW1lVHlwZSI6IkRhdGFUYWJsZSIsIlRhYmxlSWQiOjIsIlRhYmxlS2luZCI6IlF1ZXJ5Q29tcGxldGlvbkluZm9ybWF0aW9uIiwiVGFibGVOYW1lIjoiUXVlcnlDb21wbGV0aW9uSW5mb3JtYXRpb24iLCJDb2x1bW5zIjpbeyJDb2x1bW5OYW1lIjoiVGltZXN0YW1wIiwiQ29sdW1uVHlwZSI6ImRhdGV0aW1lIn0seyJDb2x1bW5OYW1lIjoiQ2xpZW50UmVxdWVzdElkIiwiQ29sdW1uVHlwZSI6InN0cmluZyJ9LHsiQ29sdW1uTmFtZSI6IkFjdGl2aXR5SWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6IlN1YkFjdGl2aXR5SWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6IlBhcmVudEFjdGl2aXR5SWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6IkxldmVsIiwiQ29sdW1uVHlwZSI6ImludCJ9LHsiQ29sdW1uTmFtZSI6IkxldmVsTmFtZSIsIkNvbHVtblR5cGUiOiJzdHJpbmcifSx7IkNvbHVtbk5hbWUiOiJTdGF0dXNDb2RlIiwiQ29sdW1uVHlwZSI6ImludCJ9LHsiQ29sdW1uTmFtZSI6IlN0YXR1c0NvZGVOYW1lIiwiQ29sdW1uVHlwZSI6InN0cmluZyJ9LHsiQ29sdW1uTmFtZSI6IkV2ZW50VHlwZSIsIkNvbHVtblR5cGUiOiJpbnQifSx7IkNvbHVtbk5hbWUiOiJFdmVudFR5cGVOYW1lIiwiQ29sdW1uVHlwZSI6InN0cmluZyJ9LHsiQ29sdW1uTmFtZSI6IlBheWxvYWQiLCJDb2x1bW5UeXBlIjoic3RyaW5nIn1dLCJSb3dzIjpbWyIyMDIyLTA2LTA4VDA1OjQ2OjM0LjE0MzA2MThaIiwidW5zcGVjaWZpZWQ7NDIyOWUyMDYtN2IyYi00N2YxLWFlNzUtYjU3ZTVjNTM3Y2NmIiwiZGRhOGYwYjYtOTU4Yi00NjEzLWIwMzktMjE2ZmVjNWY2YmQyIiwiNTU1OTBmMTUtMWFmYS00ZmI5LWE5MWUtZGQzYjdhZTJjZDU1IiwiNDU3NzNiMjctZjZmOC00OTI3LTk3NWQtM2RkYjE3OGRhY2JmIiw0LCJJbmZvIiwwLCJTX09LICgwKSIsNCwiUXVlcnlJbmZvIiwie1wiQ291bnRcIjoxLFwiVGV4dFwiOlwiUXVlcnkgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwifSJdLFsiMjAyMi0wNi0wOFQwNTo0NjozNC4xNDI1NjA5WiIsInVuc3BlY2lmaWVkOzQyMjllMjA2LTdiMmItNDdmMS1hZTc1LWI1N2U1YzUzN2NjZiIsImRkYThmMGI2LTk1OGItNDYxMy1iMDM5LTIxNmZlYzVmNmJkMiIsIjU1NTkwZjE1LTFhZmEtNGZiOS1hOTFlLWRkM2I3YWUyY2Q1NSIsIjQ1NzczYjI3LWY2ZjgtNDkyNy05NzVkLTNkZGIxNzhkYWNiZiIsNiwiU3RhdHMiLDAsIlNfT0sgKDApIiwwLCJRdWVyeVJlc291cmNlQ29uc3VtcHRpb24iLCJ7XCJFeGVjdXRpb25UaW1lXCI6MC4wNDY4NzIzLFwicmVzb3VyY2VfdXNhZ2VcIjp7XCJjYWNoZVwiOntcIm1lbW9yeVwiOntcImhpdHNcIjowLFwibWlzc2VzXCI6MCxcInRvdGFsXCI6MH0sXCJkaXNrXCI6e1wiaGl0c1wiOjAsXCJtaXNzZXNcIjowLFwidG90YWxcIjowfSxcInNoYXJkc1wiOntcImhvdFwiOntcImhpdGJ5dGVzXCI6ODcxLFwibWlzc2J5dGVzXCI6MCxcInJldHJpZXZlYnl0ZXNcIjowfSxcImNvbGRcIjp7XCJoaXRieXRlc1wiOjAsXCJtaXNzYnl0ZXNcIjowLFwicmV0cmlldmVieXRlc1wiOjB9LFwiYnlwYXNzYnl0ZXNcIjowfX0sXCJjcHVcIjp7XCJ1c2VyXCI6XCIwMDowMDowMFwiLFwia2VybmVsXCI6XCIwMDowMDowMFwiLFwidG90YWwgY3B1XCI6XCIwMDowMDowMFwifSxcIm1lbW9yeVwiOntcInBlYWtfcGVyX25vZGVcIjoxNTczMjAwfSxcIm5ldHdvcmtcIjp7XCJpbnRlcl9jbHVzdGVyX3RvdGFsX2J5dGVzXCI6MjE5NSxcImNyb3NzX2NsdXN0ZXJfdG90YWxfYnl0ZXNcIjowfX0sXCJpbnB1dF9kYXRhc2V0X3N0YXRpc3RpY3NcIjp7XCJleHRlbnRzXCI6e1widG90YWxcIjoxLFwic2Nhbm5lZFwiOjEsXCJzY2FubmVkX21pbl9kYXRldGltZVwiOlwiMjAyMi0wNi0wOFQwNTo0NjozMC4zODcyNTM3WlwiLFwic2Nhbm5lZF9tYXhfZGF0ZXRpbWVcIjpcIjIwMjItMDYtMDhUMDU6NDY6MzAuMzg3MjUzN1pcIn0sXCJyb3dzXCI6e1widG90YWxcIjoxLFwic2Nhbm5lZFwiOjF9LFwicm93c3RvcmVzXCI6e1wic2Nhbm5lZF9yb3dzXCI6MCxcInNjYW5uZWRfdmFsdWVzX3NpemVcIjowfSxcInNoYXJkc1wiOntcInF1ZXJpZXNfZ2VuZXJpY1wiOjEsXCJxdWVyaWVzX3NwZWNpYWxpemVkXCI6MH19LFwiZGF0YXNldF9zdGF0aXN0aWNzXCI6W3tcInRhYmxlX3Jvd19jb3VudFwiOjEsXCJ0YWJsZV9zaXplXCI6MTN9XX0iXV19LHsiRnJhbWVUeXBlIjoiRGF0YVNldENvbXBsZXRpb24iLCJIYXNFcnJvcnMiOmZhbHNlLCJDYW5jZWxsZWQiOmZhbHNlfV0="} {"status":200,"headers":{"content-type":"application/json","date":"Sun, 26 Jun 2022 06:34:13 GMT","server":"Kestrel","strict-transport-security":"max-age=2592000; includeSubDomains","transfer-encoding":"chunked","vary":"Accept-Encoding","x-ms-activity-id":"67843ee9-781d-4792-be62-c5de86505f04","x-ms-client-request-id":"unspecified;c05f8e23-3435-48e0-a724-72f590214ba0"},"body":"W3siRnJhbWVUeXBlIjoiRGF0YVNldEhlYWRlciIsIklzUHJvZ3Jlc3NpdmUiOmZhbHNlLCJWZXJzaW9uIjoidjIuMCJ9LHsiRnJhbWVUeXBlIjoiRGF0YVRhYmxlIiwiVGFibGVJZCI6MCwiVGFibGVLaW5kIjoiUXVlcnlQcm9wZXJ0aWVzIiwiVGFibGVOYW1lIjoiQEV4dGVuZGVkUHJvcGVydGllcyIsIkNvbHVtbnMiOlt7IkNvbHVtbk5hbWUiOiJUYWJsZUlkIiwiQ29sdW1uVHlwZSI6ImludCJ9LHsiQ29sdW1uTmFtZSI6IktleSIsIkNvbHVtblR5cGUiOiJzdHJpbmcifSx7IkNvbHVtbk5hbWUiOiJWYWx1ZSIsIkNvbHVtblR5cGUiOiJkeW5hbWljIn1dLCJSb3dzIjpbWzEsIlZpc3VhbGl6YXRpb24iLCJ7XCJWaXN1YWxpemF0aW9uXCI6bnVsbCxcIlRpdGxlXCI6bnVsbCxcIlhDb2x1bW5cIjpudWxsLFwiU2VyaWVzXCI6bnVsbCxcIllDb2x1bW5zXCI6bnVsbCxcIkFub21hbHlDb2x1bW5zXCI6bnVsbCxcIlhUaXRsZVwiOm51bGwsXCJZVGl0bGVcIjpudWxsLFwiWEF4aXNcIjpudWxsLFwiWUF4aXNcIjpudWxsLFwiTGVnZW5kXCI6bnVsbCxcIllTcGxpdFwiOm51bGwsXCJBY2N1bXVsYXRlXCI6ZmFsc2UsXCJJc1F1ZXJ5U29ydGVkXCI6ZmFsc2UsXCJLaW5kXCI6bnVsbCxcIlltaW5cIjpcIk5hTlwiLFwiWW1heFwiOlwiTmFOXCIsXCJYbWluXCI6bnVsbCxcIlhtYXhcIjpudWxsfSJdXX0seyJGcmFtZVR5cGUiOiJEYXRhVGFibGUiLCJUYWJsZUlkIjoxLCJUYWJsZUtpbmQiOiJQcmltYXJ5UmVzdWx0IiwiVGFibGVOYW1lIjoiUHJpbWFyeVJlc3VsdCIsIkNvbHVtbnMiOlt7IkNvbHVtbk5hbWUiOiJzdHIiLCJDb2x1bW5UeXBlIjoic3RyaW5nIn1dLCJSb3dzIjpbWyJIZWxsbywgV29ybGQhIl1dfSx7IkZyYW1lVHlwZSI6IkRhdGFUYWJsZSIsIlRhYmxlSWQiOjIsIlRhYmxlS2luZCI6IlF1ZXJ5Q29tcGxldGlvbkluZm9ybWF0aW9uIiwiVGFibGVOYW1lIjoiUXVlcnlDb21wbGV0aW9uSW5mb3JtYXRpb24iLCJDb2x1bW5zIjpbeyJDb2x1bW5OYW1lIjoiVGltZXN0YW1wIiwiQ29sdW1uVHlwZSI6ImRhdGV0aW1lIn0seyJDb2x1bW5OYW1lIjoiQ2xpZW50UmVxdWVzdElkIiwiQ29sdW1uVHlwZSI6InN0cmluZyJ9LHsiQ29sdW1uTmFtZSI6IkFjdGl2aXR5SWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6IlN1YkFjdGl2aXR5SWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6IlBhcmVudEFjdGl2aXR5SWQiLCJDb2x1bW5UeXBlIjoiZ3VpZCJ9LHsiQ29sdW1uTmFtZSI6IkxldmVsIiwiQ29sdW1uVHlwZSI6ImludCJ9LHsiQ29sdW1uTmFtZSI6IkxldmVsTmFtZSIsIkNvbHVtblR5cGUiOiJzdHJpbmcifSx7IkNvbHVtbk5hbWUiOiJTdGF0dXNDb2RlIiwiQ29sdW1uVHlwZSI6ImludCJ9LHsiQ29sdW1uTmFtZSI6IlN0YXR1c0NvZGVOYW1lIiwiQ29sdW1uVHlwZSI6InN0cmluZyJ9LHsiQ29sdW1uTmFtZSI6IkV2ZW50VHlwZSIsIkNvbHVtblR5cGUiOiJpbnQifSx7IkNvbHVtbk5hbWUiOiJFdmVudFR5cGVOYW1lIiwiQ29sdW1uVHlwZSI6InN0cmluZyJ9LHsiQ29sdW1uTmFtZSI6IlBheWxvYWQiLCJDb2x1bW5UeXBlIjoic3RyaW5nIn1dLCJSb3dzIjpbWyIyMDIyLTA2LTI2VDA2OjM0OjEzLjg1NDY1MDFaIiwidW5zcGVjaWZpZWQ7YzA1ZjhlMjMtMzQzNS00OGUwLWE3MjQtNzJmNTkwMjE0YmEwIiwiNjc4NDNlZTktNzgxZC00NzkyLWJlNjItYzVkZTg2NTA1ZjA0IiwiMWQzYmMzZTQtMTFmYy00ODk0LTkxYTMtZDk1ZGNjMWMwMGIxIiwiMzg0ZWYyZDMtZWI5Mi00ZjhmLTlmMDQtZDcwYWVjYjJhZjdhIiw0LCJJbmZvIiwwLCJTX09LICgwKSIsNCwiUXVlcnlJbmZvIiwie1wiQ291bnRcIjoxLFwiVGV4dFwiOlwiUXVlcnkgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwifSJdLFsiMjAyMi0wNi0yNlQwNjozNDoxMy44NTM4MDc4WiIsInVuc3BlY2lmaWVkO2MwNWY4ZTIzLTM0MzUtNDhlMC1hNzI0LTcyZjU5MDIxNGJhMCIsIjY3ODQzZWU5LTc4MWQtNDc5Mi1iZTYyLWM1ZGU4NjUwNWYwNCIsIjFkM2JjM2U0LTExZmMtNDg5NC05MWEzLWQ5NWRjYzFjMDBiMSIsIjM4NGVmMmQzLWViOTItNGY4Zi05ZjA0LWQ3MGFlY2IyYWY3YSIsNiwiU3RhdHMiLDAsIlNfT0sgKDApIiwwLCJRdWVyeVJlc291cmNlQ29uc3VtcHRpb24iLCJ7XCJFeGVjdXRpb25UaW1lXCI6MC4wNjI0MjU2LFwicmVzb3VyY2VfdXNhZ2VcIjp7XCJjYWNoZVwiOntcIm1lbW9yeVwiOntcImhpdHNcIjowLFwibWlzc2VzXCI6MCxcInRvdGFsXCI6MH0sXCJkaXNrXCI6e1wiaGl0c1wiOjAsXCJtaXNzZXNcIjowLFwidG90YWxcIjowfSxcInNoYXJkc1wiOntcImhvdFwiOntcImhpdGJ5dGVzXCI6ODcwLFwibWlzc2J5dGVzXCI6MCxcInJldHJpZXZlYnl0ZXNcIjowfSxcImNvbGRcIjp7XCJoaXRieXRlc1wiOjAsXCJtaXNzYnl0ZXNcIjowLFwicmV0cmlldmVieXRlc1wiOjB9LFwiYnlwYXNzYnl0ZXNcIjowfX0sXCJjcHVcIjp7XCJ1c2VyXCI6XCIwMDowMDowMFwiLFwia2VybmVsXCI6XCIwMDowMDowMFwiLFwidG90YWwgY3B1XCI6XCIwMDowMDowMFwifSxcIm1lbW9yeVwiOntcInBlYWtfcGVyX25vZGVcIjoxNTczMjAwfSxcIm5ldHdvcmtcIjp7XCJpbnRlcl9jbHVzdGVyX3RvdGFsX2J5dGVzXCI6MjE5NSxcImNyb3NzX2NsdXN0ZXJfdG90YWxfYnl0ZXNcIjowfX0sXCJpbnB1dF9kYXRhc2V0X3N0YXRpc3RpY3NcIjp7XCJleHRlbnRzXCI6e1widG90YWxcIjoxLFwic2Nhbm5lZFwiOjEsXCJzY2FubmVkX21pbl9kYXRldGltZVwiOlwiMjAyMi0wNi0yNlQwNjozNDoxMS43OTExNTU2WlwiLFwic2Nhbm5lZF9tYXhfZGF0ZXRpbWVcIjpcIjIwMjItMDYtMjZUMDY6MzQ6MTEuNzkxMTU1NlpcIn0sXCJyb3dzXCI6e1widG90YWxcIjoxLFwic2Nhbm5lZFwiOjF9LFwicm93c3RvcmVzXCI6e1wic2Nhbm5lZF9yb3dzXCI6MCxcInNjYW5uZWRfdmFsdWVzX3NpemVcIjowfSxcInNoYXJkc1wiOntcInF1ZXJpZXNfZ2VuZXJpY1wiOjEsXCJxdWVyaWVzX3NwZWNpYWxpemVkXCI6MH19LFwiZGF0YXNldF9zdGF0aXN0aWNzXCI6W3tcInRhYmxlX3Jvd19jb3VudFwiOjEsXCJ0YWJsZV9zaXplXCI6MTN9XX0iXV19LHsiRnJhbWVUeXBlIjoiRGF0YVNldENvbXBsZXRpb24iLCJIYXNFcnJvcnMiOmZhbHNlLCJDYW5jZWxsZWQiOmZhbHNlfV0="}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны