-
Notifications
You must be signed in to change notification settings - Fork 629
Expand file tree
/
Copy pathRequestBuilderSpec.scala
More file actions
116 lines (90 loc) · 4.02 KB
/
RequestBuilderSpec.scala
File metadata and controls
116 lines (90 loc) · 4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
* Copyright (C) since 2016 Lightbend Inc. <https://akka.io>
*/
package docs.scaladsl
import akka.http.scaladsl.model.ContentTypes
import akka.http.scaladsl.model.headers.{ByteRange, RawHeader}
import akka.stream.alpakka.azure.storage.{AzureNameKeyCredential, StorageSettings}
import akka.stream.alpakka.azure.storage.headers.ServerSideEncryption
import akka.stream.alpakka.azure.storage.requests.{CreateFile, GetBlob, PutBlockBlob}
import akka.stream.alpakka.testkit.scaladsl.LogCapturing
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers
class RequestBuilderSpec extends AnyFlatSpec with Matchers with LogCapturing {
it should "create request builder with default values" in {
//#simple-request-builder
val requestBuilder = GetBlob()
//#simple-request-builder
requestBuilder.versionId shouldBe empty
requestBuilder.range shouldBe empty
requestBuilder.leaseId shouldBe empty
requestBuilder.sse shouldBe empty
requestBuilder.additionalHeaders shouldBe empty
}
it should "create request builder with values" in {
//#populate-request-builder
val requestBuilder = GetBlob().withLeaseId("my-lease-id").withRange(ByteRange(0, 25))
//#populate-request-builder
requestBuilder.leaseId shouldBe Some("my-lease-id")
requestBuilder.range shouldBe Some(ByteRange(0, 25))
requestBuilder.sse shouldBe empty
}
it should "create request builder with initial values" in {
//#request-builder-with-initial-values
val requestBuilder = CreateFile(256L, ContentTypes.`text/plain(UTF-8)`)
//#request-builder-with-initial-values
requestBuilder.leaseId shouldBe empty
requestBuilder.maxFileSize shouldBe 256L
requestBuilder.contentType shouldBe ContentTypes.`text/plain(UTF-8)`
}
it should "populate request builder with ServerSideEncryption" in {
//#request-builder-with-sse
val requestBuilder = PutBlockBlob(256L, ContentTypes.`text/plain(UTF-8)`)
.withServerSideEncryption(ServerSideEncryption.customerKey("SGVsbG9Xb3JsZA=="))
//#request-builder-with-sse
requestBuilder.sse shouldBe Some(ServerSideEncryption.customerKey("SGVsbG9Xb3JsZA=="))
}
it should "populate request builder with additional headers" in {
//#request-builder-with-additional-headers
val requestBuilder = GetBlob().addHeader("If-Match", "foobar")
//#request-builder-with-additional-headers
requestBuilder.additionalHeaders shouldBe Seq(RawHeader("If-Match", "foobar"))
}
it should "create settings with default Azure credential" in {
//#bearer-token-default
import com.azure.identity.DefaultAzureCredentialBuilder
val credential = new DefaultAzureCredentialBuilder().build()
val settings = StorageSettings(
apiVersion = "2024-11-04",
authorizationType = "anon",
endPointUrl = None,
azureNameKeyCredential = AzureNameKeyCredential("myaccount", Array.empty[Byte]),
sasToken = None,
retrySettings = akka.stream.alpakka.azure.storage.RetrySettings.Default,
algorithm = "HmacSHA256"
).withTokenCredential(credential)
//#bearer-token-default
settings.authorizationType shouldBe "BearerToken"
settings.tokenCredential shouldBe defined
}
it should "create settings with managed identity credential" in {
//#bearer-token-managed-identity
import com.azure.identity.ManagedIdentityCredentialBuilder
// User Assigned Managed Identity
val credential = new ManagedIdentityCredentialBuilder()
.clientId("<managed-identity-client-id>")
.build()
val settings = StorageSettings(
apiVersion = "2024-11-04",
authorizationType = "anon",
endPointUrl = None,
azureNameKeyCredential = AzureNameKeyCredential("myaccount", Array.empty[Byte]),
sasToken = None,
retrySettings = akka.stream.alpakka.azure.storage.RetrySettings.Default,
algorithm = "HmacSHA256"
).withTokenCredential(credential)
//#bearer-token-managed-identity
settings.authorizationType shouldBe "BearerToken"
settings.tokenCredential shouldBe defined
}
}