Code Duplication    Length = 21-22 lines in 4 locations

tests/features/bootstrap/ServiceProviderContext.php 4 locations

@@ 155-176 (lines=22) @@
152
    /**
153
     * @When /^([^\']*) starts an SFO authentication$/
154
     */
155
    public function iStartAnSFOAuthentication($nameId)
156
    {
157
        $authnRequest = new AuthnRequest();
158
        // In order to later assert if the response succeeded or failed, set our own dummy ACS location
159
        $authnRequest->setAssertionConsumerServiceURL(SamlEntityRepository::SP_ACS_LOCATION);
160
        $authnRequest->setIssuer($this->currentSfoSp['entityId']);
161
        $authnRequest->setDestination(self::SFO_ENDPOINT_URL);
162
        $authnRequest->setProtocolBinding(Constants::BINDING_HTTP_REDIRECT);
163
        $authnRequest->setNameId($this->buildNameId($nameId));
164
        // Sign with random key, does not mather for now.
165
        // todo: use from services_test.yml
166
        $authnRequest->setSignatureKey(
167
            $this->loadPrivateKey(new PrivateKey('/var/www/ci/certificates/sp.pem', 'default'))
168
        );
169
        $authnRequest->setRequestedAuthnContext(
170
            ['AuthnContextClassRef' => ['http://stepup.example.com/assurance/sfo-level2']]
171
        );
172
        $request = Saml2AuthnRequest::createNew($authnRequest);
173
        $query = $request->buildRequestQuery();
174
175
        $this->getSession()->visit($request->getDestination().'?'.$query);
176
    }
177
178
    /**
179
     * @When /^([^\']*) starts an SFO authentication requiring ([^\']*)$/
@@ 181-202 (lines=22) @@
178
    /**
179
     * @When /^([^\']*) starts an SFO authentication requiring ([^\']*)$/
180
     */
181
    public function iStartAnSFOAuthenticationWithLoaRequirement($nameId, $loa)
182
    {
183
        $authnRequest = new AuthnRequest();
184
        // In order to later assert if the response succeeded or failed, set our own dummy ACS location
185
        $authnRequest->setAssertionConsumerServiceURL(SamlEntityRepository::SP_ACS_LOCATION);
186
        $authnRequest->setIssuer($this->currentSfoSp['entityId']);
187
        $authnRequest->setDestination(self::SFO_ENDPOINT_URL);
188
        $authnRequest->setProtocolBinding(Constants::BINDING_HTTP_REDIRECT);
189
        $authnRequest->setNameId($this->buildNameId($nameId));
190
        // Sign with random key, does not mather for now.
191
        // todo: use from services_test.yml
192
        $authnRequest->setSignatureKey(
193
            $this->loadPrivateKey(new PrivateKey('/var/www/ci/certificates/sp.pem', 'default'))
194
        );
195
        $authnRequest->setRequestedAuthnContext(
196
            ['AuthnContextClassRef' => [$loa]]
197
        );
198
        $request = Saml2AuthnRequest::createNew($authnRequest);
199
        $query = $request->buildRequestQuery();
200
201
        $this->getSession()->visit($request->getDestination().'?'.$query);
202
    }
203
204
    /**
205
     * @When /^([^\']*) starts an authentication$/
@@ 207-227 (lines=21) @@
204
    /**
205
     * @When /^([^\']*) starts an authentication$/
206
     */
207
    public function iStartAnAuthentication($nameId)
208
    {
209
        $authnRequest = new AuthnRequest();
210
        // In order to later assert if the response succeeded or failed, set our own dummy ACS location
211
        $authnRequest->setAssertionConsumerServiceURL(SamlEntityRepository::SP_ACS_LOCATION);
212
        $authnRequest->setIssuer($this->currentSp['entityId']);
213
        $authnRequest->setDestination(self::SSO_ENDPOINT_URL);
214
        $authnRequest->setProtocolBinding(Constants::BINDING_HTTP_REDIRECT);
215
        $authnRequest->setNameId($this->buildNameId($nameId));
216
        // Sign with random key, does not mather for now.
217
        // todo: use from services_test.yml
218
        $authnRequest->setSignatureKey(
219
            $this->loadPrivateKey(new PrivateKey('/var/www/ci/certificates/sp.pem', 'default'))
220
        );
221
        $authnRequest->setRequestedAuthnContext(
222
            ['AuthnContextClassRef' => ['http://stepup.example.com/assurance/level2']]
223
        );
224
        $request = Saml2AuthnRequest::createNew($authnRequest);
225
        $query = $request->buildRequestQuery();
226
        $this->getSession()->visit($request->getDestination().'?'.$query);
227
    }
228
229
    /**
230
     * @When /^([^\']*) starts an authentication requiring ([^\']*)$/
@@ 232-252 (lines=21) @@
229
    /**
230
     * @When /^([^\']*) starts an authentication requiring ([^\']*)$/
231
     */
232
    public function iStartAnSsoAuthenticationWithLoaRequirement($nameId, $loa)
233
    {
234
        $authnRequest = new AuthnRequest();
235
        // In order to later assert if the response succeeded or failed, set our own dummy ACS location
236
        $authnRequest->setAssertionConsumerServiceURL(SamlEntityRepository::SP_ACS_LOCATION);
237
        $authnRequest->setIssuer($this->currentSp['entityId']);
238
        $authnRequest->setDestination(self::SSO_ENDPOINT_URL);
239
        $authnRequest->setProtocolBinding(Constants::BINDING_HTTP_REDIRECT);
240
        $authnRequest->setNameId($this->buildNameId($nameId));
241
        // Sign with random key, does not mather for now.
242
        // todo: use from services_test.yml
243
        $authnRequest->setSignatureKey(
244
            $this->loadPrivateKey(new PrivateKey('/var/www/ci/certificates/sp.pem', 'default'))
245
        );
246
        $authnRequest->setRequestedAuthnContext(
247
            ['AuthnContextClassRef' => [$loa]]
248
        );
249
        $request = Saml2AuthnRequest::createNew($authnRequest);
250
        $query = $request->buildRequestQuery();
251
        $this->getSession()->visit($request->getDestination().'?'.$query);
252
    }
253
254
    /**
255
     * @When /^I authenticate at the IdP as ([^\']*)$/