aboutsummaryrefslogtreecommitdiffstats
path: root/kubernetes/so/requirements.yaml
blob: c289225a5dfc222ec83d4f87302468c1e2bc4103 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Copyright © 2017 Amdocs, Bell Canada
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
dependencies:
  - name: common
    version: ~3.0.0
    # local reference to common chart, as it is
    # a part of this chart's package and will not
    # be published independently to a repo (at this point)
    repository: '@local'
Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*-
 * ============LICENSE_START=======================================================
 * org.onap.dcaegen2.collectors.ves
 * ================================================================================
 * Copyright (C) 2018 - 2021 Nokia. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

package org.onap.dcae.restapi;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.onap.dcae.ApplicationSettings;
import org.onap.dcae.common.configuration.AuthMethodType;
import org.slf4j.Logger;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.Silent.class)
public class ApiAuthInterceptionTest {
  private static final int HTTP_PORT = 8080;
  private static final int OUTSIDE_PORT = 30235;
  private static final String HEALTHCHECK_URL = "/healthcheck";

  @Mock
  private Logger log;

  @Mock
  private ApplicationSettings settings;

  @Mock
  private HttpServletResponse response;

  @Mock
  private Object obj;

  @Mock
  private PrintWriter writer;

  @InjectMocks
  private ApiAuthInterceptor sut;


  @Test
  public void shouldSucceedWhenAuthorizationIsDisabled() throws IOException {
    // given
    final HttpServletRequest request = createEmptyRequest();

    when(settings.authMethod()).thenReturn(AuthMethodType.NO_AUTH.value());

    // when
    final boolean isAuthorized = sut.preHandle(request, response, obj);

    // then
    assertTrue(isAuthorized);
  }

  @Test
  public void shouldSucceedForHealthcheckOnHealthcheckPortWhenRequestFromInsideCluster() throws IOException {
    // given
    final HttpServletRequest request = createRequestWithPorts(HTTP_PORT, HTTP_PORT, HEALTHCHECK_URL);

    when(settings.authMethod()).thenReturn(AuthMethodType.CERT_BASIC_AUTH.value());
    when(settings.httpPort()).thenReturn(HTTP_PORT);
    // when
    final boolean isAuthorized = sut.preHandle(request, response, obj);

    // then
    assertTrue(isAuthorized);
  }

  @Test
  public void shouldFailForHealthcheckOnHealthcheckPortWhenRequestFromOutsideCluster() throws IOException {
    // given
    final HttpServletRequest request = createRequestWithPorts(HTTP_PORT, OUTSIDE_PORT, HEALTHCHECK_URL);

    when(settings.authMethod()).thenReturn(AuthMethodType.CERT_BASIC_AUTH.value());
    when(settings.httpPort()).thenReturn(HTTP_PORT);
    when(response.getWriter()).thenReturn(writer);

    // when
    final boolean isAuthorized = sut.preHandle(request, response, obj);

    // then
    assertFalse(isAuthorized);
    verify(response).setStatus(HttpStatus.BAD_REQUEST.value());
  }

  @Test
  public void shouldFailDueToNotPermittedOperationOnHealthcheckPort() throws IOException {
    // given
    final HttpServletRequest request = createRequestWithPorts(HTTP_PORT, HTTP_PORT, "/");

    when(settings.authMethod()).thenReturn(AuthMethodType.CERT_BASIC_AUTH.value());
    when(settings.httpPort()).thenReturn(HTTP_PORT);
    when(response.getWriter()).thenReturn(writer);

    // when
    final boolean isAuthorized = sut.preHandle(request, response, obj);

    // then
    assertFalse(isAuthorized);
    verify(response).setStatus(HttpStatus.BAD_REQUEST.value());
  }

  private HttpServletRequest createEmptyRequest() {
    return MockMvcRequestBuilders
            .post("/")
            .buildRequest(null);
  }

  private HttpServletRequest createRequestWithPorts(int localPort, int serverPort, String urlTemplate) {
    MockHttpServletRequest healthcheckRequest = MockMvcRequestBuilders
            .get(urlTemplate)
            .buildRequest(null);
    healthcheckRequest.setLocalPort(localPort);
    healthcheckRequest.setServerPort(serverPort);
    return healthcheckRequest;
  }
}