Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
vorgang-manager
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
OZG-Cloud
app
vorgang-manager
Commits
d606c7c3
Commit
d606c7c3
authored
6 months ago
by
OZGCloud
Browse files
Options
Downloads
Patches
Plain Diff
OZG-6944 Add ITCase for antragsraum attachments
parent
f9b35f0c
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
vorgang-manager-server/pom.xml
+2
-2
2 additions, 2 deletions
vorgang-manager-server/pom.xml
vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
+191
-4
191 additions, 4 deletions
.../de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
with
193 additions
and
6 deletions
vorgang-manager-server/pom.xml
+
2
−
2
View file @
d606c7c3
...
...
@@ -32,7 +32,7 @@
<parent>
<groupId>
de.ozgcloud.common
</groupId>
<artifactId>
ozgcloud-common-parent
</artifactId>
<version>
4.3.
1
</version>
<version>
4.3.
2
</version>
<relativePath
/>
</parent>
...
...
@@ -60,7 +60,7 @@
<notification-manager.version>
2.12.0-SNAPSHOT
</notification-manager.version>
<collaboration-manager.version>
0.4.0-OZG-6944-resolve-bean-conflict-SNAPSHOT
</collaboration-manager.version>
<zip.version>
2.11.
1
</zip.version>
<zip.version>
2.11.
5
</zip.version>
<jsoup.version>
1.15.3
</jsoup.version>
<mongock.version>
5.3.4
</mongock.version>
<testcontainer.version>
1.17.3
</testcontainer.version>
...
...
This diff is collapsed.
Click to expand it.
vorgang-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumITCase.java
+
191
−
4
View file @
d606c7c3
...
...
@@ -21,9 +21,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.mock.mockito.MockBean
;
import
org.springframework.data.mongodb.core.MongoOperations
;
import
org.springframework.data.mongodb.gridfs.GridFsTemplate
;
import
org.springframework.security.saml2.core.Saml2Error
;
import
org.springframework.security.test.context.support.WithMockUser
;
import
org.springframework.test.annotation.DirtiesContext
;
import
com.google.protobuf.ByteString
;
import
de.ozgcloud.apilib.common.errorhandling.NotFoundException
;
import
de.ozgcloud.common.test.DataITCase
;
import
de.ozgcloud.common.test.TestUtils
;
...
...
@@ -33,7 +37,10 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory;
import
de.ozgcloud.nachrichten.postfach.osi.ReplyOption
;
import
de.ozgcloud.vorgang.VorgangManagerServerApplication
;
import
de.ozgcloud.vorgang.attached_item.VorgangAttachedItem
;
import
de.ozgcloud.vorgang.attached_item.VorgangAttachedItem.VorgangAttachedItemBuilder
;
import
de.ozgcloud.vorgang.attached_item.VorgangAttachedItemTestFactory
;
import
de.ozgcloud.vorgang.files.GridFsTestFactory
;
import
de.ozgcloud.vorgang.files.OzgFileTestFactory
;
import
de.ozgcloud.vorgang.servicekonto.PostfachAddressTestFactory
;
import
de.ozgcloud.vorgang.servicekonto.ServiceKonto
;
import
de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory
;
...
...
@@ -64,6 +71,8 @@ class AntragraumITCase {
private
AntragraumGrpcService
grpcService
;
@Autowired
private
MongoOperations
mongoOperations
;
@Autowired
private
GridFsTemplate
gridFsTemplate
;
@MockBean
private
Saml2Decrypter
decrypter
;
...
...
@@ -74,6 +83,8 @@ class AntragraumITCase {
void
prepareDatabase
()
{
mongoOperations
.
dropCollection
(
Vorgang
.
COLLECTION_NAME
);
mongoOperations
.
dropCollection
(
VorgangAttachedItem
.
COLLECTION_NAME
);
mongoOperations
.
dropCollection
(
"fs.files"
);
mongoOperations
.
dropCollection
(
"fs.chunks"
);
}
@DisplayName
(
"Find rueckfragen"
)
...
...
@@ -188,7 +199,7 @@ class AntragraumITCase {
}
}
@DisplayName
(
"Ge
r
rueckfrage"
)
@DisplayName
(
"Ge
t
rueckfrage"
)
@Nested
class
TestGetRueckfrage
{
...
...
@@ -208,7 +219,7 @@ class AntragraumITCase {
VorgangAttachedItem
.
COLLECTION_NAME
);
when
(
verifier
.
verify
(
any
())).
thenReturn
(
Collections
.
emptyList
());
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
"STORK-QAA-Level-1"
);
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
ServiceKontoTestFactory
.
TRUST_LEVEL
);
}
@Test
...
...
@@ -240,6 +251,167 @@ class AntragraumITCase {
}
}
@Nested
class
TestGetAttachmentMetadata
{
private
static
final
String
SAML_TOKEN
=
TestUtils
.
loadTextFile
(
"SamlResponse.xml"
);
@Mock
private
StreamObserver
<
GrpcGetAttachmentMetadataResponse
>
responseObserver
;
@Captor
private
ArgumentCaptor
<
GrpcGetAttachmentMetadataResponse
>
captor
;
private
Vorgang
savedVorgang
;
private
VorgangAttachedItem
vorgangAttachedItem
;
private
VorgangAttachedItem
vorgangAttachedItemOtherAttachment
;
private
String
fileId
;
@BeforeEach
void
prepareDatabase
()
{
fileId
=
gridFsTemplate
.
store
(
GridFsTestFactory
.
createUpload
()).
toString
();
savedVorgang
=
mongoOperations
.
save
(
createVorgang
(
TrustLevel
.
LEVEL_3
),
Vorgang
.
COLLECTION_NAME
);
vorgangAttachedItem
=
mongoOperations
.
save
(
createPostfachNachrichtVorgangAttachedItem
(
savedVorgang
.
getId
(),
fileId
),
VorgangAttachedItem
.
COLLECTION_NAME
);
vorgangAttachedItemOtherAttachment
=
mongoOperations
.
save
(
createPostfachNachrichtVorgangAttachedItem
(
savedVorgang
.
getId
()),
VorgangAttachedItem
.
COLLECTION_NAME
);
}
@Test
void
shouldSendMetadata
()
{
when
(
verifier
.
verify
(
any
())).
thenReturn
(
Collections
.
emptyList
());
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
TrustLevel
.
LEVEL_3
.
getValue
());
when
(
decrypter
.
decryptPostfachId
(
any
())).
thenReturn
(
PostfachAddressTestFactory
.
STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE
);
var
request
=
GrpcGetAttachmentMetadataRequest
.
newBuilder
()
.
setSamlToken
(
SAML_TOKEN
)
.
setNachrichtId
(
vorgangAttachedItem
.
getId
())
.
setFileId
(
fileId
)
.
build
();
var
expectedMetadata
=
GrpcFileMetadata
.
newBuilder
()
.
setContentType
(
OzgFileTestFactory
.
CONTENT_TYPE
)
.
setName
(
OzgFileTestFactory
.
NAME
)
.
setSize
(
OzgFileTestFactory
.
CONTENT
.
length
)
.
build
();
grpcService
.
getAttachmentMetadata
(
request
,
responseObserver
);
verify
(
responseObserver
,
timeout
(
30000
)).
onNext
(
captor
.
capture
());
assertThat
(
captor
.
getValue
().
getFileMetadata
()).
isEqualTo
(
expectedMetadata
);
}
@Test
void
shouldFailDueToInvalidToken
()
{
when
(
verifier
.
verify
(
any
())).
thenReturn
(
List
.
of
(
new
Saml2Error
(
"invalid_signature"
,
"Signature missing"
)));
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
TrustLevel
.
LEVEL_3
.
getValue
());
when
(
decrypter
.
decryptPostfachId
(
any
())).
thenReturn
(
PostfachAddressTestFactory
.
STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE
);
var
request
=
GrpcGetAttachmentMetadataRequest
.
newBuilder
()
.
setSamlToken
(
SAML_TOKEN
)
.
setNachrichtId
(
vorgangAttachedItem
.
getId
())
.
setFileId
(
fileId
)
.
build
();
assertThatThrownBy
(()
->
grpcService
.
getAttachmentMetadata
(
request
,
responseObserver
))
.
isInstanceOf
(
SecurityException
.
class
)
.
hasMessageContaining
(
"Signature missing"
)
.
hasMessageContaining
(
"invalid_signature"
);
}
@Test
void
shouldFailDueIncorrectPostfachId
()
{
when
(
verifier
.
verify
(
any
())).
thenReturn
(
Collections
.
emptyList
());
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
TrustLevel
.
LEVEL_3
.
getValue
());
when
(
decrypter
.
decryptPostfachId
(
any
())).
thenReturn
(
"wrong ID"
);
var
request
=
GrpcGetAttachmentMetadataRequest
.
newBuilder
()
.
setSamlToken
(
SAML_TOKEN
)
.
setNachrichtId
(
vorgangAttachedItem
.
getId
())
.
setFileId
(
fileId
)
.
build
();
assertThatThrownBy
(()
->
grpcService
.
getAttachmentMetadata
(
request
,
responseObserver
))
.
isInstanceOf
(
NotFoundException
.
class
)
.
hasMessageContaining
(
"PostfachNachricht"
)
.
hasMessageContaining
(
vorgangAttachedItem
.
getId
());
}
@Test
void
shouldFailDueToTrustLevelTooLow
()
{
when
(
verifier
.
verify
(
any
())).
thenReturn
(
Collections
.
emptyList
());
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
TrustLevel
.
LEVEL_2
.
getValue
());
when
(
decrypter
.
decryptPostfachId
(
any
())).
thenReturn
(
PostfachAddressTestFactory
.
STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE
);
var
request
=
GrpcGetAttachmentMetadataRequest
.
newBuilder
()
.
setSamlToken
(
SAML_TOKEN
)
.
setNachrichtId
(
vorgangAttachedItem
.
getId
())
.
setFileId
(
fileId
)
.
build
();
assertThatThrownBy
(()
->
grpcService
.
getAttachmentMetadata
(
request
,
responseObserver
))
.
isInstanceOf
(
NotFoundException
.
class
)
.
hasMessageContaining
(
"PostfachNachricht"
)
.
hasMessageContaining
(
vorgangAttachedItem
.
getId
());
}
@Test
void
shouldFailDueToFileIdNotInPostfachNachricht
()
{
when
(
verifier
.
verify
(
any
())).
thenReturn
(
Collections
.
emptyList
());
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
TrustLevel
.
LEVEL_3
.
getValue
());
when
(
decrypter
.
decryptPostfachId
(
any
())).
thenReturn
(
PostfachAddressTestFactory
.
STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE
);
var
request
=
GrpcGetAttachmentMetadataRequest
.
newBuilder
()
.
setSamlToken
(
SAML_TOKEN
)
.
setNachrichtId
(
vorgangAttachedItemOtherAttachment
.
getId
())
.
setFileId
(
fileId
)
.
build
();
assertThatThrownBy
(()
->
grpcService
.
getAttachmentMetadata
(
request
,
responseObserver
))
.
isInstanceOf
(
NotFoundException
.
class
)
.
hasMessageContaining
(
"PostfachNachricht"
)
.
hasMessageContaining
(
vorgangAttachedItemOtherAttachment
.
getId
());
}
}
@Nested
class
TestGetAttachmentContent
{
private
static
final
String
SAML_TOKEN
=
TestUtils
.
loadTextFile
(
"SamlResponse.xml"
);
@Mock
private
StreamObserver
<
GrpcGetAttachmentContentResponse
>
responseObserver
;
@Captor
private
ArgumentCaptor
<
GrpcGetAttachmentContentResponse
>
captor
;
private
Vorgang
savedVorgang
;
private
VorgangAttachedItem
vorgangAttachedItem
;
private
String
fileId
;
@BeforeEach
void
prepareDatabase
()
{
fileId
=
gridFsTemplate
.
store
(
GridFsTestFactory
.
createUpload
()).
toString
();
savedVorgang
=
mongoOperations
.
save
(
createVorgang
(
TrustLevel
.
LEVEL_3
),
Vorgang
.
COLLECTION_NAME
);
vorgangAttachedItem
=
mongoOperations
.
save
(
createPostfachNachrichtVorgangAttachedItem
(
savedVorgang
.
getId
(),
fileId
),
VorgangAttachedItem
.
COLLECTION_NAME
);
}
@Test
void
shouldSendContent
()
{
when
(
verifier
.
verify
(
any
())).
thenReturn
(
Collections
.
emptyList
());
when
(
decrypter
.
decryptTrustLevel
(
any
())).
thenReturn
(
TrustLevel
.
LEVEL_3
.
getValue
());
when
(
decrypter
.
decryptPostfachId
(
any
())).
thenReturn
(
PostfachAddressTestFactory
.
STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE
);
var
request
=
GrpcGetAttachmentContentRequest
.
newBuilder
()
.
setSamlToken
(
SAML_TOKEN
)
.
setNachrichtId
(
vorgangAttachedItem
.
getId
())
.
setFileId
(
fileId
)
.
build
();
var
expectedContent
=
ByteString
.
copyFrom
(
OzgFileTestFactory
.
CONTENT
);
grpcService
.
getAttachmentContent
(
request
,
responseObserver
);
verify
(
responseObserver
,
timeout
(
30000
)).
onNext
(
captor
.
capture
());
assertThat
(
captor
.
getValue
().
getFileContent
()).
isEqualTo
(
expectedContent
);
}
}
private
Vorgang
createVorgang
(
TrustLevel
trustLevel
)
{
return
VorgangTestFactory
.
createBuilder
()
.
id
(
null
)
...
...
@@ -252,15 +424,30 @@ class AntragraumITCase {
return
ServiceKontoTestFactory
.
createBuilder
().
type
(
"BAYERN_ID"
).
trustLevel
(
trustLevel
.
getValue
()).
build
();
}
private
VorgangAttachedItem
createPostfachNachrichtVorgangAttachedItem
(
String
vorgangId
,
String
fileId
)
{
return
createPostfachNachrichtVorgangAttachedItemBuilder
(
vorgangId
)
.
item
(
createBayernIdPostfachNachrichtItem
(
vorgangId
,
fileId
))
.
build
();
}
private
VorgangAttachedItem
createPostfachNachrichtVorgangAttachedItem
(
String
vorgangId
)
{
return
createPostfachNachrichtVorgangAttachedItemBuilder
(
vorgangId
).
build
();
}
private
VorgangAttachedItemBuilder
createPostfachNachrichtVorgangAttachedItemBuilder
(
String
vorgangId
)
{
return
VorgangAttachedItemTestFactory
.
createBuilder
()
.
id
(
null
)
.
version
(
0
)
.
vorgangId
(
vorgangId
)
.
itemName
(
"PostfachMail"
)
.
client
(
"OzgCloud_NachrichtenManager"
)
.
item
(
createBayernIdPostfachNachrichtItem
(
vorgangId
))
.
build
();
.
item
(
createBayernIdPostfachNachrichtItem
(
vorgangId
));
}
private
Map
<
String
,
Object
>
createBayernIdPostfachNachrichtItem
(
String
vorgangId
,
String
fileId
)
{
var
nachrichtItem
=
createBayernIdPostfachNachrichtItem
(
vorgangId
);
nachrichtItem
.
put
(
"attachments"
,
List
.
of
(
fileId
));
return
nachrichtItem
;
}
private
Map
<
String
,
Object
>
createBayernIdPostfachNachrichtItem
(
String
vorgangId
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment